[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『表の特定文字を含む列を別シートに転記する方法』(りょー)
表の特定文字を含む列を別シートに転記する方法を教えてください。
下記コードで動くと思ったのですが、うまくいきません。
どなたかご教示頂けないでしょうか。
シート「1」T列にある「あ」が含まれる行全てを
シート「検索結果」に張り付ける。
Sub サンプル()
Dim i As Long
Dim j As Long
Dim rw As Long
Sheets("1").Activate
rw = Cells(Rows.Count, 1).End(xlUp).Row
j = 1
For i = 2 To rw
If InStr(Cells(i, 20), あ) <> 0 Then
With Worksheets("検索結果")
.Cells(j, 1).Entirerow = Cells(i, 1).Entirerow
j = j + 1
End With
End If
Next i
End Sub
< 使用 Excel:Office365、使用 OS:Windows10 >
Dim rw As Long
Dim あ = "あ" '追加
Sheets("1").Activate
(ひまつぶし) 2021/09/10(金) 14:42
多分りょーさんは >If InStr(Cells(i, 20), "あ") <> 0 Then としたつもりなのだろう。 VBAのオプションで変数の宣言を強制するにチェックを入れておけばVBA入力時に気づけただろう。 (ねむねむ) 2021/09/10(金) 15:07
あ に ""をつけ忘れておりました。
""をつけて実行したのですが、うまく認識できません。
エラーは出ないのですが、検索結果にコピーがしません。
どなたかご教示頂けないでしょうか。
(りょー) 2021/09/10(金) 15:36
.Cells(j, 1).EntireRow.Value = Cells(i, 1).EntireRow.Value
(めざめるパワー) 2021/09/10(金) 15:53
レイアウトが示されていないので、実はA列が空っぽでFor〜Nextが1件も処理されてないとか、コードの問題ではなく、実験環境側の問題であることも考えられます。
また、別案となりますが、
(1) InStr関数ではなくLike演算子を使う (2) 逐一コピーするのではなく、対象のセルをピックアップしておいてから、一気にコピペする
といったアプローチもあると思うので紹介しておきます。
Option Explicit
Sub 別案()
Dim i As Long
Dim MyRNG As Range
Stop 'ブレークポイントの代わり
With Worksheets("1")
For i = 2 To .Cells(.Rows.Count, "A").End(xlUp).Row
If .Cells(i, "T").Value Like "*あ*" Then
If MyRNG Is Nothing Then
Set MyRNG = .Cells(i, "T")
Else
Set MyRNG = Union(MyRNG, .Cells(i, "T"))
End If
End If
Next i
End With
If Not MyRNG Is Nothing Then
MyRNG.EntireRow.Copy Worksheets("検索結果").Range("A1")
End If
End Sub
(もこな2) 2021/09/10(金) 15:55
(もこな2 ) 2021/09/20(月) 18:31
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.