【问题标题】:Copy Specific Cells from sheet2sheet to the next blank row将特定单元格从 sheet2sheet 复制到下一个空白行
【发布时间】:2013-11-05 02:04:15
【问题描述】:

我的问题是我希望能够将不同源工作表中的特定单元格值(即 PRICES1 和 PRICES2 及更多)复制到另一个工作表的第一个空行(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

【问题讨论】:

    标签: vba excel


    【解决方案1】:

    您应该将目标行设置为变量并改用它。选择一个您知道将始终被填充的列。

    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
    

    等等

    【讨论】:

    • 好的,我对 vba 还很陌生,所以我不确定我是否正确实现了变量(我得到一个类型不匹配)...我可能错在哪里?
    • 你能再试一次吗?我从最后错过了.Row。对此感到抱歉。
    • 我认为确实有效!非常感谢人!非常感谢!我希望我不必再打扰你了;-)
    猜你喜欢
    • 2019-11-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多