- ベストアンサー
エクセルのマクロや関数の質問
- シート1のA1に、シート2からシート20の'C13'の総合計を入力する方法を教えてください。
- データがA列になければ2行目にコピーし、データがあれば次の行にコピーするコードの変更方法を教えてください。
- シート1のA1に文字列を入力し、阪神と入力すれば阪神シートのD5を、巨人と入力すれば巨人シートのD5を表示する関数がありますか?
- みんなの回答 (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
その他の回答 (3)
- imogasi
- ベストアンサー率27% (4737/17069)
出来れば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
お礼
甘えてしまってごめんなさい。 以後、気を付けます。 感謝しています。
- keithin
- ベストアンサー率66% (5278/7941)
>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質問内容が常識的マナーなので,憶えておいてください。
お礼
ありがとうございます。 感謝しています。 以後気を付けます。
- mshr1962
- ベストアンサー率39% (7417/18945)
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")
お礼
ありがとうございました。 感謝しています。
お礼
丁寧にありがとうございます。 感謝しています。