Bに銀行名 a銀行 b銀行・・・
E F G H I Jにデータ末尾変動の数値(金額)が記入されており、
For i% = 1 To 6
adr2$ = Range("e7").Cells(1, i%).Address
Range(adr2$).Cells(DatNum + 3, 1).Formula = "=SUMIF(B7:B1000,""a銀行"",E7:E1000)"
と記入してa銀行の合計金額を記入しています。
しかし、上記記述ではEからセルが横に移動しても全てE7:E1000の合計となり意味がありません。
そこで、eのデータ末尾+3にE7~データ末尾
fのデータ末尾+3にF7~データ末尾
以下順番にforの条件が完了するまで
としたいのですが、どのように書き換えればよろしいでしょうか。
逐一対応セルに標記するようにマクロを記述する方法もあるとはおもいますが、簡潔にできるのではないかと思い質問させて頂きました。
No.3ベストアンサー
- 回答日時:
はて……????
>データ末尾=各列最終行ではございません。
>値が入力されているセルの一番下ということです。
回答2のマクロは「値が入力されているセルの一番下」の+3行に数式を記入するよう,作成してありますが,いったいどういうことでしょうか。
回答2のマクロを実際に動かして,いったい「どのように違っている」(具体的に。今のアナタのエクセルで回答のマクロを動かしたら,ここの番地にこういう数式が入ったけど,これこれの理由でここの番地にこういう内容で数式が入って欲しい,と)のか,キチンと教えてください。
そもそも。
>各列毎に設定する方法ではなく、まとめて設定できないものかと思い質問させて頂いております。
いまE列はE80までデータが記入されていて,E83に数式を入れたい
いまF列はF103までデータが記入されていて,F106に数式を入れたい
:
いまJ列はJ345までデータが記入されていて,J348に数式を入れたい
それらのE83,F106…J348に,まとめて数式を入れたい,とそういう事を言ってるように見えますが,そういう事でしょうか?
やれば勿論出来ますが,なんとも無意味なコダワリにしか思えません。
それとも?
アナタの用意した正体不明のdatnumの値(仮に423とか)を信頼して,E列:J列の実際のデータの入り具合はもう見る必要は無くて,datnum+3行に(たとえばE426:J426に)まとめて一斉に数式を記入したいと言いたいのでしょうか。
こちらも実際に試してください:
sub macro2()
dim datnum
’アナタが用意したdatnumの値の取得をここに書き写す
cells(datnum, "E").resize(1, 6).formular1c1 = "=SUMIF(R7C2:R[-3]C2,""a銀行"",R7C:R[-3]C)"
end sub
回答1然り,回答2も同じですが,それぞれ回答で寄せられたマクロを実際に試してから「アナタが書いてくれたマクロを実際に動かしてみたら,ここが違うのでこうしたい」という具合に,もうちょっとキャッチボールしてみるのもいいんじゃないでしょうか?
質問の仕方、返答の仕方につきまして失礼を重ね申し訳ございません。
No.2のマクロを実行したところ、確かに最終行+3ではあるのですが
合計
a銀行
b銀行
と既にマクロにて先に標記していますので、その更に3列下に表示され、
合計
a銀行
b銀行
1列目
2列目
3列目 合計値 合計値・・・
という形になってしまい、希望とは違うものだと判断をしてしまっておりました。
この度のご指摘を受けた後+3の数値を+1や+2に変えて銀行名を変更していけば対応できることに気がつき、現在は希望に添った形になっております。
For c = 5 To 10
r = Cells(65536, c).End(xlUp).Row
If r >= 7 Then
Cells(r + 1, c).FormulaR1C1 = "=SUMIF(R7C2:R[-3]C2,""a銀行"",R7C:R[-3]C)"
End If
Next c
For c = 5 To 10
r = Cells(65536, c).End(xlUp).Row
If r >= 7 Then
Cells(r + 1, c).FormulaR1C1 = "=SUMIF(R7C2:R[-3]C2,""b銀行"",R7C:R[-3]C)"
End If
Next c
と記述させていただき、使わさせて頂きます。
範囲がそのうち合計やa銀行などに被さってきますが、Bを銀行名検索なのでこだわらずにいこうと考えております。
もし、このまま数が増えると問題が起こる可能性がありますようでしたらご教授頂ければ幸いです。
>いまE列はE80までデータが記入されていて,E83に数式を入れたい
>いまF列はF103までデータが記入されていて,F106に数式を入れたい
> :
>いまJ列はJ345までデータが記入されていて,J348に数式を入れたい
>
>それらのE83,F106…J348に,まとめて数式を入れたい,とそういう事を>言ってるように見えますが,そういう事でしょうか?
>やれば勿論出来ますが,なんとも無意味なコダワリにしか思えません。
こちらにつきましては、私の説明がわるかったことが招いた誤解でありますことをお詫び申しあげます。
>sub macro2()
> dim datnum
>’アナタが用意したdatnumの値の取得をここに書き写す
>
> cells(datnum, "E").resize(1, 6).formular1c1 = "=SUMIF(R7C2:R[-3]>C2,""a銀行"",R7C:R[-3]C)"
>end sub
こちらのマクロにつきましても描いていたものと同じ作業ができました。
色々と作法につきましてもご教授頂き、感謝致しております。
この度は色々とご無礼が有りましたことをこの場をかりましてお詫び申しあげます。
この度は本当にありがとうございました。
No.2
- 回答日時:
数式を記入するのは,各列の最下行+3行目でいいんですね?(アナタが掲示したマクロは,そうは書かれていませんが,マクロの方を無視します)
作成例:
sub macro1()
dim c as integer
dim r as long
for c = 5 to 10
r = cells(65536, c).end(xlup).row
if r >= 7 then
cells(r + 3, c).formular1c1 = "=SUMIF(R7C2:R[-3]C2,""a銀行"",R7C:R[-3]C)"
end if
next c
end sub
この回答への補足
当方の記述がおかしかったことをお詫びさせて頂きます。
データ末尾=各列最終行ではございません。
値が入力されているセルの一番下ということです。
100行目まで値があれば103行目にa銀行の合計
200行目まで値があれば203行目にa銀行の合計
という形です。
最終行が変動しますがDatNumが入力値の最終行になるように設定してあります。
E列からJ列の入力値の最終行+3行目にBがa銀行なら合計をする
という形をとりたいと思っております。
各列毎に設定する方法ではなく、まとめて設定できないものかと思い質問させて頂いております。
非常に言葉足らずな質問で申し訳ありませんでした。
No.1
- 回答日時:
一例です。
Range(adr2$).Cells(datnum + 3, 1).FormulaR1C1 = _
"=SUMIF(r7c2:r1000c2,""a銀行"",r7c:r1000c)"
この回答への補足
ご返事ありがとうございます。
Range(adr2$).Cells(datnum + 3, 1).FormulaR1C1 = _
"=SUMIF(r7c2:r1000c2,""a銀行"",r7c:r1000c)"
これですと
Range(adr2$).Cells(DatNum + 3, 1).Formula = _
"=SUMIF(B7:B1000,""a銀行"",E7:E1000)"
を絶対値形式で書き直しただけで解決に至っていないと思われるのですが当方の勘違いでしょうか?
この方法でも各セルに対応するように値をずらして行けばできるのですが、コードが長くなりすぎるのでまとめれないかと考えております。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) excel VBA if文について 3 2022/03/27 17:42
- Visual Basic(VBA) 列と行の名前(重複あり)が交差するセルに、データを入力したい 2 2022/06/25 22:42
- Visual Basic(VBA) ファイル全てを .xlsm に変更したところ、プログラムが途中で落ちてしまっています 17 2022/12/07 12:03
- Visual Basic(VBA) 追記する列を増やしたい 2つのデータを検索・照合して元データにないデータを下記マクロで商品名を追記し 9 2022/10/05 10:50
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- Visual Basic(VBA) Sheet2からオートフィルターで売上日を抽出した件数をカウントし、その件数をSheet1のセルB1 2 2023/01/12 12:24
- Visual Basic(VBA) vba 等間隔の列に対しての計算 6 2022/05/17 20:15
- Excel(エクセル) VBAで組み合わせ算出やCOUNTIFSの処理を高速化したいです。 4 2022/04/07 02:38
- Visual Basic(VBA) まとめシートから集計シートへA列のコードが一致したら1行コピーするマクロをネット上で見つけました。こ 1 2022/08/30 14:11
- Excel(エクセル) 【困っています】VBA 追加処理の記述を教えてください。 1 2022/08/25 22:54
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
条件に応じて特定の行を非表示...
-
Excelでセル内の数式は残し値だ...
-
「マクロ」の足し算の式を教え...
-
Excelで連続印刷をするマクロ
-
Excel2007で、太字にした行のみ...
-
エクセル VBA 小数点を含む数字...
-
値貼り付けをしても書式も貼り...
-
Excel2007 セルを右方向に削除...
-
Excel(VBA)データ入力に応じて...
-
整数行を残し小数点の行を削除...
-
Excelで周期的に列を削除する方法
-
エクセルVBAマクロで条件付き合...
-
100行のセルの高さを一括で調整...
-
wordのvbaでハイパーリンク設定...
-
Excelで同じシートのコピーを一...
-
エクセルVBAでパスの¥マークに...
-
エクセルの複数シートの保護を...
-
VBAでシートコピー後、シート名...
-
前の(左隣の)シートを連続参...
-
別シート参照のセルをシート毎...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
条件に応じて特定の行を非表示...
-
Excelでセル内の数式は残し値だ...
-
Excel2007で、太字にした行のみ...
-
Excelで連続印刷をするマクロ
-
「マクロ」の足し算の式を教え...
-
エクセル VBA 小数点を含む数字...
-
エクセルで全ての数字間にカン...
-
(Excel2003)すぐ左の最後の行...
-
Excel(VBA)データ入力に応じて...
-
Excel にて非表示行を探すワー...
-
エクセルで、行ごとの並び替え...
-
エクセル2003でマクロをおこな...
-
excel ある部分だけをコピペし...
-
行の入れ替えってどうするの?
-
Excelで周期的に列を削除する方法
-
整数行を残し小数点の行を削除...
-
EXCEL マクロで「キーワード入...
-
VBA コピーを有効行までループ...
-
Excel2007 セルを右方向に削除...
-
値貼り付けをしても書式も貼り...
おすすめ情報