Page 450 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 通常モードに戻る ┃ INDEX ┃ ≪前へ │ 次へ≫ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ▼文字列の検索について NH 02/11/1(金) 19:39 ┣Re:文字列の検索について りん 02/11/1(金) 21:15 ┗Re:文字列の検索について カド 02/11/1(金) 22:16 ┗Re:文字列の検索について NH 02/11/2(土) 9:17 ┣Re:文字列の検索について りん 02/11/2(土) 9:31 ┃ ┣Re:文字列の検索について NH 02/11/2(土) 19:50 ┃ ┗Re:文字列の検索について あみやき 02/12/10(火) 13:50 ┃ ┗Re:文字列の検索について Jaka 02/12/12(木) 10:08 ┃ ┗Re:文字列の検索について あみやき 02/12/12(木) 10:23 ┗Re:文字列の検索について カド 02/11/2(土) 19:51 ┗Re:文字列の検索について NH 02/11/3(日) 20:11 ─────────────────────────────────────── ■題名 : 文字列の検索について ■名前 : NH ■日付 : 02/11/1(金) 19:39 -------------------------------------------------------------------------
すいませんが、お知恵を拝借させてください。 あるシートのD列を見てこれまたある文字、例えばAAAAがある 行をシート1に書き出したいんですが、どういう操作をすればい いのか、教えていただきたいのですが(当然、該当する行は複数の 時もあれば全くない時もあるのですけど)。 |
NH さん、こんばんわ。 >すいませんが、お知恵を拝借させてください。 >あるシートのD列を見てこれまたある文字、例えばAAAAがある >行をシート1に書き出したいんですが、どういう操作をすればい >いのか、教えていただきたいのですが(当然、該当する行は複数の >時もあれば全くない時もあるのですけど)。 1.あるシートのD列をFindメソッドを使って検索をかける 2.該当セルが見つかったら、行をまるまるシート1にコピペ 3.FindNextで最初のセルがヒットするまで検索を続ける という手順を踏めばいいかも。 上から順に行の数だけループして探す方法もあります。 |
▼NH さん: こんなのでいいですか〜 Sub Macro2() x = 1 Worksheets("sheet2").Activate For Each aa In Range("d1:d100") If aa = "AAAA" Then Do Until Worksheets("sheet1").Range("d" & x) = "" x = x + 1 Loop Range(aa.Row & ":" & aa.Row).Copy Worksheets("sheet1").Range(x & ":" & x) End If Next End Sub |
▼カド さん: >▼NH さん: > >こんなのでいいですか〜 > >Sub Macro2() > x = 1 > Worksheets("sheet2").Activate > For Each aa In Range("d1:d100") > > If aa = "AAAA" Then > > Do Until Worksheets("sheet1").Range("d" & x) = "" > x = x + 1 > Loop > > Range(aa.Row & ":" & aa.Row).Copy Worksheets("sheet1").Range(x & ":" & x) > End If > Next >End Sub カド さん すいません、正確に言うべきでした。文字列が含まれる行を…なんです よ。ですから”=”では検索出来ないんです(/_;)。やはり、りんさんの言う様に Findを使うべきなんでしょうが、その使い方がヘルプを見てもいまいち?な状態 なんで、ここの投稿させていただいたんですが。 |
NH さん、カド さん、おはようございます。 >Findを使うべきなんでしょうが、その使い方がヘルプを見てもいまいち?な状態 >なんで、ここの投稿させていただいたんですが。 V3ログ有効活用。 http://www21.tok2.com/home/vbalab/bbs/c-board.cgi?cmd=one;no=11651;id=Excel のコードをちょこっといじくって。 Sub test() Dim ws1 As Worksheet, ws2 As Worksheet Dim r1 As Range Dim wstr$, R1Pos$, RR& ' wstr$ = InputBox("検索する文字", "入力してください", "") '何かしら入力 ' RR& = 0 If wstr$ <> "" Then Set ws1 = ActiveWorkbook.Worksheets("Sheet1") '検索 シート Set ws2 = ActiveWorkbook.Worksheets("Sheet2") '貼付先シート '完全一致でシートの頭から検索(D列) With ws1.Columns("D") 'D1セルがヒットする場合に最後になるのでちょっと工夫(After)。 Set r1 = .Find(What:=wstr$, _ LookAt:=xlPart, _ After:=.Cells(.Cells.Count)) ' If r1 Is Nothing Then MsgBox "ありません", vbInformation, wstr$ Else '最初に見つかったセル R1Pos$ = r1.Address Do RR& = RR& + 1 '行コピペ R1.EntireRow.Copy destination := ws2.Cells(RR&,1) '連続検索はFindNext Set r1 = .FindNext(r1) Loop While r1.Address <> R1Pos$ Set r1 = Nothing End If End With Set ws1 = Nothing: Set ws2 = Nothing Else MsgBox "検索文字(列)未指定", vbCritical End If End Sub こんな感じです。 |
▼りん さん: >NH さん、カド さん、おはようございます。 > >>Findを使うべきなんでしょうが、その使い方がヘルプを見てもいまいち?な状態 >>なんで、ここの投稿させていただいたんですが。 > >V3ログ有効活用。 > >http://www21.tok2.com/home/vbalab/bbs/c-board.cgi?cmd=one;no=11651;id=Excel >のコードをちょこっといじくって。 > >Sub test() > Dim ws1 As Worksheet, ws2 As Worksheet > Dim r1 As Range > Dim wstr$, R1Pos$, RR& > ' > wstr$ = InputBox("検索する文字", "入力してください", "") > '何かしら入力 > ' > RR& = 0 > If wstr$ <> "" Then > Set ws1 = ActiveWorkbook.Worksheets("Sheet1") '検索 シート > Set ws2 = ActiveWorkbook.Worksheets("Sheet2") '貼付先シート > '完全一致でシートの頭から検索(D列) > With ws1.Columns("D") > 'D1セルがヒットする場合に最後になるのでちょっと工夫(After)。 > Set r1 = .Find(What:=wstr$, _ > LookAt:=xlPart, _ > After:=.Cells(.Cells.Count)) > ' > If r1 Is Nothing Then > MsgBox "ありません", vbInformation, wstr$ > Else > '最初に見つかったセル > R1Pos$ = r1.Address > Do > RR& = RR& + 1 > '行コピペ > R1.EntireRow.Copy destination := ws2.Cells(RR&,1) > '連続検索はFindNext > Set r1 = .FindNext(r1) > Loop While r1.Address <> R1Pos$ > Set r1 = Nothing > End If > End With > Set ws1 = Nothing: Set ws2 = Nothing > Else > MsgBox "検索文字(列)未指定", vbCritical > End If >End Sub > >こんな感じです。 有り難うございます〜。テストさせていただいたらばっちりでした! 感謝m(__)m。 |
りん さん、こんにちは。 横レス失礼いたします。 下記の処理の検索対象のものを行でコピーするの処理を 例えば、d列を検索し、検索にかかった行のAのセルのみを ワークシート2のセルc1から順に格納する処理をするにはどうしたらよろしいでしょうか? お忙しいところ、申し訳ございませんが、ご指導ねがいます。 >Sub test() > Dim ws1 As Worksheet, ws2 As Worksheet > Dim r1 As Range > Dim wstr$, R1Pos$, RR& > ' > wstr$ = InputBox("検索する文字", "入力してください", "") > '何かしら入力 > ' > RR& = 0 > If wstr$ <> "" Then > Set ws1 = ActiveWorkbook.Worksheets("Sheet1") '検索 シート > Set ws2 = ActiveWorkbook.Worksheets("Sheet2") '貼付先シート > '完全一致でシートの頭から検索(D列) > With ws1.Columns("D") > 'D1セルがヒットする場合に最後になるのでちょっと工夫(After)。 > Set r1 = .Find(What:=wstr$, _ > LookAt:=xlPart, _ > After:=.Cells(.Cells.Count)) > ' > If r1 Is Nothing Then > MsgBox "ありません", vbInformation, wstr$ > Else > '最初に見つかったセル > R1Pos$ = r1.Address > Do > RR& = RR& + 1 > '行コピペ > R1.EntireRow.Copy destination := ws2.Cells(RR&,1) > '連続検索はFindNext > Set r1 = .FindNext(r1) > Loop While r1.Address <> R1Pos$ > Set r1 = Nothing > End If > End With > Set ws1 = Nothing: Set ws2 = Nothing > Else > MsgBox "検索文字(列)未指定", vbCritical > End If >End Sub > >こんな感じです。 |
▼あみやき さん: >りん さん、こんにちは。 >横レス失礼いたします。 > >下記の処理の検索対象のものを行でコピーするの処理を >例えば、d列を検索し、検索にかかった行のAのセルのみを >ワークシート2のセルc1から順に格納する処理をするにはどうしたらよろしいでしょうか? >お忙しいところ、申し訳ございませんが、ご指導ねがいます。 私ですみませんが、 最近のりんさんは、バックレ気味みたいですので...。 こう言う場合、新規に質問して過去のアドレスを書いておいた方が、目に付きやすくて良かったかも。 前は、そんな事無かったみたいですけど..。 R1.EntireRow.Copy destination := ws2.Cells(RR&,1) ↓ R1.Offset(, -3).Copy Destination:=ws2.Cells(RR&, "C") |
Jaka さん、こんにちは。 いつもいつも、ご指導ありがとうございます。さっそく試してみたいと思います。 本当に助かります。 |
▼NH さん: それじゃこれでいいですか〜 Sub Macro222() x = 1 Worksheets("sheet2").Activate For Each aa In Range("d1:d100") Set c = aa.Find("AAAA", LookIn:=xlValues) If Not c Is Nothing Then Do Until Worksheets("sheet1").Range("d" & x) = "" x = x + 1 Loop Range(aa.Row & ":" & aa.Row).Copy Worksheets("sheet1").Range(x & ":" & x) End If Next End Sub |
▼カド さん: >▼NH さん: >それじゃこれでいいですか〜 >Sub Macro222() > x = 1 > Worksheets("sheet2").Activate > For Each aa In Range("d1:d100") > > Set c = aa.Find("AAAA", LookIn:=xlValues) > If Not c Is Nothing Then > Do Until Worksheets("sheet1").Range("d" & x) = "" > x = x + 1 > Loop > Range(aa.Row & ":" & aa.Row).Copy Worksheets("sheet1").Range(x & ":" & x) > End If > Next >End Sub カド さん 有り難うございます。テストさせていただきまして、これもOKみたいです。これからもよろしくお願いしますm(__)m。 |