如何复制Excel中的新标签中的Excel公式

我有一个Excel工作簿2个选项卡。 “AccountDetail”选项卡包含多个可变的数据行(包括一个标题行)。 “MasterDetail”选项卡有2行数据(第1行是标题行,第2行是一行公式)。

我想计算AccountDetail选项卡上的数据行数,并从MasterDetail选项卡中复制相同数量的行,其中包含来自AccountDetail选项卡的数据。 这是我迄今为止。 我可以使用一些build议。

Sub CopyFormulas_Down() Dim LastRow As Long EndRow = AccountDetail.Range("A" & Rows.Count).End(xlUp).Row MasterDetail.Range("A2:AZ2").AutoFill Destination:=Range("A2:AZ" & LastRow) End Sub 

首先,你的代码似乎有一个简单的错字错误。 您正在声明您正在传递给AutoFill()函数的EndRow ,但是您正在使用EndRow来存储从您的计数中获得的内容,因此一个是您没有获得预期值的原因。

另外我为自己注意到一个有时不可预知的行为取决于使用的Excel版本。 有不同的方法来计算表中的行,但从我用不同版本的经验,这是我用来得到最后一行:

 ' get last row of worksheet Public Function GetWSLastRow(ByRef wsSheet As Worksheet) As Double ' simply return 0 if no Worksheet was passed If IsNothing(wsSheet) Then GetWSLastRow = 0 Exit Function End If ' first we try using Find(any) to get last row On Error GoTo errLRFindError GetWSLastRow = wsSheet.Cells.Find("*", , , , xlByRows, xlPrevious).Row ' if there was no error we will just exit function ' otherwise we jump to next method of determining last row endGetLastRow: On Error GoTo 0 Exit Function errLRFindError: ' try getting last row by querying for UsedRange's row count On Error GoTo errLRUsedRangeError GetWSLastRow = wsSheet.UsedRange.Rows.Count Resume endGetLastRow errLRUsedRangeError: ' last chance rows count, but you should not end up here anyhow GetWSLastRow = wsSheet.Rows.Count Resume endGetLastRow End Function 

那么使用这个函数你的代码如下所示:

 Sub CopyFormulas_Down() Dim LastRow As Long LastRow = GetWSLastRow(AccountDetail) MasterDetail.Range("A2:AZ2").AutoFill Destination:=Range("A2:AZ" & LastRow) End Sub 

甚至更短:

 Sub CopyFormulas_Down() MasterDetail.Range("A2:AZ2").AutoFill Destination:=Range("A2:AZ" & GetWSLastRow(AccountDetail)) End Sub 

希望是的。