いつもこちらの識者の方々にはお世話になっています。
VBAの質問です。
やりたいことは下記構文を見ていただければわかると思うのですが、
------------------------------------------------------------------------------
Sub Test()
Dim f As Long
Dim lRow As Long
lRow = Cells(Rows.Count, 1).End(xlUp).Row
For f = lRow To 2 Step -1
If Cells(f, 2).Value = "りんご" Then
Cells(f, 2).EntireRow.Delete
Else
Cells(f, 2).Value = Cells(f, 2) & "0" & Cells(f, 3)
Cells(f, 18).Value = If Cells(f, 4).value = 1 Then Cells(f, 13) Else Cells(f, 14) Endif
End If
Next f
End Sub
------------------------------------------------------------------------------
Cells(f, 18).Value = If Cells(f, 4).value = 1 Then Cells(f, 13) Else Cells(f, 14) Endif
の部分が解決したい部分になります。
IFで条件分岐したあとの処理にさらにIFで分岐を加えたいのですが、無茶だと思いつつやってみたらやはり通りませんでした。
こういうのはなんというのでしょうか、ネストとも違うと思うのですが・・・
上記のような場合、どのような構文が適していますでしょうか。
No.2ベストアンサー
- 回答日時:
> Cells(f, 18).Value = If Cells(f, 4).value = 1 Then Cells(f, 13) Else Cells(f, 14) Endif
こういう場合は、三項演算子を利用します。
Cells(f, 18).Value = IIf(Cells(f, 4).value = 1, Cells(f, 13), Cells(f, 14))
三項演算子を2つも3つも組み合わせて利用することも可能です。
ex)
IIf(value = 1, "a", IIf(value = 2, "b", "c"))
No.1
- 回答日時:
「if」の中に「if」っていうのはよく使いますよ。
この場合には
Sub Test()
Dim f As Long
Dim lRow As Long
lRow = Cells(Rows.Count, 1).End(xlUp).Row
For f = lRow To 2 Step -1
If Cells(f, 2).Value = "りんご" Then
Cells(f, 2).EntireRow.Delete
Else
Cells(f, 2).Value = Cells(f, 2) & "0" & Cells(f, 3)
If Cells(f, 4).value = 1 Then
Cells(f, 18).Value = Cells(f, 13)
Else
Cells(f, 18).Value = Cells(f, 14)
end if
End If
Next f
End Sub
が正しいですね!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
- Excel(エクセル) VBAの指示の内容 昨日こちらでご教示頂いたのですが初心者な為、一つ一つの指示が何をやっているのかわ 2 2022/10/25 18:08
- Excel(エクセル) なぜExit Subがあるのかわかりません 4 2023/02/19 12:34
- Visual Basic(VBA) VBA 別ブックからの転記の高速化について VBA 別ブックからの転記の高速化についてご教授下さい。 19 2022/07/26 13:07
- Visual Basic(VBA) VBA処理追加 こちらでご教示頂いたのですが回答完了させてしまいましたのでこちらからまた質問させてく 2 2022/10/27 09:57
- Visual Basic(VBA) 【VBA】特定のワードが入っている行全体を塗りつぶしたい 4 2022/04/20 15:22
- Visual Basic(VBA) vbaを早くしたい 5 2022/09/09 10:58
- Visual Basic(VBA) VBAで実行時エラー'424' オブジェクトが必要ですと出る 2 2022/10/07 09:25
- Visual Basic(VBA) いつもお世話になっております、VBAで教えて頂きたいのですが 2 2022/05/05 22:20
- Excel(エクセル) マクロで最終行から上に検索を逆にしたい 1 2022/05/17 18:27
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
横にコピーするマクロを教えて...
-
VBAマクロ実行時エラーの修正に...
-
エクセルで特定の文字列が入っ...
-
VBA シートをコピーする際に Co...
-
【Excel関数】UNIQUE関数で"0"...
-
マクロの「SaveAs」でエラーが...
-
Excelで、あるセルの値に応じて...
-
B列の最終行までA列をオート...
-
[EXCEL]ボタン押す→時刻が表に...
-
エクセルVBAが途中で止まります
-
IIF関数の使い方
-
Excel VBAでのWorksheet_Change...
-
「段」と「行」の違いがよくわ...
-
Worksheets メソッドは失敗しま...
-
エクセルで離れた列を選択して...
-
あああ..ああい..ああう とい...
-
(マクロ)データをAブックからB...
-
LEFT関数とIF関数の組み合わせ...
-
Excel UserForm の表示位置
-
特定の文字がある行以外を削除...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
横にコピーするマクロを教えて...
-
UWSCを使用して、ドロップダウ...
-
強調構文について It is only a...
-
VBAでJavaScriptを動かす方法
-
英文の和訳をお願い
-
エクセルの数字を貼り付けたい ...
-
excel vba
-
バイトを変換するスクリプト
-
ホームページの資料請求フォー...
-
エクセルで特定の文字列が入っ...
-
VBAマクロ実行時エラーの修正に...
-
マクロの「SaveAs」でエラーが...
-
VBA シートをコピーする際に Co...
-
エクセル マクロ オートフィ...
-
【Excel関数】UNIQUE関数で"0"...
-
エクセルで離れた列を選択して...
-
Worksheets メソッドは失敗しま...
-
VLOOKUPの列番号の最大は?
-
Excelで、あるセルの値に応じて...
-
B列の最終行までA列をオート...
おすすめ情報