如何编写包含来自源单元格的单元格格式的 VBA Vlookup?

How to code VBA Vlookup that includes cell formatting from the source cell?

我正在寻找一种方法来保留我使用以下函数对其执行 vlookup 的单元格的源格式:

On Error Resume Next
With aSheet
    For i = FindEmptyRow To FindRow2
        .Range("N" & i) = Application.WorksheetFunction.VLookup(.Range("A" & i), Sheets("data_temp").Range("A:W"), 14, False)
        .Range("O" & i) = Application.WorksheetFunction.VLookup(.Range("A" & i), Sheets("data_temp").Range("A:W"), 15, False)
        .Range("P" & i) = Application.WorksheetFunction.VLookup(.Range("A" & i), Sheets("data_temp").Range("A:W"), 16, False)
        .Range("Q" & i) = Application.WorksheetFunction.VLookup(.Range("A" & i), Sheets("data_temp").Range("A:W"), 17, False)
        .Range("R" & i) = Application.WorksheetFunction.VLookup(.Range("A" & i), Sheets("data_temp").Range("A:W"), 18, False)
        .Range("S" & i) = Application.WorksheetFunction.VLookup(.Range("A" & i), Sheets("data_temp").Range("A:W"), 19, False)
        .Range("T" & i) = Application.WorksheetFunction.VLookup(.Range("A" & i), Sheets("data_temp").Range("A:W"), 20, False)
        .Range("U" & i) = Application.WorksheetFunction.VLookup(.Range("A" & i), Sheets("data_temp").Range("A:W"), 21, False)
        .Range("V" & i) = Application.WorksheetFunction.VLookup(.Range("A" & i), Sheets("data_temp").Range("A:W"), 22, False)
        .Range("W" & i) = Application.WorksheetFunction.VLookup(.Range("A" & i), Sheets("data_temp").Range("A:W"), 23, False)
    Next i
End With

我看到其他人也在为这个特定问题而苦苦挣扎,但我一直无法找到解决我的问题的答案。

有什么方法可以使用 PasteSpecial Paste:=xlPasteFormats- 来保留单元格格式?

我尝试将 vlookup 公式存储为字符串并将其直接粘贴到每个单元格中,但我不太了解它在循环中的工作方式。

是否有比 VLOOKUP 更适合这个特定问题的公式?

如果您需要问题的更多背景知识或更多代码,请告诉我。

希望有人能够帮助我!

此致, 马格努斯

这使用 MATCH 找到正确的行,然后复制并粘贴单元格。

With aSheet
    Dim mtchrw As Long
    
    For i = FindEmptyRow To FindRow2
        mtchrw = 0
        On Error Resume Next
            mtchrw = Application.WorksheetFunction.Match(.Range("A" & i), Sheets("data_temp").Range("A:A"), 0)
        On Error GoTo 0
        If mtchrw > 0 then
            Sheets("data_temp").Range("N" & mtchrw & ":W" & mtchrw).Copy .Range("N" & I & ":W" & i)
        End If
    Next i
End With