シートに関数を入れたい

このQ&Aのポイント
  • Excel2007のマクロ作成中の初心者です。シートに関数を入れたいと思っていますが、手動で関数を追加するのは面倒です。新しいシートが追加されても自動的にセルに関数が表示され、シートが削除されても対応できるようにしたいです。
  • 現在、C列から始まるセルに以下の関数を手動で追加しています:'東京太郎'!$AS$2、'横浜太郎'!$AS$2、'名古屋太郎'!$AS$2など。しかし、この方法だとシートが追加されたり削除されたりした場合に手動で修正する必要があります。
  • したがって、新しいシートが追加されたら自動的に関数が追加されるようにする方法を教えてください。また、シートが削除されても自動的に対応できるようにしたいです。どうかお助けください!
回答を見る
  • ベストアンサー

シートに関数を入れたい

Excel2007でマクロ作成中の初心者です。 最後のシートの列に       C2            D2          E2                        ='東京太郎'!$AS$2  ='横浜太郎'!$AS$2 ='名古屋太郎'!$AS$2                     C3            D3          E3                        ='東京太郎'!$AZ$8  ='横浜太郎'!$AZ$8 ='名古屋太郎'!$AZ$8  の関数がはいってます。一番左のシート名は東京太郎、次のシートは横浜太郎・・と続きます そしてシートのセル値は C列からはじめます。 今、シートが追加されたら、手入力で上の式をひとつひとつ、あたらしい列に書き込んでいます。 本当に面倒です。最初から入れておいて、シート名の文字列がどう変わっても、列にそのシートの セルの値が表示されるようにしたいです。またシートが削除されても、シート順にセル表示したいです。なんだか説明がへたですけど、よろしくお願いします。どうかお助けください。

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

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

こんばんは! 表示するSheetは必ずSheet見出しの最後のSheetですよね? 一例です。 標準モジュールに↓のコードをコピー&ペーストしてマクロを実行してみてください。 Sub 表示() Dim j As Long, k As Long, cnt As Long, wS As Worksheet Set wS = Worksheets(Worksheets.Count) With wS j = .Cells(2, Columns.Count).End(xlToLeft).Column If j > 2 Then Range(.Cells(2, 3), .Cells(3, j)).ClearContents End If cnt = 2 For k = 1 To Worksheets.Count - 1 cnt = cnt + 1 .Cells(2, cnt) = Worksheets(k).Cells(2, "AS") .Cells(3, cnt) = Worksheets(k).Cells(8, "AZ") Next k End With End Sub こんな感じではどうでしょうか?m(_ _)m

aitaine
質問者

お礼

ありがとうございました。ご教示いただいたコードを参考に自分で加工してやってみます。

aitaine
質問者

補足

すばやいご回答ありがとうございます。貴方様のコードまだ実行してないですが、たぶん思うとおりの、マクロ実行されるとおもいます。実はこのシートは40枚前後あり、一枚のシートの30箇所のセルを、最後のシートの列に式を入れることになります。でも、シートの増減のたび、もしくは、ブックを開くたびに上のマクロを実行するため、時間がかかります。もしできるなら、最初から、すべての列に式を入れておきたいです。そしてシートが変わっても、最後のシートの関数どおりの値が表示されるようにしたいです。もし、それはできなければ、貴方様の作っていただいたコードを実行するつもりです。面倒かけますがよろしくお願いします。

関連するQ&A

  • エクセル 関数でシート名を使用したい

    Excelで質問です。 1つのブックの中に複数のシートがあります。(シート名/東京、大阪、福岡etc) 計算結果表示用シートのB3にシート名を入力し、そのシート名のシートの数値を計算して、表示するというものをつくりたいです。 例えば計算表示用シートのC1にシート名東京のE50+E52の合計を表示させるとして ='東京'!E50+'東京'!E52 なら表示できるのですが、B3に東京と入力して ='B3'!E50+'B3!E52 としたら上手くいきません。 わかる方教えて下さい。

  • 関数について

    エクセルでA列に時間,B列に番号,C列に氏名,D列に場所を記入した表があります。   A    B    C     D  10:00   1   浦島太郎   東京  10:00   2   桃 太郎   京都  11:00   1   かぐや姫   東京 別のシートに   D   B   A   C  東京      10:00 という表があるとき,空欄になっているBとCにそれぞれ「1」と「浦島太郎」を関数を使って自動的に表示させたいのですがどうすればいいのでしょうか。教えてください。

  • sheet2からsheet1へのデータの飛ばし方(エクセル関数)

    Sheet1 A  B C D E (列) ―――――――――――――――――――――――― 1| 番号  氏名   所属  入社  生年月日 2| 1000  斉藤   東京  10/4  (入力箇所) sheet2 A B C D (列) ――――――――――――――――――― 1| 番号  氏名  所属  生年月日 2| 1000  斉藤  東京  1988/11/1 sheet1のE行(生年月日)にsheet2を参照し、同じ番号の人の生年月日が表示されるようにしたいのですが、どのような式(関数)を入れたら表示されるでしょうか? ほかの似たような質問の解答を見てMatchやvlookupを使ってみましたが、できなかったので教えてください。 よろしくお願いします。

  • エクセルのCOUNTIF関数で条件が2つある時

    すみません、どなたか教えてください。 シート2のセルD5には数式「=COUNTIF(INDIRECT($C$43),B5)」があり「2」と表示されています。 $C$43は数式「="1!$C$5:$C$"&E42」でE42セルには32の数字が入っています。つまりシート1のセルC5からC32までとシート2のB5が等しかったらシート2のセルD5に「件数を表示」です。 1件の条件の時のカウントはできました。 問題はこの次に、シート1のセルD5からセルD32とシート2のセルE5と等しいときにの条件を加えて「件数の表示」をしたいのですが、二つの条件があるときの書き方が分かりません。 つまり、 シート1のセルC5からセルC32までに入っている文字(1イ、2ロ、5,1ロ・・・)とシート2のB5の文字(1イ)が同じで、かつ、シート1のセルD5からD32までに入っている数字(23、19,21,40・・・)とシート2のセルE5の数字「23」と同じ時の件数を数えたい。と言うことですが、うまく説明できなくてすみません。 シート2のセルD5に数式「「=COUNTIF(INDIRECT($C$43),B5,IF(INDIRECT($D$43),E5,0))」 だとエラーになってしまいます。$D$43は「=1!$D$5:$D$"&E42」、E5はシート2のセルE5です。 おしえてください。

  • Excelのシート名を引用した関数は?

    シート名"台帳"のA列に他のシート名を記載しておき、B列以降に、各シート名の必要な情報を引用表示させたい。その時のセルの関数はどうすればいいのでしょうか? シート名"台帳"   A  B      C     D 1 名前 生年月日  出身地   年齢 2 信長 ?(1)    ?(2)    ?(3)  3 秀吉 ?     ?     ?  4 家康 ?     ?     ?  シート名"信長"   A    B 1 生年月日 5/5  2 出身地  名古屋 3 年齢   50  この質問の表現で意味解りますか?

  • OR関数の使い方

    シート2のA3の文字列がシート1のD3:D200のいずれかにあれば、C3:C200の列で同じ行にある文字列を返す、そこになければE3:E200を探しそれでもなければF3:F200を探す・・・という関数を以下のように作成しましたが#N/Aになってしまいます。 本当はC3:F200で一気に探したいので、他にもっと適切な関数があればご指導をお願いします。 =OR(LOOKUP(A3,sheet1!D3:D200,sheet1!C3:C200),LOOKUP(A3,sheet1!E3:E200,sheet1!C3:C200),LOOKUP(A3,sheet1!F3:F200,sheet1!C3:C200))

  • 各シートの特定のセルを返したい

    各シートの特定のセルを返したい 積算されたのを各個人のシートを制作しています。20人程 例 シート名 「大阪」 各シート内検索条件セル V44に「大阪 太郎」 全員同じセルに各人名をいれています。 その中でセルW58 X58 Y58をSheet1に返したい Sheet1は A列にシート名を固定する「大阪」 B列に検索条件の「大阪 太郎」 H列に検索条件の大阪 太郎の「W58」を返す I列に検索条件の大阪 太郎の「X58」を返す J列に検索条件の大阪 太郎の「Y58」を返す 以上のことを行いたいのですが、先日このサイトで教えて頂いた =IF($A2="","",IF(COUNTIF(INDIRECT(B$1&"!A:A"),$A2),VLOOKUP($A2,INDIRECT(B$1&"!A:D"),4,0),"-")) を改造すれば、なんとか行き着けそうなのですが、うまくいきません。 どうぞ、お知恵をお貸し頂けませんでしょうか?

  • エクセルで試合結果を入力し、各シート(チーム毎)にまとめ、データベースを自動作成する方法教えてください。

    例えば、Jリーグの全試合結果をシート1に入力します。 A列に日付、B列にホームチーム名、C列にアウェイチーム名、D列に得点(ホーム)E列に失点(ホーム)、F列に得点(アウェイ)、G列に失点(アウェイ)とします。 A    B    C   D  E  F  G 3月2日 東京  名古屋  2  1  1  2 3月2日 大阪  福岡   1  0  0  1 3月9日 福岡  東京   3  1  1  3 3月9日 名古屋 大阪 シート2には、チーム毎の結果、例えば東京とすると、東京との対戦相手の結果のみが抽出される。 A    B    C   D  E  F  G 3月2日 東京  名古屋  2  1  1  2 3月9日 福岡  東京   3  1  1  3 そして、シート3を大阪とすると、大阪との対戦相手の結果のみが抽出され表示される。 このような、シート1に試合結果を入力すると各シートに表(チーム毎の表)が自動作成される関数を教えてください。 さらに、欲を言えば、シート2を東京と限定するので、B列に対戦相手、C列に場所、D列に得点、E列に失点というように一挙にまとめた表ができる関数があるとよいのですが・・・ A    B    C    D  E  3月2日 名古屋  ホーム  2  1   3月9日 福岡   アウェイ 1   3   上記のようなデータベース作成は、エクセルで無理なのでしょうか? またエクセルのマクロだと出来るのでしょうか? よろしくお願いいたします。

  • 二つの検索値から別のシートに抽出する

    WinXP,Excel2000 下記のような表から例えば氏名コード(A列)103番と 日付(B列)2006/5/3からE列のデータ3.50を導きたい のですが、この場合検索値がA列・B列と2つあるので 同じシートに答えを出す場合は F3=SUMPRODUCT((A1:A9=F1)*(B1:B9=F2)*E1:E9)で できるのですが、別のシートに抽出するにはどうしたら よいでしょうか。ご教授ください。<m(__)m> A列 B列 C列 D列 E列    F列 1 100 2006/5/3 東京 8:10 8.00   103 2 101 2006/5/3 名古屋 9:10 7.25  2006/5/3 3 102 2006/5/3 大阪 7:45 5.00   3.50 4 103 2006/5/3 京都 10:30 3.50 5 104 2006/5/3 札幌 8:40 4.75 6 100 2006/5/4 福岡 8:45 5.00 7 101 2006/5/4 東京 9:05 6.25 8 103 2006/5/4 大阪 8:15 1.50 9 105 2006/5/4 横浜 10:15 3.00

  • エクセル関数の他のシート参照について

    エクセル2000についてお尋ねします。どんな関数でもいいのですが、例えば「INDIRECT」関数で「sheet5」のD20セルに「INDIRECT($H$13"月!D3")] という関数を入れました。「sheet1」から「sheet4」には1月から4がつのデータがあります。「sheet5」のH13セルに1と入れたら。「sheet5」のD20セルに1月のD3セルが出るようになっています。ところが、この関数を相対コピーできません。"月!D3"が文字列なので?オートフィルでコピーできず一つ一つ入力しなくてはいけません。他に良い方法はありませんか?

専門家に質問してみよう