• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:特定の文字を含むセルのコピー)

特定の文字を含むセルのコピー

このQ&Aのポイント
  • エクセルで特定の文字を含むセルのコピーをする方法を教えてください。
  • セルのデータの中から特定の文字を含むセルのみを別のシートにコピーする方法を教えてください。
  • マクロを使って特定の文字を含むセルのみをシート2にコピーする方法を教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.2

一例です。 特定文字の大小文字、全半角は区別せず抽出しています。 特定する場合はMatchcase(大小文字)、matchbyte(全半角)をTrueで 調整して下さい。 Sub Sample() Set pos = Cells.Find(What:="AB", _ lookat:=xlPart, MatchCase:=False, matchbyte:=False) If pos Is Nothing Then Exit Sub Set pos1st = pos Do Sheets("sheet2").Cells(pos.Row, pos.Column) = pos Set pos = Cells.FindNext(pos) Loop Until pos.Address = pos1st.Address End Sub

Knyako
質問者

お礼

回答、ありがとうございます。 早いですね。一瞬だったんで最初、2回も実行してしまいました(笑) 大小文字、全半角も選べてありがたいです。 応用もできそうです。大切にします。 ありがとうございます。

その他の回答 (4)

  • mitarashi
  • ベストアンサー率59% (574/965)
回答No.5

#4です。検索文字を与えるところで、折角設定した定数を使っていませんでした If Not (buf(i, j) Like ("*" & searchWord & "*")) Then buf(i, j) = Empty に変更して下さい。失礼いたしました。

Knyako
質問者

お礼

2つも教えていただきありがとうございます。 いろいろな方法があるのですね。勉強になります。 この変部分は、 Sub test2() Dim targetRange As Range Dim buf As Variant Dim i As Long, j As Long Const searchWord As String = "AB" Set targetRange = Worksheets(1).Range("A1").CurrentRegion buf = targetRange For i = 1 To UBound(buf, 1) For j = 1 To UBound(buf, 2) If Not (buf(i, j) Like ("*" & searchWord & "*")) Then buf(i, j) = Empty Next j Next i Worksheets(2).Range(targetRange.Address) = buf End Sub という風に変更ということですね。 わざわざご丁寧にありがとうございます。

  • mitarashi
  • ベストアンサー率59% (574/965)
回答No.4

#3です。もう一つ思いつきました。やっている事は#1に類似ですが、速いと思います。 Sub test2() Dim targetRange As Range Dim buf As Variant Dim i As Long, j As Long Const searchWord As String = "AB" '全角の例 Set targetRange = Worksheets(1).Range("A1").CurrentRegion buf = targetRange For i = 1 To UBound(buf, 1) For j = 1 To UBound(buf, 2) If Not (buf(i, j) Like "*AB*") Then buf(i, j) = Empty Next j Next i Worksheets(2).Range(targetRange.Address) = buf End Sub

  • mitarashi
  • ベストアンサー率59% (574/965)
回答No.3

一応マクロでやっています。全角と半角は区別しますので、ご注意下さい。 Sub test() Dim targetRange As Range Const searchWord As String = "AB" '全角の例 Set targetRange = Worksheets(1).Range("A1").CurrentRegion With Worksheets(2) .Range(targetRange.Address).FormulaR1C1 = "=IF(ISERROR(FIND(""" & searchWord & """," & Worksheets(1).Name & "!RC)),""""," & Worksheets(1).Name & "!RC)" .Range(targetRange.Address).Value = .Range(targetRange.Address).Value End With End Sub

  • xls88
  • ベストアンサー率56% (669/1189)
回答No.1

試してください。 (全角限定の例) Dim c As Range For Each c In Sheets("Sheet1").Range("A1:C3") If c.value Like "*AB*" Then '★1 c.Copy Sheets("Sheet2").Range(c.Address) '★2 End If Next (半角全角共コピーする例) ★1の処を下記に変えてください。 If StrConv(c.value, vbNarrow) Like "*AB*" Then ★2の処は下記でも大丈夫です。 Sheets("Sheet2").Range(c.Address).value = c.value

Knyako
質問者

お礼

早速の回答ありがとうございます。 無事にデータの写しかえを行なうことが出来ました。 ありがとうございます。

関連するQ&A