Sub 合計()
With Range("A2", Range("A" & Rows.Count).End(xlUp))
With .Columns(18)
.FormulaR1C1 = "=if(count(rc[-9],rc[-8])=2,rc[-9]*rc[-8],"""")"
.Value = .Value
End With
End With
End Sub
Sub 差引合計()
With Range("A2", Range("A" & Rows.Count).End(xlUp))
With .Columns(8)
.Formula = "=IF(COUNT(F2:G2),SUM($F$1:$F2)-SUM($G$1:$G2),"""")"
.Value = .Value
End With
End With
End Sub
2つのコードがありますが、1つ目のコードを2つ目のように、.Formula 形式?で変換をお願いできないでしょうか?
-9はJ列、-8はK列としてください。
よろしくお願します。
No.2ベストアンサー
- 回答日時:
R1C1参照形式ではない状態(A1形式 列番号がA,B,C・・・になっている状態)にして、
.Value = .Valueの行にブレークポイントを付けて実行すれば、
Columns(18) (R列)に入る数式がA1形式で表示されるので、それをコピーして
.Formula=
に貼り付ければいい。
絶対参照にしたければ、「$」をつける。
やってみると、
=IF(COUNT(I2,J2)=2,I2*J2,"")
の数式になるので、
.Formula="=IF(COUNT(I2,J2)=2,I2*J2,"""")"
.Formula="=IF(COUNT($I$2,$J$2)=2,$I$2*$J$2,"""")"
ということか。
No.3
- 回答日時:
普通VBAの解説書などにはこんな式は載っていません。
余りはやらない、と言うことだと思う。マクロの記録かな。どこかにこんな書き方載ってましたか。
解読しても良いが、質問には何をしたいか、文章で明記すべきと思う。
前半はA2セルからA列データ最終行までの該当件数を出す式を設定しているの穴
もともと、VBAでは、セルに式をいれるのは邪道で、処理をVBAでして、値をセルにセットすれば良い。
>Columns(18)
R列としたほうがわかりやすい。
>With .Columns(8)
Withはオブジェクトについて、プロパティなど複数諸設定をするとき便利だが
1つの式しか要れないときにこんなのを使うと、コード文字数が増えるだけ。
>rc[-9],
18-9+1=10 J列 +1はRCの[ ]内が隔たりを表すので加えている
>rc[-8])=
18-8+1=11 K列
>rc[-9],rc[-8])=
セル範囲を表す部分だから、は:のミス?
>if(count(rc[-9],rc[-8])=2
意味は、数字が入っているセルが2セルなら
>rc[-9]*rc[-8],"""")"
掛け算をする式を入れて、そうでなければ空白(式を入れない)
>With Range("A2", Range("A" & Rows.Count).End(xlUp))
With .Columns(18)
前の行のコードは行範囲を指定しているだけ。With .Columns(18)は列ではR列を指定している。
結局A列のデータ行数(セル範囲)だけ、R列における範囲でもでも考えている。
その場合は、Range("R2","R" & d) と書ける。dはA列最終データ行番号。
テスト例
Sub test06()
d = Range("A" & Rows.Count).End(xlUp).Row
MsgBox d
Range("R2:R" & d).FormulaLocal = "=A2"
End Sub
これでR2:R5に、=A2.=A3,=A4・・の式が入った(とりあえず簡略例)。
ーー
上記テストでは=A2にした部分は、質問では
"=if(count(rc[-9],rc[-8])=2,rc[-9]*rc[-8],"""")"
そこで
テスト例で
Sub test07()
d = Range("A" & Rows.Count).End(xlUp).Row
MsgBox d
MsgBox "=IF(COUNT(I2:I" & d & ")=2,J2*K2,"""")"
Range("R2:R" & d).FormulaLocal = "=IF(COUNT(J2:J" & d & ")=2,J2*K2,"""")"
End Sub
ーー
テストデータ
A列
A3=2
A5=5
以下A列は空白セル。
このA5が最下行の5を決定
ーー
J列 K列
ー
32
ー
46
ー
ー52
J2:J5 にある数字データが2セルで条件に合致
その場合
R列にはR2:R5
ー
6
ー
24
でシートの式は、R2は
=IF(COUNT(J2:J5)=2,J2*K2,"")
===
日頃はR1C1を使わず慣れないものだから「面倒なことだ。
No.1
- 回答日時:
>.FormulaR1C1 = "=if(count(rc[-9],rc[-8])=2,rc[-9]*rc[-8],"""")"
「,」ではなく「:」の間違いですね。
.FormulaR1C1 = "=if(count(rc[-9]:rc[-8])=2,rc[-9]*rc[-8],"""")"
以下でためしてください。
.Formula = "=IF(COUNT(J2:K2)=2,J2*K2,"""")"
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) まとめシートから集計シートへA列のコードが一致したら1行コピーするマクロをネット上で見つけました。こ 1 2022/08/30 14:11
- Visual Basic(VBA) ローマ字、ハイフン付きの並び替え ローマ字抽出方法 Excelマクロ 4 2022/04/01 14:10
- Visual Basic(VBA) Sheet3から2つの条件でオートフィルターで抽出した個数をSheet2へ入力するマクロで、一つ目の 4 2023/01/12 23:40
- Visual Basic(VBA) 前回ご教授いただいたコードに覚えたてのループ処理で品名りんごAから順に20回for nextでループ 7 2023/01/13 22:01
- Excel(エクセル) vba userformで漢字を全角カタカナに 2 2022/07/24 15:38
- Visual Basic(VBA) VBAが止まります。 3 2022/08/31 14:09
- Visual Basic(VBA) 最終列の右へSUM関数を作成するため下記コードを実行しましたが、最終列「10月28日」が上書きされて 3 2022/12/05 20:32
- Visual Basic(VBA) ユーザーフォームに2つのコンボボックス銀行名「ConboBox1」支店名を「ConboBox2」とし 4 2022/08/03 17:34
- Visual Basic(VBA) excel2021で実行できないマクロ。どこを直したらいいのか 2 2022/03/28 03:40
- Visual Basic(VBA) VBAでoutlook365が起動しません。 4 2022/08/25 13:31
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルでの作業計算方法について
-
Microsoft1Officeの互換ソフト...
-
【マクロ】その時、その時で変...
-
はがきについて。
-
【マクロ】読取専用のファイル...
-
エクセル初心者です 関数の入れ...
-
【関数】適切な文字数の数字を...
-
LOOKUP関数を使えばいいのでし...
-
【関数】先頭だけにある、半角...
-
Excel ピボットテーブルで日付...
-
Excelのpivotについて質問です
-
時間によってファイル名が変わ...
-
エクセル 白黒印刷で白線を印刷...
-
Aというブックの1というシート...
-
エクセル関数を教えてください
-
WPS OFFICEでの縦書きについて
-
Excelのチェックボックスの使い...
-
エクセルの条件付き書式につい...
-
エクセルのセルに同じ大きさの...
-
エクセルの関数について教えて...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel 2019 のピボットテーブル...
-
[関数得意な方]教えて下さい・...
-
Excelにてある膨大なデータを管...
-
[関数について]わかる方教えて...
-
Excel初心者です。 詳しい方、...
-
excelの不要な行の削除ができな...
-
エクセル関数に詳しい方教えて...
-
INDIRECTを使わず excelで複数...
-
[オートフィルタ]で抽出された...
-
エクセルの神よ、ご回答を! エ...
-
エクセル関数に詳しい方、教え...
-
各ページの1番上の表示について
-
Excelで写真のような表を作った...
-
エクセルで不等号記号(≠)が上に...
-
数学 Tan(θ)-1/Cos(θ)について...
-
Excel 2019 は、SPILL機能があ...
-
Excelで全角を半角にしたいので...
-
条件付き書式を教えてください
-
Excel フィルターを掛けた状態...
-
[オートフィルタ]の適用範囲の...
おすすめ情報