Excel VBA:基于两列确定目标行,解决非均匀数据粘贴覆盖问题
解决方法
核心思路是分别获取目标两列的最后有数据行号,取其中的最大值再加1,确保无论哪一列数据更长,新数据都能追加到所有列的最下方,不会覆盖已有内容。
修改后的代码如下:
Sub CopyData() Dim wsCopy As Worksheet Dim wsDest As Worksheet Dim lDestLastRow_A As Long Dim lDestLastRow_B As Long Dim lDestLastRow As Long Set wsCopy = Sheets("CopyFrom") Set wsDest = Sheets("PasteHere") ' 获取A列最后有数据的行号 lDestLastRow_A = wsDest.Cells(wsDest.Rows.Count, "A").End(xlUp).Row ' 获取B列最后有数据的行号 lDestLastRow_B = wsDest.Cells(wsDest.Rows.Count, "B").End(xlUp).Row ' 取两列最后行号的最大值,再加1作为新数据的起始行 lDestLastRow = Application.Max(lDestLastRow_A, lDestLastRow_B) + 1 wsCopy.Range("C3:F20").Copy wsDest.Range("B" & lDestLastRow).PasteSpecial ' Copy & Paste Date wsCopy.Range("B1").Copy wsDest.Range("A" & lDestLastRow).PasteSpecial End Sub
关键说明
- 新增两个变量分别存储目标两列的最后数据行号,这里以A、B列为例,你可以根据实际需求修改列标识(比如改成"C"、"D")
- 通过
Application.Max()函数取两行号的最大值,再加1得到安全的起始行,彻底避免非均匀数据下的覆盖问题
内容的提问来源于stack exchange,提问作者user18755209
相关产品推荐
相关产品推荐

