• ベストアンサー

excel 串刺しセルの値を列に並べる

excel2000を利用しています。 シートが10枚以上あるexcelブックがあるのですが、これらのシートのフォーマットは全て同じで、値がそ れぞれ独自に入っています。 一番左側のsheet1は無地です。 そして、左から2sheet目以降の全てのシートで、それぞれ 指定セル を sheet1のA列に縦にデータを保管したいです。 そして、同様にまた違う指定セルをB列、また違うセルをC列・・・・ といった具合で全シートの複数の項目をsheet1にリスト形式でまとめたいです。 どうかご教授をお願いいたします。

  • puyopa
  • お礼率87% (459/525)

質問者が選んだベストアンサー

  • ベストアンサー
  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.3

VBAの質問でしょうか? 各シートの指定セルが仮にA1、B1、C1だとしたら Sub test01()     Dim i As Long     For i = 2 To Sheets.Count         With Sheets(1)             .Cells(i - 1, "A").Value = Sheets(i).Range("A1")             .Cells(i - 1, "B").Value = Sheets(i).Range("B1")             .Cells(i - 1, "C").Value = Sheets(i).Range("C1")         End With     Next i End Sub で大丈夫だと思います。 該当のBOOKの標準モジュールに書いてくださいね。

puyopa
質問者

お礼

回答ありがとうございました。 とても複雑なコードを予想していましたが、意外にシンプルで驚きました。 おかげさまでやりたいことが出来そうです。ありがとうございました。

その他の回答 (4)

  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.5

>しかし、やはりシート名がsheet()で限定されるというのが、関数の限界でしょうか。  例えば、SheetA、SheetB、SheetC、SheetD、SheetE、SheetF、SheetG、SheetH、SheetIという名称のシートがあり、Sheet1のA2セルにはA列に表示するデータの項目名が入力さていて、Sheet1のA3以下に、SheetA~SheetIのA1セルの値を自動的に表示させるものとします。  まず、適当な空きシートにSheetA~SheetIの各シートのシート名の一覧表を作成します。  空きシートが無ければ、新たにシートを作成して下さい。  ここでは仮に、「補助シート」という名称のシートを作成するものとします。  そして、補助シートのA2以下にSheetA~SheetIの各シートのシート名を、空欄を空けずに並べて下さい。  次に、Sheet1のA3セルに、次の関数を入力して下さい。 =IF(ISERROR(INDIRECT(INDEX(補助シート!$A:$A,ROWS($2:3))&"!A1")),"",INDIRECT(INDEX(補助シート!$A:$A,ROWS($2:3))&"!A1"))  次に、Sheet1のA3セルをコピーして、Sheet1のA4以下に貼り付けて下さい。

puyopa
質問者

お礼

回答ありがとうございました。 恐れ入りました。 勉強になりました、ありがとうございます。

  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.4

>excel2000を利用しています。 では,ちょっとタイプの違うマクロで。 手順: 挿入メニューの名前の定義で  名前 シート一覧  参照範囲 =GET.WORKBOOK(1) と登録する >2sheet目以降の全てのシート シート1に =INDIRECT(INDEX(シート一覧,ROW(A2))&"!C5") のように記入し,下向けにシートの枚数だけコピーする #面倒でなければ =IF(ROW(A2)>COUNTA(シート一覧),"",INDIRECT(INDEX(シート一覧,ROW(A2))&"!C5")) などのように一手間入れても勿論構いません。 #シート名の配列を取得するので,シート名が「1,2,3」の順になってなくてもシートのある順で結果を得ます。 もっともふつーのマクロでシート名一覧だけを例えばA列セルに書き出させて,INDIRECT関数を使った方が簡単は簡単です。 A2以下に Sheet2 のように書き出してあれば ついでにB1以右に欲しいセル番地を「B2」とか「C5」のように列記しておけば B2: =INDIRECT($A2&"!"&B$1) を下に右にコピー といった具合に。 オマケ: sub macro1()  dim i  for i = 2 to worksheets.count   worksheets(1).cells(i, "A") = worksheets(i).name  next i end sub

puyopa
質問者

お礼

ありがとうございました。 すごいですね。そんな機能があったなんて知りませんでした。 絶句してしまいます。excelの世界がいかに深くて、自分がとても未熟だと思い知らされます。 ありがとうございました。

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.2

こんばんは! 各Sheet名はSheet2・Sheet3・・・のようになっているとします。 仮に各SheetのA1セルをA列に表示する場合は Sheet1のA1セルに =INDIRECT("Sheet"&ROW(A2)&"!A1") としてオートフィルで下へコピーではどうでしょうか?m(_ _)m

puyopa
質問者

お礼

ありがとうございました。 偶然にもNO1の方と似ている式ですがROWの部分で若干異なりますが、 セルを単一で指定しているので分かりやすいです。 勉強になりました。ありがとうございました。

  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.1

例えば、Sheet2以下のシートのD2セルを一覧表示するなら以下のような数式を入力して下方向にオートフィルしてください。 =INDIRECT("Sheet"&ROW(2:2)&"!D2")

puyopa
質問者

お礼

ありがとうございます。 関数でできるなんて思いもよらなかったので驚きです。 しかし、やはりシート名がsheet()で限定されるというのが、関数の限界でしょうか。 勉強になりました。ありがとうございました。

関連するQ&A

  • エクセルの「数式が入った結合セル」を範囲指定して、値だけ貼り付ける方法。

    よろしくお願いします。 F列とG列のセルを結合させたセルが立てに10個あります。 10個のセルには、同じ行の「C列のセル/D列のセル」の数式が入っています。 収入割合が%表示で判るようになっています。 別のブックシートにこの10個のセルの値を転記したいと思い、範囲指定して「貼付」または「形式を選択して貼付(値)」しても、「この操作には同じサイズの結合セルが必要です。」となってしまいます。 貼付先は、別のシートのN列とO列を結合させて、貼付元と同じ幅のにした範囲指定した 10個のセルです。 なぜ、値の貼付が出来ないのでしょうか? (win2000 Excel2000)

  • 2列のセルの値を1列のセルに表示するには?

    Excel2003を使用しています。 2列の1列、左側セルに整数が3~4桁入っています。 2列の1列、右側セルに小数点第2位の値が入っています。 この状態、2つのセルを合わせた1つの値をある1つのセルに小数点を付けて表示させたいのですが どうすればできるのでしょうか? お解りの方いらっしゃいましたらよろしくお願いします。 <参考画面添付します>

  • エクセルVBA全シートのC:C列のセルに色を

    Windows 6 64bit, Excel 2007 を使っています。 現在開いているブックのすべてのシートのC列(C:C)のセルに薄い緑をつけるマクロを考えていますが、どうしたらよいかわかりません。 開いているブックのすべてのシートをループさせて、書くシートのC:Cのセルを薄い緑にする、というのが流れだとは思うのですが・・・ 具体的なVBAの書き方をご存じの方、教えていただけないでしょうか。

  • 列の値と一致するシートを選び、指定セルをコピぺする

    マクロの勉強をしている初心者です。   タイトルにありますように、あらかじめ列に入力する値と一致するシートを検索し、そのシートの中の所定の場所にあるセルの値をひろう、というマクロをつくりたいのですがご教示頂けないでしょうか。 わかりづらいので例を画像を添付します。 (手書きですみません。) まず、左のbookと右のbookは別であり、右は読み込み用で、左bookに入力をしていくものです。 左bookの売上げ(赤塗)、目標(青塗)という部分に、右bookのというセルの場所の値をコピペすることを希望です。 毎回人の入れ替わりが頻繁にあるため、Aと同じ値のシートを選ばせるというところからプログラムさせたいです。左bookは上から田中、山下、と並んでいますが、その都度何行目に誰がくるかはかわります。 右bookのコピーしたいセルの場所(B列6行目、C列6行目)はどのシートも変わりません。 恐れ入りますがご教示の程宜しくお願いします。

  • エクセルの串刺し計算で・・・

    エクセル2000で質問です。 シート1~シート8まで同じ形式のシートが有ります。 その中でシート1のみセルE20にE列の合計が入っています。 シート2~シート8にはそれぞれE列の合計はセルE25に 入っています。 シート1のD10にそのすべての合計を計算させて表示させる場合の 方法を教えて下さい。

  • Excelでセルの値を引用したいのですが・・・

    セルの値を他のbookから引用したい場合 ='ドライブ名:\フォルダ名\[book名.xls]シート名'!セル位置 になると思うのですが この際、「シート名」を任意のセルの文字列で指定出来ないのでしょうか? また、この任意の文字列をプルダウン方式で選択するようにするにはどのようにすれば良いのでしょうか? ご教授の程、宜しくお願い致します。

  • Excelでセル内の文字列を全て表示したい。

    Excel2000を使って、ブックA(入力用シート)の特定のセルに入力されている文字列をブックB(出力用テンプレート)の特定のセルに表示したいのですが、セルの大きさが異なるため、全体を表示できません。セルの書式設定で「折り返して全体を表示する」にすると、結局全部の文字列は表示されませんし、「縮小して全体を表示する」にすると1行になって縮小されてしまい、小さすぎて読めません。両方同時に指定できれば良いのですが不可能なようなので、VBAや関数、その他機能を使って実現できないものかと考えております。 何か良いお知恵をお貸し頂ければ有難いのですが。

  • エクセル ブック間 串刺し(文字列のみ) 出来ますか?

    エクセルのブック間でテキストを串刺しする方法を教えてください。 50個くらいあるブックの各々の同じシートの同じセルに同じテキストを入力したいと思っています。 計算式で大元ブックを参照する形式ではなく、各々のブックにテキストを打たなければなりません。 方法をご存知でしたら教えてください。 よろしくお願いします。

  • エクセルで別Bookのシートの指定セルの値を転記

    書式の決まった「申請書」の指定セルの値を別のBookの「申請書リスト」シートに引っ張りたいのですが、例えば申請書のG6に品名が入っているので、申請書リストのD列に品名を入力したらその申請書の決まったセルをリストの品名の横(行)に順番に転記。 申請書のシートは複数開いている状態もありなので、品名を入れたら当該申請書シートの目的のセルをリストに自動転記したいのです。 同じ品名のシートが複数同時に開いていることは無いです。

  • エクセルで、列や行の幅などセルのサイズを変えないままコピペ・・・

    エクセルで、列や行の幅などセルのサイズを変えないままコピペしたいのですが。 シートまるごとコピペするとできるのですが、一部だけをコピペすると、どうしてもセルが基のサイズに戻ってしまいます。 同じシートには「形式を指定して異動」でできたのですが、違うブックに異動することがどうやってもできません。 どうにかして一部分だけをサイズを変えずにコピペすることはできないでしょうか? どなたかお助けください。

専門家に質問してみよう