『変数を使って、計算式を動的に活用する』(じいかっぱ)
Sub 執行状況シート式入力()
Dim kurikaesi As Long Dim kurikaesi2 As Long Dim Clastrow As Long
'出納帳シートのc列最終行番号を取得 Clastrow = Sheets("出納帳").Cells(Rows.Count, "C").End(xlUp).Row
'執行状況シートのc列に数式を入力 For kurikaesi = 2 To 7 Sheets("執行状況").Range("D" & kurikaesi).Formula = "=IF(C" & kurikaesi & "="","",SUMIF(出納帳!B4:B" & Clastrow - 1 & ",C" & kurikaesi & ",出納帳!D4:D" & Clastrow - 1 & "))" Next kurikaesi
For kurikaesi2 = 10 To 36 Sheets("執行状況").Range("D" & kurikaesi2).Formula = "=IF(C" & kurikaesi & "="","",SUMIF(出納帳!B4:B" & Clastrow - 1 & ",C" & kurikaesi2 & ",出納帳!E4:E" & Clastrow - 1 & "))" Next kurikaesi2
End Sub
上記のマクロを記述し、実行したところ
D列の該当各セルに入力された式を確認すると(D2セルの例)
期待していた =IF(C2="","",SUMIF(出納帳!B$4:B$204,C2,出納帳!D$4:D$204))ではなく
次のような式が入力されており
=IF(C2=",",SUMIF(出納帳!B$4:B$204,C2,出納帳!D$4:D$204))
結果、
「FALSE」とされてしまいました。
どのようにすれば期待した結果を得ることができるのでしょうか。
< 使用 Excel:Excel2016、使用 OS:Windows10 >
文字列データ型 https://learn.microsoft.com/ja-jp/office/vba/language/reference/user-interface-help/string-data-type
二重引用符は次の 2 つのいずれかの方法でリテラル文字列に埋め込むことができます。
二重引用符を使う。 Dim s As String s = "This string literal has an embedded "" in it."
Chr 関数を使う。二重引用符の文字コードは 34。 Dim s As String s = "This string literal has an embedded " & Chr(34) & " in it." (リンク) 2024/08/02(金) 07:10:35
ダブルコーテーションの表示 http://officetanaka.net/excel/vba/tips/tips90.htm
なお、[[20240728063236]][[20240724105448]]でどのような数式を提案されたのか読み返してみても理解が進むとおもいます。
(もこな2) 2024/08/02(金) 07:27:26
過去に質問している内容だったか。。。ちゃんと読まないと
(マナ)さんがアドバイスしてくれてますよ。
Formula = "=IF(C" & kurikaesi & "="","",SUMIF 〜略〜 これではなんか少ない気がするような... ~~~~~~ ↓へ
Formula = "=IF(C" & kurikaesi & "="""","""",SUMIF 〜略〜 (あみな) 2024/08/02(金) 07:43:12
ダブルクオーテーションを文字列の中で使う時は、 「二つ続けて一つのダブルクオーテーション」ということです。
別件ですが [[20240728063236]] で書かれているように、ループを使わない方法も身に着けたほうがよいと思いますよ。
できあがりの式は確かに異なる文字列だから、ひとつづつ設定しないといけないと思っていて、 そこがモヤモヤしていて、助言を受け容れない理由になっているのでしょう。
これは条件付き書式の設定の時にも表れますよね。 たとえば、A1:A100の範囲に、その値が1だったら赤の塗りつぶし色をつけたいとします。 A1セルに =A1=1 A2セルに =A2=1 ・・・・ と100個の条件付き書式を一つづつ設定しますか?
A1:A100を選択した状態で、=A1=1 とするでしょう? それと同じ理屈ですよ。 相対参照をもちいた式を入力する場合は、 こうしてまとめて設定しても、Excel側がそう解釈するんです。
ひとつひとつ設定しないと結果が変わるならいざ知らず、 そうしないで済むなら一括して設定するでしょう? 同じことです。
(xyz) 2024/08/02(金) 09:49:53
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.