• ベストアンサー

sheet1に以降各シートのA1セル値を列挙したい

70枚ほどのシートがあり、そのA1セルに各シートの題名の様な文字列が入っています。 一番最初にインデックスのシートを作り、そのA列に以降のシートの各A1セルの値を並べたいんですが、どんな式を入れれば良いのでしようか? 「インデックス」シートのA1に =Sheet2!$A$1 を入れ下にオートフィルではダメでした。

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

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.2

(1)シート名がSheet1,Sheet2,・・・のままだとやさしい。   =INDIRECT("Sheet" & ROW() & "!A1")   他に下記(2)の方法で、オートフィルを使ってシート名が作れる。 (2)多分名前を変えていると思う。 その場合は自動だけでは不可能で、余分なシートに、各シート名だけ入力した列を作ります。 A列とします。 そしてB1に =INDIRECT(A1&"!A1") と入れて下方向に式を複写します。 (3)VBAなら簡単です。 下記をVBEの標準モジュールにコピーする。 追加したシートをアクチブにして、実行する。 シートタブの左から順番に、各シートのA1セルの値が、A列に書き込まれます。 Sub test08() For i = 1 To Sheets.Count Cells(i, "A") = Sheets(i).Cells(1, "A") Next i End Sub

popuran121
質問者

お礼

VBAまで、詳しくありがとうございます。

その他の回答 (1)

  • masa_019
  • ベストアンサー率61% (121/197)
回答No.1

シートの名前は、 左から、インデックス、Sheet2、Sheet3、Sheet4・・・ と続いているのでしょうか? そのようになっているのならば、 「インデックス」シートのA1に =INDIRECT("Sheet" & ROW()+1 & "!A1") と入力し、下にコピーでどうでしょう。

popuran121
質問者

お礼

ありがとうございます。 なかなか旨くいかなかったんですが、オプションの設定が手動になってたりして旨くいかなかったみたいです。 出来ました。

関連するQ&A

  • B列のセルにある文字が出た時A列のセルの値を変える

    B列のセルにある文字が出てきたときA列のセルの値を変える式、マクロを教えて下さい  A列のセルの値のリストは最初から決まっていてB列のセルに出てくるある文字と同じ数あります。

  • エクセルで""内をオートフィルする方法

    エクセルでたとえば、あるセルに、 =INDEX("Z100") と書きます。オートフィルを使って下にコピーすると、引数は文字列なので全てのセルに同じ値、つまり「=INDEX("Z100")」と書かれます。 これを「=INDEX("Z101")」、「=INDEX("Z102")」・・・とさせることはできませんでしょうか。

  • A列が今日の日付ならC列のセルの背景に色をつけたい

    A列が今日の日付ならC列のセルの背景に色をつけたい エクセル2007です。 A1に2012/03/04といれ、 下へオートフィルしています。 そしてC列に対して 「A列が今日の日付なら、セルの色を塗りつぶす」と言うようにしたいのですが 式がわかりません。 条件付き書式の 新しい書式ルール→「数式を使用して、書式設定するセルを決定」 で 「次の数式を満たす場合に値を書式設定」 に「=$A1=date()」と入れると 「入力した数式は正しくありません。」 となってしまいます。 どうすればいいでしょうか?

  • 一番左のシートのセルA6に入力した値を次のシート以降のシートに入力したい

    Excel2003でマクロを作成しています。 複数のシートがあり一番最初のシートのセルA6に日付を入力します。 二番目以降のシートのA6に「一番左のシートのA6の値を入力しなさい」という関数をコードに書きます。これを何回も試行錯誤したのですができません。どうコードを書いたらいいかご教示ください。

  • Excelのセル参照について

    範囲(例:2010/1/1~2010/2/1)を指定して更新すると、日にちと値を外部データから取得し、 ExcelのSheet2のA列に日にち、B列に値を表示しています。 データは月単位で拾ってきて、Sheet2に表示しています。 たとえば、2010/1/1~2010/2/1とすると、1月のデータを取得してきて、 2010/2/1~2010/3/1とすると、2/1~今日までのデータを取得してきます。 そのSheet2に表示しているB列のデータをSheet1のセルD列にセル参照しているのですが、 たとえば、2010/1/1~2010/2/1までのデータは、Sheet1のセルD1に「=Sheet2!B1」と記入して、以下オートフィルでうまくいくのですが、 2010/2/1~2010/3/1までとすると、2/1から今日までのデータはうまく表示され、 今日以降のデータはSheet2が空白なので、Sheet1で「=Sheet2!#REF!」となってしまい、以降、Sheet2にデータが取得されてもうまくセル参照されません。 Sheet1のD列の式を下記にしても、現象はかわりませんでした。 =If(Sheet2!B1="","",Sheet2!B1) =IF(ISBLANK(Sheet2!B1),"",Sheet2!B1) Sheet2で今日以降のデータが空白でも、Sheet1が「#REF」とならないように、 また、今日以降のデータは取得された際、うまく表示されるようにするのは、 どうしたらよいのでしょうか。

  • VLOOKUPでセルに#N/Aが出るのを防ぐには?

    最初のセルにVLOOKUP関数を入れて、必要数のセル分だけ下にオートフィルで引張っています。 すると検索値がまだ未入力のセルにずらっと#N/Aが並んでしまいます。 見ずらいので、このエラー値が出ないようにするにはどうすれば良いでしょうか?

  • VBAの計算式で値を検出し別シートに貼り付ける

    例でA.xls sheet1に添付のデータがありB.xls sheet1のB列に検索値がありC列に記載のとおりの計算式が入力されています。関数入力はC2セルにの計算式を入力しそれを元にオートフィルでC3以降入力しているが膨大な計算式になりExcelを開いたりするのに処理に時間がかかりすぎる為セルに計算式をいれるのではなくVBAで計算式を入力しオートフィルみたいに連続した計算の値のみを入力したいのですがコードが解る方宜しくお願いします。

  • IF関数をひとつのセルに二つ使いたい。

    A列のセルには、 「空白」、「0.5」、「1」、「1,5」、「2」が入るのですが B列のセルには 隣接するA列が「0.5」~「1,5」までは500、 「2」以上だと1000、 A列が空白だとB列も空白にしたいです。 でも最初からB列には関数 「=IF(1<A1,1000,500)」を入れてオートフィルしているので 空白のセルも勝手に「500」に入力されてしまいます。 そもそも「=IF(1<A1,1000,500)」ではだめですよね? よろしくお願いします。

  • 関数が入っている列で値のある最後のセルの値を返す

    お尋ねします。 関数が入っている列で式の値が入っている一番下のセルの値を調べるにはどうしたら良いでしょうか? 例      A列   1   5   2   10   3   13   4   (式の値が無いのでゼロ) B1セルにA3セルの13と言う値を返したいのですが、列に式(SUMPRODUCT関数)が入っていて、実際はA4セルのゼロが返ってきます。 またシート1~シート5 まで上記と同じ式が入っていて、シート1のA列の最後の値「13」をシート6のB1セルに値を返す場合、INDIRECT関数を使った場合、どういう式になるでしょうか? ご回答よろしくお願いします。

  • =LARGE(INDEX((($A$1:$A$10)<>"")/ROW($A$1:$A$10),),ROW(A1)) とは

    エクセル2000です。 A列(A1~A10)に飛び飛びに文字列が表示されているとき、 仮にC1に =LARGE(INDEX((($A$1:$A$10)<>"")/ROW($A$1:$A$10),),ROW(A1)) と入れてフィルドラッグすると、C列にA列のうち文字が表示されたセルの行番号の逆数を取得できるようです。 これはどのような理屈によるものでしょうか? LARGEやINDEXなど組み合わされた関数それぞれの意味は理解しているはずなのに、先ほどから式とにらめっこしていますが何故こうなるのかわかりません。 ご教示いただければ幸いに存知ます。

専門家に質問してみよう