将特定单元格从sheet2sheet复制到下一个空白行

时间:2013-11-04 17:28:35

标签: excel vba excel-vba

我的问题是我希望能够将来自不同源工作表(即PRICES1& PRICES2& more)的特定单元格值复制到另一个工作表(TOTALS)中的第一个空行。 到目前为止,代码执行工作但是例如PRICES1运行并在R列中留下空白单元格然后当引发PRICES2时,所有单元格值将占用下一个可用行,除了值“B10”,它将占用空白单元格R列中的前一行。

所以,我的问题是:有没有办法可以强制所有单元格值占用同一行,即使前一行中有一些空白单元格?例如,我可以强制其余的值占据同一行(当然在适当的单元格中),如B4& C4值?

Sub PRICES1_click()
ActiveSheet.Calculate
ActiveSheet.Columns("F:F").AutoFit

If Sheets("TOTALS").Range("M" & Rows.Count).End(3)(2).Value = "" Then

    If Sheets("TOTALS").Range("M" & Rows.Count).End(3)(2).Value = "" Then
    Sheets("TOTALS").Range("M" & Rows.Count).End(3)(2).Value = Sheets("PRICES1").Range("B4").Value
    Sheets("TOTALS").Range("N" & Rows.Count).End(3)(2).Value = Sheets("PRICES1").Range("C4").Value
    Sheets("TOTALS").Range("O" & Rows.Count).End(3)(2).Value = Sheets("PRICES1").Range("B6").Value
    Sheets("TOTALS").Range("S" & Rows.Count).End(3)(2).Value = Sheets("PRICES1").Range("L46").Value
End If

End If

Worksheets("TOTALS").Calculate
End Sub


Sub PRICES2_click()
ActiveSheet.Calculate
ActiveSheet.Columns("F:F").AutoFit

If Sheets("TOTALS").Range("M" & Rows.Count).End(3)(2).Value = "" Then

    If Sheets("TOTALS").Range("M" & Rows.Count).End(3)(2).Value = "" Then
    Sheets("TOTALS").Range("M" & Rows.Count).End(3)(2).Value = Sheets("PRICES2").Range("B4").Value
    Sheets("TOTALS").Range("N" & Rows.Count).End(3)(2).Value = Sheets("PRICES2").Range("C4").Value
    Sheets("TOTALS").Range("O" & Rows.Count).End(3)(2).Value = Sheets("PRICES2").Range("B6").Value
    Sheets("TOTALS").Range("R" & Rows.Count).End(3)(2).Value = Sheets("PRICES2").Range("B10").Value
    Sheets("TOTALS").Range("S" & Rows.Count).End(3)(2).Value = Sheets("PRICES2").Range("L46").Value
End If
End If


Worksheets("TOTALS").Calculate
End Sub

您可以在以下位置找到excel文件: sendspace attached excel file

1 个答案:

答案 0 :(得分:0)

您应该将目标行设置为变量并使用它。选择一个您知道将永远填充的列。

Dim rowNo As Long

rowNo = Sheets("TOTALS").Range("M" & Rows.Count).End(XlUp).Row + 1


Sheets("TOTALS").Range("M" & rowNo).Value = Sheets("PRICES2").Range("B4").Value
Sheets("TOTALS").Range("N" & rowNo).Value = Sheets("PRICES2").Range("C4").Value
Sheets("TOTALS").Range("O" & rowNo).Value = Sheets("PRICES2").Range("B6").Value