トップ回答者
For Next構文の使い方について

質問
-
Excel2010で、For Nextを利用して、基本データの表から空白以外の数値を抽出し、特定のシートに貼り付けるプログラムを考えております。
Set Dic = CreateObject("Scripting.Dictionary")
On Error Resume NextFor i = 2 To Y 'Y = Sheets("基本データ").Cells(Rows.Count, 3).End(xlUp).Row
buf = Format(Sheets("基本データ").Cells(i, 3).Value) 'データがあった場合は、特定のシートに貼り付けられる。
Dic.Add buf, buf
If Sheets("基本データ").Cells(i, 3).Value = "" Then 'データが空白の場合は、Forから抜ける。
Exit For
End If
Next iこのとき、参照元の「Sheets("基本データ").Cells(i, 3)」のセルに、
=if('変換前データ'!A??="","",'変換前データ'!A??)
という数式が入っていて実行すると、抽出しない空白("")の行も抽出してしまいます(※ ??は、行数です。)。
これを抽出しないようにするには、どうすればよいのでしょうか?ご教示のほど、よろしくお願いします。
回答
-
通りすがりのOfficeユーザーさんは 初心者かも...
「...実行すると、抽出しない空白("")の行も抽出してしまいます」
単純に Dic.Add buf, buf の場所が悪いだけではなかろうか?
「On Error Resume Next」ということは、空白セルがあっても止めたくないということか...For i = 2 To Y
[追加]2018-01-25 Thu. 18:58
If Sheets("Sheet1").Cells(i, 3).Value = "" Then
GoTo SKIP1
End If
buf = Format(Sheets("Sheet1").Cells(i, 3).Value)
Dic.Add buf, buf 'ここにもってくるのじゃ
SKIP1:
Next i
あ そうか、"Dic.Add buf, buf "は、二重登録をしようとするとエラーになるので それで、
"On Error Resume Next" を入れているのか。- 編集済み ery srow 2018年1月25日 10:00
- 回答としてマーク 通りすがりのOfficeユーザー 2018年2月26日 4:40
すべての返信
-
どのような条件で判断されたいのか正確にわからないのですが、例えば、
Sheets("基本データ").Cells(i, 3).Formula
で、そのCellに入っている式が取得できますので、式が入っていればという条件分岐することができます。上記が見当違いの場合、実現されたいことをもう少し教えていただくと、的確な回答が早く付きやすくなると思います。
★良い回答には質問者は回答済みマークを、閲覧者は投票を!
- 回答の候補に設定 francois_k 2018年1月31日 2:25
-
通りすがりのOfficeユーザーさんは 初心者かも...
「...実行すると、抽出しない空白("")の行も抽出してしまいます」
単純に Dic.Add buf, buf の場所が悪いだけではなかろうか?
「On Error Resume Next」ということは、空白セルがあっても止めたくないということか...For i = 2 To Y
[追加]2018-01-25 Thu. 18:58
If Sheets("Sheet1").Cells(i, 3).Value = "" Then
GoTo SKIP1
End If
buf = Format(Sheets("Sheet1").Cells(i, 3).Value)
Dic.Add buf, buf 'ここにもってくるのじゃ
SKIP1:
Next i
あ そうか、"Dic.Add buf, buf "は、二重登録をしようとするとエラーになるので それで、
"On Error Resume Next" を入れているのか。- 編集済み ery srow 2018年1月25日 10:00
- 回答としてマーク 通りすがりのOfficeユーザー 2018年2月26日 4:40