- ベストアンサー
VBAで該当しない場合に「0」と表記する方法について
- VBAで特定の条件に該当しない場合に「0」と表記する方法について教えてください。
- 質問者さんは、特定の条件に該当するデータがない場合に「0」と表示したいと考えています。
- 現在のコードでは、関係のない部分まで「0」と変換されてしまっています。どの部分に何を追加すれば良いでしょうか?
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
最初に0入れちゃえばいいと思います。 'アクティブシートのB列の値を検査「名前」とする For nName = 1 To Cells(Rows.Count, 2).End(xlUp).Row sTargetName = Sheets(nActSheet).Range("B" & nName) '(先に0を入れておく) Range("K" & nName) = 0 Range("M" & nName) = 0 '右側のシートを1シートづつ検査対象シートとする For nSheet = (nActSheet + 1) To nCount
その他の回答 (2)
- watabe007
- ベストアンサー率62% (476/760)
こんにちは、参考に Sub Test() Dim c As Range Dim ws As Worksheet Dim meR As Variant If ActiveSheet.Index = Worksheets.Count Then Exit Sub For Each c In Range("B1", Cells(Rows.Count, "B").End(xlUp)) Cells(c.Row, "K").Value = 0 Cells(c.Row, "M").Value = 0 For Each ws In Worksheets If ActiveSheet.Index < ws.Index Then myR = Application.Match(c.Value, ws.Range("B5:B60"), 0) If Not IsError(myR) Then Cells(c.Row, "K").Value = ws.Cells(myR + 4, "N").Value Cells(c.Row, "M").Value = ws.Cells(myR + 4, "P").Value Exit For End If End If Next Next End Sub
お礼
回答ありがとうございました。 そのままコピペしても思ったとおり実行できました(o^-^o) それにしても、こんなのをサクサクっと作れちゃうってスゴイですね。 私ももっと勉強します!!
- keithin
- ベストアンサー率66% (5278/7941)
多分ご質問の最も簡単な解決手順としては, 1.先に全部に(初期値としての)ゼロを埋めておく 2.現行のマクロで,該当データはゼロから所定の値に書き換えさせる で十分と思われます。 その上で,ご自分でももっとマクロを勉強してみたいというお話なら。 基本的な制御構造は If 名前があったら 探して転記する Else 無かったのでゼロを入れる End If のようになりそうです。 つまり… <抜粋> '検査対象シートのB列に検査「名前」があるか確認 If Application.WorksheetFunction.CountIf(Worksheets(nSheet).Range("B5:B60"), sTargetName) > 0 Then '---『「名前」があればN、P列の値をアクティブシートのK、M列に入れる』--- Exit For '1つ見つかったらその「名前」の検査は終了 ’↓ここから追加 Else ’---『「名前」が無かったので,どこかの列のどこかの行のセルにゼロを入れる』--- ’このタイミングでどこにゼロを入れたいのか,ご説明ではまだ不明です ’「K列とM列の5行目~34行目まで」にゼロを入れるのでは無さそうです。 ’↑ここまで End If もう少し検討してみてください。
お礼
回答有難うございました。 If 名前があったら 探して転記する Else 無かったのでゼロを入れる End If このタイミングで私もやってみてたんですが、出来なかったので、何で!?でした。 多分「無かったのでゼロを入れる」って命令文が変だったんでしょうね(⌒_⌒;
お礼
ありがとうございました。 思ったとおりに実行できました(o^-^o)