• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセルのマクロや関数の質問)

エクセルのマクロや関数の質問

このQ&Aのポイント
  • シート1のA1に、シート2からシート20の'C13'の総合計を入力する方法を教えてください。
  • データがA列になければ2行目にコピーし、データがあれば次の行にコピーするコードの変更方法を教えてください。
  • シート1のA1に文字列を入力し、阪神と入力すれば阪神シートのD5を、巨人と入力すれば巨人シートのD5を表示する関数がありますか?

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

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

こんばんは! (1)に関してですが、串刺し計算方法ではどうでしょうか? 当方使用のExcel2003の場合です(他のバージョンでも同様だと思います。) Sheet1のA1セルをアクティブに → オートサム(Σマークのアイコン)をクリック → Sheet2のC13セルをクリック  → Shiftキーを押しながら画面左下にある最後のSheet見出しをクリック → もう一度オートサムアイコンをクリック これでSheet2~最後のSheetのC13セルがSheet1のA1セルに表示されるはずです。 数式バーをみてもらうと =SUM(Sheet2:SheetX!C13) ←X部分は最後のSheet名です となっていると思います。 (3)については A1セルにSheet名を入力するとします。 表示したいセルに =INDIRECT(A1&"!D5") ではどうでしょうか? 最後に(2)に関してですが、 Offsetで最終行の1行下に貼り付けするようなコードになっていますが、 If Range("A1")="" then Range("A1").PasteSpecial Paste:=xlPasteValues Else Range("A" & Rows.Count).End(xlUp).Offset(1, 0).PasteSpecial Paste:=xlPasteValues のような感じでやってみてはどうでしょう? (検証していないので、ダメだったらごめんなさいね) 以上、参考になれば良いのですが・・・m(__)m

noname#241383
質問者

お礼

丁寧にありがとうございます。 感謝しています。

その他の回答 (3)

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

出来れば3つにわけて質問してほしい。難易度が違ったりして答えるのが大変。 回答も長くなる可能性はある。 1つ判らないと回答しない回答者もいるだろう。それは回答の多様性を知る上で不利だ。 (1)は「串刺し演算」と言われる、エクセルの常識。エクセルの本を1通り読まないで質問しているね。 WEBでもごおgぇででも「串刺し演算」で照会して http://kokodane.com/tec2_38.htm など読めば良い。 (1)場合を分ければしまいでは。 初心者だと思うが、あまり1つですまそうなどと考えないほうが良い。自分で考えるのは勝手だが、質問までして使うこともなかろう。 End(xlUp)は質問で書いているような、そういうものなのだ(第1行目が空白でも0にならない)。 普通エクセルは第1行目を項目見出しに使うので、あまり質問の場合は出くわさない。意識はしているがあまり 実際では使ったことがない。 d=Range("A" & Rows.Count).End(xlUp).Rowの方(Offset使わず、その後Cells(d+1,"A")=・・の方)が判りやすいのでは。 そのときA1が空白かどうか聞く。 (3)INDIRECT関数利用だろう。 式を入れるシートのA1セルに =INDIRECT(B1&"!A1") 式を入れるシートのB1にSheet2と入れると、Sheet2にA1セルの値(私の場合12)を取ってきて式を入れたシートのA1は12

noname#241383
質問者

お礼

甘えてしまってごめんなさい。 以後、気を付けます。 感謝しています。

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

>1 「3D串刺し計算」と言います。 =SUM( まで打ち込み シート2のC13をクリックして =SUM(Sheet2!C13 にしてから シフトキーを押しながらシート20のシート名タブをクリックして,数式が =SUM(Sheet2:Sheet20!C13 になったら,カッコを閉じてEnterして入力して出来上がり。 ただし,シート2から20まで,合計したいシートが合計したいシートだけ並んでいる必要があります。 シート2と20の間にはさんだ,他の合計したいシートは順不同です。 >2 単純に Range("A" & Rows.Count).End(xlUp).Offset(iif(application.counta(range("A:A") = 0,0,1), 0).PasteSpecial Paste:=xlPasteValues >3 =INDIRECT(A1&!D5") >質問攻め こちらのような質問相談掲示板では,1投稿1質問内容が常識的マナーなので,憶えておいてください。

noname#241383
質問者

お礼

ありがとうございます。 感謝しています。 以後気を付けます。

  • mshr1962
  • ベストアンサー率39% (7417/18945)
回答No.1

1.  =SUM(シート2:シート20!C13) 2.  If Range("A1") Is Null Then .Range("A1").PasteSpecial Paste:=xlPasteValues Else .Range("A" & Rows.Count).End(xlUp).Offset(1, 0).PasteSpecial Paste:=xlPasteValues End If 3. =INDIRECT(A1&"!D5")

noname#241383
質問者

お礼

ありがとうございました。 感謝しています。

関連するQ&A