過去ログ

                                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に書き出したいんですが、どういう操作をすればい
いのか、教えていただきたいのですが(当然、該当する行は複数の
時もあれば全くない時もあるのですけど)。
 ───────────────────────────────────────  ■題名 : Re:文字列の検索について  ■名前 : りん <rin_doggie@hotmail.com>  ■日付 : 02/11/1(金) 21:15  -------------------------------------------------------------------------
   NH さん、こんばんわ。
>すいませんが、お知恵を拝借させてください。
>あるシートのD列を見てこれまたある文字、例えばAAAAがある
>行をシート1に書き出したいんですが、どういう操作をすればい
>いのか、教えていただきたいのですが(当然、該当する行は複数の
>時もあれば全くない時もあるのですけど)。

1.あるシートのD列をFindメソッドを使って検索をかける
2.該当セルが見つかったら、行をまるまるシート1にコピペ
3.FindNextで最初のセルがヒットするまで検索を続ける

という手順を踏めばいいかも。

上から順に行の数だけループして探す方法もあります。
 ───────────────────────────────────────  ■題名 : Re:文字列の検索について  ■名前 : カド  ■日付 : 02/11/1(金) 22:16  -------------------------------------------------------------------------
   ▼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
 ───────────────────────────────────────  ■題名 : Re:文字列の検索について  ■名前 : NH  ■日付 : 02/11/2(土) 9:17  -------------------------------------------------------------------------
   ▼カド さん:
>▼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を使うべきなんでしょうが、その使い方がヘルプを見てもいまいち?な状態
なんで、ここの投稿させていただいたんですが。
 ───────────────────────────────────────  ■題名 : Re:文字列の検索について  ■名前 : りん <rin_doggie@hotmail.com>  ■日付 : 02/11/2(土) 9:31  -------------------------------------------------------------------------
   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

こんな感じです。
 ───────────────────────────────────────  ■題名 : Re:文字列の検索について  ■名前 : NH  ■日付 : 02/11/2(土) 19:50  -------------------------------------------------------------------------
   ▼りん さん:
>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。
 ───────────────────────────────────────  ■題名 : Re:文字列の検索について  ■名前 : あみやき  ■日付 : 02/12/10(火) 13:50  -------------------------------------------------------------------------
   りん さん、こんにちは。
横レス失礼いたします。

下記の処理の検索対象のものを行でコピーするの処理を
例えば、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
>
>こんな感じです。
 ───────────────────────────────────────  ■題名 : Re:文字列の検索について  ■名前 : Jaka  ■日付 : 02/12/12(木) 10:08  -------------------------------------------------------------------------
   ▼あみやき さん:
>りん さん、こんにちは。
>横レス失礼いたします。
>
>下記の処理の検索対象のものを行でコピーするの処理を
>例えば、d列を検索し、検索にかかった行のAのセルのみを
>ワークシート2のセルc1から順に格納する処理をするにはどうしたらよろしいでしょうか?
>お忙しいところ、申し訳ございませんが、ご指導ねがいます。

私ですみませんが、
最近のりんさんは、バックレ気味みたいですので...。
こう言う場合、新規に質問して過去のアドレスを書いておいた方が、目に付きやすくて良かったかも。
前は、そんな事無かったみたいですけど..。

R1.EntireRow.Copy destination := ws2.Cells(RR&,1)
  ↓
R1.Offset(, -3).Copy Destination:=ws2.Cells(RR&, "C")
 ───────────────────────────────────────  ■題名 : Re:文字列の検索について  ■名前 : あみやき  ■日付 : 02/12/12(木) 10:23  -------------------------------------------------------------------------
   Jaka さん、こんにちは。

いつもいつも、ご指導ありがとうございます。さっそく試してみたいと思います。
本当に助かります。
 ───────────────────────────────────────  ■題名 : Re:文字列の検索について  ■名前 : カド  ■日付 : 02/11/2(土) 19:51  -------------------------------------------------------------------------
   ▼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
 ───────────────────────────────────────  ■題名 : Re:文字列の検索について  ■名前 : NH  ■日付 : 02/11/3(日) 20:11  -------------------------------------------------------------------------
   ▼カド さん:
>▼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。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━    通常モードに戻る  ┃  INDEX  ┃  ≪前へ  │  次へ≫    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━                                 Page 450