0
2つの条件を満たすセル値をコピーしようとしています:(1)ハイライトされた行、(2)特定のリージョンコード"WA"。列Bのセル値を列Aのヘッダーの下の宛先ワークシートにコピーする必要があります。さらに、条件を満たす値に対応するシート名を列Cにコピーして宛先ワークシートにコピーします。ハイライトされたセルとシート名をコピー先のワークシートにコピー
- をできるだけ早く私はそれが動作しますが、先のシートに任意の値を超えていません。このコードを追加する:私が遭遇した
問題。
LCase(Cells(Cell.Row, "A").Value) = "wa"
- 上記のコード行を削除し、列2に表示されるように対象領域を変更すると、ヘッダーの下に開始するのではなく、列Bでハイライトされた値が列挙され、A1から開始して貼り付けられます。
部分ターゲットエリア(フル対象領域がこれらの列を下って行く異なる地域コードと値を持つ):
Sub Criteria()
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Dim wkb As Workbook
Dim Sh As Worksheet
Dim DestSh As Worksheet
Dim LastRow As Long, LastCol As Long, Last As Long
Dim Target As Range, Cell As Range, Dest As Range
Dim DestCounter As Long
' Delete the data off of AdvFilter sheet.
ActiveWorkbook.Worksheets("AdvFilter").Range("A5:F5" & Last + 1).Cells.Clear
On Error GoTo 0
'initialize destination counter
DestCounter = 1
Set DestSh = ThisWorkbook.Worksheets("AdvFilter")
For Each Sh In ThisWorkbook.Worksheets
If ActiveSheet.Visible = True Then
Last = fLastRow(DestSh)
With Sh
LastRow = .Cells.Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
Set Target = .Range(.Cells(1, 1), .Cells(LastRow, 2))
End With
For Each Cell In Target '<~ loop through each cell in the target space
If AmIYellow(Cell) And Cell.Value <> "" And _
LCase(Cells(Cell.Row, "A").Value) = "wa" Then
Set Dest = DestSh.Cells(Last + DestCounter, 1)
Cell.Copy Dest
DestCounter = DestCounter + 1
End If
Next Cell
End If
Next Sh
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub
Function fLastRow(Sh As Worksheet)
On Error Resume Next
LastRow = Sh.Cells.Find(What:="*", _
After:=Sh.Range("A1"), _
Lookat:=xlPart, _
LookIn:=xlFormulas, _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious, _
MatchCase:=False).Row
On Error GoTo 0
End Function
ありがとう、それは多少は機能しますが、初めて実行すると、A4から始まるデータが書き込まれ、ヘッダの一部が削除されます。私はそれをもう一度実行すると、それはA5のように開始されます。 – DigitalSea
私は不一致についてなぜ分かりませんが、うまくいけばうれしいです。私の答えを受け入れてくれてありがとう。ハッピーコーディング! –