Excel:如何在Results工作表下一空行转置Saudi表D列数据
解决跨表转置并定位下一个可用行的问题
核心修改点
要定位Results工作表的下一个可用行,关键是通过End(xlUp)从列尾向上查找最后一个非空单元格,再+1得到空行行号。结合你的转置需求,修改后的代码如下:
Sub CopyTransposeToNextRow() Dim wsSaudi As Worksheet, wsResults As Worksheet Dim sourceRange As Range Dim nextRow As Long ' 指定目标工作表 Set wsSaudi = ThisWorkbook.Worksheets("Saudi") Set wsResults = ThisWorkbook.Worksheets("Results") ' 获取Saudi表D列的有效数据范围(从D2到最后非空行) Set sourceRange = wsSaudi.Range("D2", wsSaudi.Cells(wsSaudi.Rows.Count, "D").End(xlUp)) ' 计算Results表A列的下一个可用行 nextRow = wsResults.Cells(wsResults.Rows.Count, "A").End(xlUp).Row + 1 ' 复制数据并转置粘贴(仅保留数值) sourceRange.Copy wsResults.Cells(nextRow, "A").PasteSpecial Paste:=xlPasteValues, Transpose:=True ' 清除剪贴板,避免弹窗提示 Application.CutCopyMode = False End Sub
关键说明
- 如果你的源数据不是从D2开始,直接修改
sourceRange的起始单元格即可(比如wsSaudi.Range("D5:D15")) - 若目标数据要从
Results表的其他列开始,把Cells(nextRow, "A")中的"A"改成对应列标(比如"B") - 用工作表对象代替
ActiveSheet,避免切换工作表时出现逻辑错误
内容的提问来源于stack exchange,提问作者Chizie
相关产品推荐
相关产品推荐

