excel - 如何复制(从 COL)和粘贴(到 ROW)(替换特定位置的数据)?
问题描述
我有一个小问题。我放在一起的代码从 A 列获取数据sheet(1)
并将其复制(将其转换为行)到sheet(2)
. 虽然,在我粘贴它之前(这里是我开始录制宏的时间点),我去“控制+右”找到第一个填充的单元格(在第 2 行(sheet(2)
),然后我选择粘贴在数据中转置它和替换我已经拥有的数据(到行)。
问题是我有 1000 列需要以这种方式转置为行(在每种情况下,行都从 上的不同点开始sheet(2)
)并替换旧数据。有人可以建议吗?它需要某种循环(我知道)。
Sub test()
Dim ws1, ws2 As Worksheet, lr As Long
Set ws1 = ThisWorkbook.Sheets(1): Set ws2 = ThisWorkbook.Sheets(2)
lr = ws1.Range("A" & ws1.Rows.Count).End(xlUp).Row
ws1.Range("A2:A" & lr).Copy
With ws2
'I have recorded this part
ws2.Activate
Range("A2").Select
Selection.End(xlToRight).Select
Selection.End(xlToRight).Select
Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=True
End With
End Sub
一些用于澄清的屏幕:
这里 ws2 数据从每行的不同点开始(我需要将 ws1 中的数据复制到 ws2 并准确替换每行开始的数据):
解决方案
请尝试下一个代码:
Sub testCopyTranspose()
Dim ws1, ws2 As Worksheet, lr As Long, lastCol As Long, LastCol2 As Long, i As Long
Set ws1 = ThisWorkbook.Sheets(1): Set ws2 = ThisWorkbook.Sheets(2)
lastCol = ws1.cells(1 & Columns.count).End(xlToLeft).Column
For i = 1 To lastCol
lr = ws1.cells(Rows.count, i).End(xlUp).Row
LastCol2 = ws2.cells(i + 1, 1).End(xlToRight).Column
ws1.Range(ws1.cells(2, i), ws1.cells(lr, i)).Copy
ws2.cells(i + 1, LastCol2).PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=True
Next i
End Sub
推荐阅读
- typescript - Maybe monad 的另一个名字是什么?
- druid - 将来自多个 kafka 主题的数据提取到 druid 中的单个数据源中
- ruby-on-rails - ActiveRecord 未提供所有数据库列
- android - Room RxJava Flowable 在插入后不发出更新
- html - 关键帧和悬停编码挑战
- r - 为什么注释会影响每个 bin 中的密度数?
- mysql - 在新服务器上创建数据库后外键约束失败
- microsoft-graph-api - 有没有办法使用 Microsoft Graph API 唯一标识电子邮件地址、电话等?
- user-input - 将数据输入到 Hololens 应用程序
- javascript - 页面加载后如何加载 iframe?