0

名前を検索し、その行を別のシートに移動するための式があります。

With Intersect(Sheet.UsedRange, Sheet.Columns("D"))
    .AutoFilter 1, "=Name"
    With Intersect(.Offset(2).EntireRow, .Parent.Range("A:G"))
        .Copy Sheet.Cells(Rows.Count, "A").End(xlUp).Offset(1)
        .EntireRow.Delete
    End With
    .AutoFilter
End With

この同じ数式を使用して、あるシートから別のシートに行を転送し、そのセルに日付を含める方法はありますか?

4

2 に答える 2

1

この質問に確実に答えるには、コード全体とスプレッドシートのスクリーンショットを確認する必要があります。投稿することをお勧めします。

それまでの間、私はあなたが今ここに持っているものについて合理的な推測をすることができます。

オートフィルターの範囲を、日付を含む列に合わせて調整する必要があります。現在、列Dで「=名前」の基準をチェックしています。また、基準も調整する必要がある場合があります。to "= Date" --- "date"は、文字列/テキスト形式の日付です。Excelの日付は実際には数字であることが多いため、日付列を文字列/テキストに変換しない限り、実際の数字を使用する必要がある場合があります。これはおそらくお勧めします。.offset(2)は奇妙に見えますが、それも調整する必要があるかもしれません。「A:G」はテーブル全体を含む範囲だと思います。

http://www.ozgrid.com/VBA/autofilter-vba-criteria.htm

これを試して:

With Intersect(Sheet.UsedRange, Sheet.Columns("G")) ' assuming column G contains your dates.    
.AutoFilter Field:=1, "=Date" ' put your date in number or text format here as the criteria

幸運を。

編集:これを試してください:

.AutoFilter Field:=1, Criteria1:="*/*"
于 2012-08-27T14:49:00.780 に答える
0

表の横の列で=ISTEXT(D2) 、「新しい列を使用して」のような式を使用して、TrueかFalseかに基づいてフィルタリングを実行します。これは、列Dに名前または日付のいずれかしかないことを前提としています。つまり、整数がある場合、このアプローチは機能しません。

編集

を使用して上記をコーディングできますworksheetfunction。次のことを試してください...

Sub test()

With Excel.Application.ActiveWorkbook.Sheets("Sheet1")
            MsgBox (Excel.Application.WorksheetFunction.IsText(.Range("D2")))
End With

End Sub
于 2012-08-27T16:21:41.313 に答える