Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Re: 複数シートをひとつのシートにまとめる方法

1 view
Skip to first unread message

y sakuda

unread,
Aug 10, 2005, 12:37:19 PM8/10/05
to
"スットノーズ点鼻薬" <?????????@discussions.microsoft.com> wrote in message news:8E6E057A-2677-464C...@microsoft.com...
> エクセル2000を使用しています。エクセルの項目は一緒ですが、複数のシートに分かれている為、一つのシートにしたいと思います。なにか良い手段はないでしょうか?ちなみにマクロは、まったくわかりません。便利なマクロがあれば、教えてください。

まとめるとはどういう意味かはっきりさせてください。
同一フォーマットの毎月のデータを集計するということなら、いわゆる串刺し計算(集計)があります。
集計ではなく、一表化(どういう形か存じませんが)ということなら、そんな手はありませんし、
都合のいいマクロが既製品で転がっているとは思えません。

--
メイルアドレスが不正です
ニュースグループの購読にはOutlook Express などのニュースリーダーを
使用してください。

下記のサイトをご覧下さい
http://www.microsoft.com/japan/support/newsgroup/faq/q3.asp
http://www.microsoft.com/japan/support/newsgroup/grouplist.asp

y sakuda
sakudaya...@hotmail.com

VBA,VBSによるツールなどがあります
http://www16.plala.or.jp/ysakuda/ystop.htm
7月31日 ExcelVBA用プログレスバー組込みキットを追加しました

y sakuda

unread,
Aug 11, 2005, 6:44:55 AM8/11/05
to
"スットノーズ点鼻薬" <@discussions.microsoft.com> wrote in message news:53AB7F9B-D5BD-4336...@microsoft.com...
>  sakudaさん、ありがとうございます。同じ列項目のデータを、一つの表にしてから、集計(ここではピボットテーブルにする)したいと思っています。ファイルが一つですみますので。 一方で、数百人の同じデータをまとめるには、アクセスを使って、インポートするという手段もあるのですが、エクセルでもできればいいかなと思いまして。
>
まだ話が見えている自信はありませんが、最後はピボットでということは、各シートに同形式のデータが
1行1レコードの形式で入っており、それが単に複数シートに分かれているということでしょうか?
それをつなげて一つのシートに一本化すればよいような印象を受けました。

その程度だと、投稿できるような比較的単純なマクロでも何とかなるかなという気もします。
私の理解が正しいとしての話ですが、以下の点を明らかにしてみませんか?
1.ブックの中のシートすべてをまとめるのか?もし一部ということであれば、集計するシートは
  シート名などから識別する手段があるか?(シート名に何らかの特徴があるかという意味です)
2.各集計対象シートの見出し行の有無。見出しが何行でどこからデータが始まっているかと言う意味。
3.データは空行なしでつまっているか否か?
4.何シートくらい集計して、レコードの総量はどの程度か?
(Excelでは65536行がシートの行数の限度ですので、これを上回ると問題が複雑化します)
5.各シート毎にデータを補う必要はあるか? 例えば、各シートが月別とか、事業所別に作成されて
  おり、一本化する際それらのデータを補足する必要があるかどうかということです。
6.後先になりましたが、1行/1レコードと言う理解でよろしいか?

単純な場合は20行程度のマクロでできるかもしれませんので、ダメモトで情報を
出されてはいかがですか(^^)

T. Sugita

unread,
Aug 11, 2005, 11:45:52 AM8/11/05
to
In message news:8E6E057A-2677-464C...@microsoft.com
"スットノーズ点鼻薬" <?????????@discussions.microsoft.com> wrote ...
> エクセル2000を使用しています。エクセルの項目は一緒
> ですが、複数のシートに分かれている為、一つのシート
> にしたいと思います。

マクロと違ってごちゃごちゃしてしまいますが、全ての列の
データ数が共通と仮定して、以下の方法でも可能です。
A列を使って行数を求めていますが、空セルがある場合は
別の方法を考える必要があります。

# 以下、1行目は見出しとしています。

「データ数」シートを追加し、以下の式を入力
A1:境界
A2:=IF(ROW()<=2,0,A1+$C1)
A3:A2をコピー
B1:シート名
B2:Sheet1
B3:Sheet2
C1:データ数
C2:=COUNTA(INDIRECT($B2&"!A:A"))-1
C3:C2をコピー

データをまとめるシートへ、以下の式を入力
A1:=OFFSET(INDIRECT(データ数!$B$2&"!A1"),0,COLUMN(A1)-1)
A2:=IF(OFFSET(INDIRECT(VLOOKUP(ROW()-2,データ数!$A$1:$B$100,2,TRUE)&"!A1"),(ROW()-2)-VLOOKUP(ROW()-2,データ数!$A$1:$B$100,1,TRUE)+1,COLUMN(A1)-1)="","",OFFSET(INDIRECT(VLOOKUP(ROW()-2,データ数!$A$1:$B$100,2,TRUE)&"!A1"),(ROW()-2)-VLOOKUP(ROW()-2,データ数!$A$1:$B$100,1,TRUE)+1,COLUMN(A1)-1))
B1:A1をコピー
B2:A2をコピー

空のセルが無ければ、A2 の IF 文は必要ないです。

--
杉田
sugi...@bk.iij4u.or.jp

y sakuda

unread,
Aug 12, 2005, 7:59:25 AM8/12/05
to
"T. Sugita" <nws-...@bp.iij4u.or.jp> wrote in message news:u%23Kodwon...@TK2MSFTNGP09.phx.gbl...
これ、眺めていても分からなかったので、やってみてやっとわかりました。恐れ入りました。
#どうでもいいですけど、よく一晩に二つもこんなややこしいもの考えられますね。

杉田さんマクロも強いはずなんで、なぜシート式のフォローをされたのか分かりませんが
ほぼ同一条件でのマクロを提示しておきます。

条件は以下のとおりです
1.ブック内のすべてのシートを統合対象とする(空のシートなどは存在しない)
2.第1行目は必ず見出しになっている
3.空白行はあっても可です
4.すべてのデータを集めても65536行に収まる
5.A列からデータになっている

マクロの使い方
1.ALT+F11 でVBE(マクロエディタを呼び出す)
2.挿入⇒標準モジュール
3.2で表示される標準モジュールに↓のマクロを丸ごとコピー&ペースト

Sub SheetMerge()
Dim wSht As Worksheet, wMergeSht As Worksheet
Dim wLast, wOffset
wOffset = 0
Set wMergeSht = Worksheets.Add
wMergeSht.Name = "統合シート"
For Each wSht In Worksheets
If wSht.Name <> wMergeSht.Name Then
If wOffset = 0 Then
wSht.Rows(1).Copy
wMergeSht.Range("a1").PasteSpecial
wOffset = 2
End If
wLast = wSht.Range("a65536").End(xlUp).Row
wSht.Rows("2:" & wLast).Copy
wMergeSht.Rows(wOffset).PasteSpecial
wOffset = wOffset + wLast - 1
End If
Next
End Sub

4.VBEを終了させる
5.Excel画面にもどって ALT+F8
6.表示されたダイアローグでSheetMergeを選択して 実行
7.統合シートというシートが作成され一本化されたデータが残ります。

--

T. Sugita

unread,
Aug 13, 2005, 7:20:41 AM8/13/05
to
In message news:%23pgRJVz...@TK2MSFTNGP09.phx.gbl
"y sakuda" <sakudaya...@hotmail.com> wrote ...

> 杉田さんマクロも強いはずなんで、なぜシート式のフォローを
> されたのか分かりませんが
> ほぼ同一条件でのマクロを提示しておきます。

単純に、シート式で問題を解くのが好きなもので・・・(^^;
なので、どうにかなりそうなものは、多少複雑になっても
シート式でフォローを入れるようにしています。

--
杉田
sugi...@bk.iij4u.or.jp

koun...@mbh.nifty.com

unread,
Aug 14, 2005, 12:03:54 AM8/14/05
to
"T. Sugita" <nws-...@bp.iij4u.or.jp> wrote in message
news:%23RZfGm$nFHA...@TK2MSFTNGP15.phx.gbl...

> In message news:%23pgRJVz...@TK2MSFTNGP09.phx.gbl
> "y sakuda" <sakudaya...@hotmail.com> wrote ...
>
> 単純に、シート式で問題を解くのが好きなもので・・・(^^;
> なので、どうにかなりそうなものは、多少複雑になっても
> シート式でフォローを入れるようにしています。

どちらかと言うとマクロ寄りの方なんですが,確かにこちらの方が
適切なエクセルの使い方かもしれませんね。(個人的な思いですが。)

難点と言えば,LISPのような括弧のお化けになりやすく,普通の人
には理解し難い式になり,誤って式をいじくった時,元に戻せない
恐れがある。

マクロの場合,スパケッティみたいなものでもなんとか動くようにする
ことはできるけど,こちらの場合,そんな行き当たりばったりでは
通用しない。ある意味,よりプログラミング的センスが要求される
ようにも思います。まあ,私にはちょっと難しいってところですが,
たしかに,こちらの方がクールだ!・・・と思います。

--
******************************
keizi kounoike
******************************

y sakuda

unread,
Aug 14, 2005, 12:49:01 AM8/14/05
to
<koun...@mbh.nifty.com> wrote in message news:eJqCJWIo...@TK2MSFTNGP12.phx.gbl...

> "T. Sugita" <nws-...@bp.iij4u.or.jp> wrote in message
> news:%23RZfGm$nFHA...@TK2MSFTNGP15.phx.gbl...
> > In message news:%23pgRJVz...@TK2MSFTNGP09.phx.gbl
> > "y sakuda" <sakudaya...@hotmail.com> wrote ...
> >
>
> 難点と言えば,LISPのような括弧のお化けになりやすく,普通の人
> には理解し難い式になり,誤って式をいじくった時,元に戻せない
> 恐れがある。
>
オフトピぎみですが、ここだけ反応。
LISPご存知の人がいらっしゃるようで、ちょっとうれしい。
私は学生時代、LISPが見開き一ページで、しかもLISPにより言語仕様が書かれているのを見て、
あきれたり、感激したりした口です。

ただ、括弧のお化けと言うのは確かに似ているのですが、あちらは再帰定義ですので
頭の中のねじり方が少し違うかなと思います。
ニュースグループをご覧になっている方で実際にLISPを使ったことがある方が
どのくらいいるか分かりませんが、極めて少数であろうと想像してます(^^)

#個人的には、神業的なシート式を解読してみるのは好きな方ですが、
#自分のニーズの場合、ほとんどの場合、必要以上に複雑になりそうな気配がでると
#マクロで書いてしまうか、シート式の中で使用するFunctionをマクロにして簡略化
#します。(あまりややこしいものを作ると後で自分でも修正するとき大変!)

Aki

unread,
Aug 14, 2005, 11:27:18 AM8/14/05
to
> シート式でフォローを入れるようにしています。
この言葉は、Excelを良くご存知の方とお見受けします。
玄人の言葉ですね。格好良ささえ感じます。
VCでコンパイルされ、チューンされたExcelのNativeなワークシート関数は
最速の計算速度を提示してくれます。
同じ計算をVBAにさせると....
Excelは極力ワークシート関数を使用する方が快適に使用できます。
私もワークシート関数の範囲内で配列を駆使し正解を得られた方が達成感を感じます。

0 new messages