2017-04-18 13 views
0

検索行全体を貼り付け:日付のVBA:シート1(2つの別々の列)にDATE&TEXT値を検索し、2つの条件が満たす場合、シート1を介してシートに2

テキストプロンプトユーザInputBox(列A)と文字「X」(列V)は定数である。両方の条件が満たされている場合は、行全体をSheet2にコピー&ペーストします。ここで

は、私は前作の整数検索に持っているものです。

Private Sub CommandButton5_Click() 

Dim strsearch As String, lastline As Integer, tocopy As Integer 

'find what date? find other value? 
strsearch = CStr(InputBox("enter the string to search for")) 
lastline = Range("A65536").End(xlUp).Row 
j = 1 
For i = 1 To lastline 
    For Each c In Range("A" & i & ":V" & i) 
     If InStr(c.Text, strsearch) Then 
      tocopy = 1 
     End If 
    Next c 
    'Copy the current row 
    If tocopy = 1 Then 
     Rows(i).Copy Destination:=Sheets("MONTH_END").Rows(j) 
     j = j + 2 
    End If 
tocopy = 0 
Next i 

End Sub 
+0

?あなたが追加したコードには賛成できません –

答えて

0

あなたがそこに基礎アダムを持っています。したがって、シート1のデータが連続していると仮定すると(つまり、空のセルとそれ以上のデータはないが、空のセルはループの終わりである)、データシート(シート1)がアクティブシートであると仮定する、あなたはこれを見ていることになります。

StrSearch = CStr(InputBox("Enter the string to search for")) 
j = Sheets("MONTH_END").Range("A65536").End(xlUp).Row 

For i = 1 to Range("A65536").End(xlUp).Row 
    If InStr(ActiveSheet.Cells(i, 1).Value, StrSearch) And ActiveSheet.Cells(i, 22).Value = "A" Then 
     ActiveSheet.Rows(i).Copy Destination:=Sheets("MONTH_END").Rows(j) 
     j = Sheets("MONTH_END").Range("A65536").End(xlUp).Row   'recalculate J now that a row has been pasted in 
    ElseIf IsEmpty(ActiveSheet.Cells(i, 1)) Then 
     Exit For   ' The get-out clause of the loop 
    End If 
Next i 

あなたが探している第二値は同じ列(V、COL 22)に常にあるので、このメソッドは、1 For Eachを必要とするので、それぞれを通過する必要はありません行の列は値をチェックします。

+0

クイックレスポンスのおかげで2つのアイテムが残っています。そこに到達していますが、列22のデータは連続していません。 「a」は時折表示されます。 –

+0

ユーザの入力に関係なくコピーする必要があります –

+0

データが@DeadlyGryphonと連続していない場合は、空の行/セルの上にループを続けるために 'ElseIf'文をドロップします。 – SlashnBurn92

0

これは私がnow..bloatedが、働く作業しているものです。.. `、ユーザーが「日付」を探すために入ることInputBox`さ

Private Sub CommandButton5_Click() 
Dim i As Long, endRow As Long, pasteRowIndex As Long 

'find what date? find other value? 
endRow = 6000 ' of course it's best to retrieve the last used row number via a function 
pasteRowIndex = 1 

Sheets("COMBINED").Range("V3").Value = InputBox("Please Input Date = NOTE: 
Format MM/DD/YYYY") 

For i = 1 To endRow 'Loop through COMBINED and search for your criteria 

If Sheets("COMBINED").Cells(i, 1).Value = Range("V3") Or Sheets("COMBINED").Cells(i, 10).Value = "A" Then 'Found 

     'Copy the current row 
     Rows(i).Select 
     Selection.Copy 

     'Switch to the sheet where you want to paste it & paste 
     Sheets("MONTH_END").Select 
     Rows(pasteRowIndex + 1).Select 
     ActiveSheet.Paste 

     'Next time you find a match, it will be pasted in a new row 
     pasteRowIndex = pasteRowIndex + 1 


     'Switch back to your table & continue to search for your criteria 
     Sheets("COMBINED").Select 
    End If 
Next i 
    'Go Home 
     Sheets("MONTH_END").Select 
     Application.Goto Range("A1"), True 
     ActiveWindow.VisibleRange(1, 1).Select 
     Sheets("COMBINED").Select 
     Application.Goto Range("A1"), True 
     ActiveWindow.VisibleRange(1, 1).Select 
End Sub 
関連する問題