0

我正在尝试复制工作表中每行的最后一列值(即使有空格)。只要没有空格,我现在拥有的当前代码就可以复制最后一列。粘贴以下代码:

Dim lastrow As Long, i As Long
lastrow = Cells(Rows.Count, "a").End(xlUp).Row
For i = 2 To lastrow
    Range("a" & i).End(xlToRight).Copy
    Range("a" & i).End(xlToLeft).PasteSpecial xlPasteValues
    Application.CutCopyMode = False
Next i

我需要 A2 来复制其原始值的最后一列值,该值位于 D2(电子邮件)中。然后 A3 将复制其行的最后一列值,即 C3(电子邮件)

谢谢

4

2 回答 2

0

您可以仅使用公式来执行此操作:

=IFERROR(INDIRECT(ADDRESS(ROW(),SUMPRODUCT(MAX(COLUMN(B2:F2)*(B2:F2<>""))))),"")

该公式粘贴在 A2 中并填写所有黄色单元格:

在此处输入图像描述

如果您真的想使用 VBA,您仍然可以使用公式并粘贴值以避免所有循环!

Sub eh()
Dim lRow As Long: lRow = Sheet1.Cells(Sheet1.Rows.Count, 1).End(xlUp).Row
Sheet1.Range("A2:A" & lRow).Formula = _
    "=IFERROR(INDIRECT(ADDRESS(ROW(),SUMPRODUCT(MAX(COLUMN(B2:F2)*(B2:F2<>""""))))),"""")"
Sheet1.Range("A2:A" & lRow).Value2 = Sheet1.Range("A2:A" & lRow).Value2
End Sub

尽管让我感到困惑的一件事是,lastRow当 A 列尚未填充时,您的计算如何获得 A 列中的最后一行......

于 2021-07-01T18:57:39.400 回答
0

能够得到答案..在下面发布代码。感谢大本的帮助。

Sub range1()
Dim i, a, lrow, lcol As Long
Dim rng As range

lrow = Cells(Rows.Count, 1).End(xlUp).Row

For i = 2 To lrow
    lcol = Cells(i, Columns.Count).End(xlToLeft).Column
    Cells(i, "a") = Cells(i, lcol).Value
Next i
End Sub
于 2021-07-01T18:45:11.477 回答