私はこのマクロを持っていますが、シートをフィルタリングしてソートして、 "短い支払い済み"と書かれたセルの隣にvlookupの式を追加するように書きました。私のコードは、列Gに「短納税」を持つ行が複数ある場合は正常に動作します。VBAupでセルを塗りつぶし、他のセルにコピー&ペーストします。
列Gに「短期支払い」がある行が1つだけの場合、マクロはヘッダーの使用、ヘッダー(行1)内の行2の内容。私はちょうどそれが "短い支払"と複数の行がある場合は、マクロが全くヘッダーに触れていないことが奇妙に思える。ここではコードです:
Sub Prox2()
Dim LastRow As Long
Dim xRow As Range
Dim xRg As Range
Dim xRows As Range
ActiveSheet.Range("A:O").AutoFilter Field:=7, Criteria1:= _
"Short Paid"
LastRow = Range("G" & Rows.Count).End(xlUp).Row
Range("H2") = "=VLOOKUP(A2,Sheet2!A:B,2,FALSE)": Range("H2:H" &
LastRow).FillDown
Range("H2:H" & LastRow).Select
Selection.Copy
Range("A2").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=True, Transpose:=False
Range("H2:H" & LastRow).Select
Application.CutCopyMode = False
Selection.ClearContents
Range("H2") = "=VLOOKUP(A2,Sheet2!A:P,16,FALSE)": Range("H2:H" &
LastRow).FillDown
Range("C2:C" & LastRow).Select
Application.CutCopyMode = False
Selection.ClearContents
Range("C2") = "=VLOOKUP(A2,Sheet2!A:F,6,FALSE)": Range("C2:C" &
LastRow).FillDown
Range("F2:F" & LastRow).Select
Application.CutCopyMode = False
Selection.ClearContents
Range("F2") = "=VLOOKUP(A2,Sheet2!A:J,10,FALSE)": Range("F2:F" &
LastRow).FillDown
Range("E2:E" & LastRow).Select
Application.CutCopyMode = False
Selection.ClearContents
Range("E2") = "=F2-30": Range("E2:E" & LastRow).FillDown
ActiveSheet.Range("A:O").AutoFilter Field:=7
End Sub
私はそれはかなり遅いよう '.Select'コピー/ペースト法を使用しないようお勧めを...私はお勧めしたいですそれははるかに速いので、 'Worksheet.Range([RANGE])。Formula = [FORMULA]'を使うだけです。 – Maldred
@Maldredそうすれば、マクロはvlookupを必要とする行が1つしかないところでヘッダを使うことを解決できますか? –
'Debug'ははるかに簡単ですが、あなたの問題を修正するとは確信できませんが、あなたのコードは間違いなくリワークを使う可能性があります。 – Maldred