『SUMIFを使った式をマクロで入力』(じいかっぱ)
Sub 数式入力()
Sheets("Sheet2").Select
Range("C2").Formula = "=SUMIF(出納帳!B4:B204,""事務費"",出納帳!E4:E204)"
End Sub
上記のマクロを元に以下のようなマクロを考えています。
Dim s As String←変数を宣言 s = Sheets("Sheet2").Range("C2").Offset(i, 0).Value←左隣のB2セルの値を取得 ' Range("B7").Formula ="=SUMIF(出納帳!B4:B204,""事務費"",出納帳!E4:E204)" ↑ この"事務費"の代わりに変数sで取得した値(文字)を入れて処理を進めたい
どのようにしたら上手くいくでしょうか。
ご教授ください。
また、同じ処理を2行目から32行目まで繰り返し行う処理を最終的に考えています。
こちらの方も併せご教授、お願いいたします。
< 使用 Excel:Excel2016、使用 OS:Windows10 >
Dim s As String s = Sheets("Sheet2").Range("C2").Offset(, -1).Value Range("B7").Formula = "=SUMIF(出納帳!B4:B204," & Chr(34) & s & Chr(34) & ",出納帳!E4:E204)"
されたいことはこんな感じになると思います。
ちなみに「左隣のB2セルの値を取得」は Range("C2").Offset(, -1).Value になり、Range("C2").Offset(i, 0).Valueではi行下を取得してしまいます。
Chr(34)は「"」ダブルクォーテーションです。
> 2行目から32行目まで繰り返し行う処理を最終的に考えています は、Range("B" & n).Formula のようにしてnを2〜32までFor〜Next文で括るといいでしょう。 (通りすがり助六) 2024/07/24(水) 11:11:48
>' Range("B7").Formula ="=SUMIF(出納帳!B4:B204,""事務費"",出納帳!E4:E204)"
文字列演算子について調べてみて下さい。
Range("B7").Formula = "=SUMIF(出納帳!B4:B204," & Chr(34) & s & Chr(34) & ",出納帳!E4:E204)"
>また、同じ処理を2行目から32行目まで繰り返し行う処理を最終的に考えています。
>こちらの方も併せご教授、お願いいたします。
For Nextで調べてみて下さい。
(匿名) 2024/07/24(水) 11:20:00
>"=SUMIF(出納帳!B4:B204,""事務費"",出納帳!E4:E204)"
一目 ↓ "=SUMIF(出納帳!B4:B204,""" & s & """,出納帳!E4:E204)"
(半平太) 2024/07/24(水) 11:30:57
書き込み先は B7で良いのでしょうか。C列なのでは? 計算式中にB2を使えばいいだけのように思いましたが。 (xyz) 2024/07/24(水) 11:46:18
■1
以下について、コードとコメントが一致していません。
s = Sheets("Sheet2").Range("C2").Offset(i, 0).Value '←左隣のB2セルの値を取得
コメントのほうが正しいならば↓になります。
s = Sheets("Sheet2").Range("C2").Offset(0, -1).Value 'C2セルから下に0行、左に1列ズレるセルの値を取得
■2
>同じ処理を2行目から32行目まで繰り返し行う処理を最終的に考えています。
既に案内があるように、そもそもセルを参照すればよいので、いちいち取得して数式を設定する必要がありません。
Range("C2").Formula = "=SUMIF(出納帳!B4:B204,B2,出納帳!E4:E204)" ~~
さらに、数式の相対参照と絶対参照を適切に設定すれば、繰り返し処理せずとも↓で事足ります。
Sub 研究用() Sheets("Sheet2").Range("C2:C32").Formula = "=SUMIF(出納帳!$B$4:$B$204,B2,出納帳!$E$4:$E$204)" End Sub
(もこな2 ) 2024/07/24(水) 12:49:47
(じいかっぱ) 2024/07/24(水) 13:49:01
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.