Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


8864 / 76732 ←次へ | 前へ→

【73436】Re:含まれる文字に応じ別の列にフラグを立てるには
発言  UO3  - 13/1/10(木) 12:56 -

引用なし
パスワード
   ▼にしもり さん:

こんにちは

v = .Range("A2", .Range("A" & .Rows.Count).End(xlUp)).Offset(, 4).Value

これを

v = .Range("A2", .Range("A" & .Rows.Count).End(xlUp)).Offset(, 15).Value

このように直されましたね。
もともとの
v = .Range("A2", .Range("A" & .Rows.Count).End(xlUp)).Offset(, 4).Value
この意味は、
A2からA列最終データまでの1列の領域の4つ右の領域、つまりE列の領域です。
そのE列の領域を取り込んだ●行1列の配列に対して
ReDim Preserve v(1 To UBound(v, 1), 1 To 3) で、列を2つ追加。(F,G列用)
その追加した2列目、3列目に、1列目の値(元のE列の値)を参照しながら
1 をセットしていって、最後に、この3列分の配列を E2:G● までに、どさっと上書き。
こんな処理です。

ところが

v = .Range("A2", .Range("A" & .Rows.Count).End(xlUp)).Offset(, 15).Value

これは E列の領域ではなく、A列から15右、つまり、P列の領域になります。
おそらく、そこは空白でしょうから海でも山でもない。したがって、2列目、3列目に1がたたない。
で、その結果の3列(1列目は空白)を、E2:G●にどさっと上書きしますのですべて空白になります。

ところで、これだけ対象が増えたということを考えますと、別の方法(正規表現といわれるもの等)が
よろしいかとは思いますが、にしもりさんにとっては、きわめてわかりにくいコードになると
思われますので、現在の処理構成のままにしてあります。

Sub Sample2()
  Dim v As Variant
  Dim i As Long

  With Sheets(1)
    v = .Range("A2", .Range("A" & .Rows.Count).End(xlUp)).Offset(, 4).Value
    ReDim Preserve v(1 To UBound(v, 1), 1 To 16)  '★
    For i = 1 To UBound(v, 1)
      If v(i, 1) Like "*海*" Then v(i, 2) = 1
      If v(i, 1) Like "*山*" Then v(i, 3) = 1
      If v(i, 1) Like "*川*" Then v(i, 4) = 1
      If v(i, 1) Like "*池*" Then v(i, 5) = 1
      If v(i, 1) Like "*森*" Then v(i, 6) = 1
      If v(i, 1) Like "*林*" Then v(i, 7) = 1
      If v(i, 1) Like "*木*" Then v(i, 8) = 1
      If v(i, 1) Like "*空*" Then v(i, 9) = 1
      If v(i, 1) Like "*星*" Then v(i, 10) = 1
      If v(i, 1) Like "*月*" Then v(i, 11) = 1
      If v(i, 1) Like "*光*" Then v(i, 12) = 1
      If v(i, 1) Like "*夢*" Then v(i, 13) = 1
      If v(i, 1) Like "*幻*" Then v(i, 14) = 1
      If v(i, 1) Like "*音*" Then v(i, 15) = 1
      If v(i, 1) Like "*波*" Then v(i, 16) = 1
 
    Next
    .Range("E2").Resize(UBound(v, 1), UBound(v, 2)).Value = v
  End With
 
End Sub
222 hits

【73431】含まれる文字に応じ別の列にフラグを立てるには にしもり 13/1/9(水) 17:20 質問
【73432】Re:含まれる文字に応じ別の列にフラグを立... UO3 13/1/9(水) 21:28 発言
【73433】Re:含まれる文字に応じ別の列にフラグを立... にしもり 13/1/10(木) 10:06 質問
【73436】Re:含まれる文字に応じ別の列にフラグを立... UO3 13/1/10(木) 12:56 発言
【73437】Re:含まれる文字に応じ別の列にフラグを立... にしもり 13/1/10(木) 15:31 質問
【73438】Re:含まれる文字に応じ別の列にフラグを立... UO3 13/1/10(木) 15:51 発言
【73439】Re:含まれる文字に応じ別の列にフラグを立... にしもり 13/1/10(木) 16:21 お礼

8864 / 76732 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free