我有下面的代码,我设法将它们拼凑在一起,将一张表中的行转置到另一张表中我需要的一行上 - 我现在遇到的问题是,当它从表中复制时,它也会复制表格式。
我不确定如何粘贴所有值而不是直接复制/粘贴。
Sub transpLeagueTable()
Dim MyTime, MyDate, MyStr
targetrow = 6
For i = 8 To ActiveSheet.Range("A" & Rows.Count).End(xlUp).row
ActiveSheet.Range("A" & i & ":A" & i & ",C" & i & ":J" & i).Copy Worksheets("League Table CSV").Cells(targetrow, 2 + (i - 8) * 9)
Next i
Columns("A:A").EntireColumn.Hidden = False
Application.GoTo Sheets("League Table CSV").Range("A6"), True
Columns("A:A").EntireColumn.Hidden = True
Application.CutCopyMode = False
Application.GoTo Sheets("League Table CSV").Range("B6"), True
End Sub
我认为它是 .Copy 部分,但我不确定如何去改变它。
当您的代码达到预期效果后,此更改将仅粘贴“值”和“数字”格式。
请使用
PasteSpecial
并粘贴“值”和“数字”格式。注意
MyTime
,MyDate
和MyStr
都被声明为变体。不要复制/粘贴;直接传输值,而是使用
Range.Value
或Range.Formula2
(取决于您是否只想要计算值,或者也保留公式)。(请注意,如果您没有跳过 B 列,那么您甚至不需要循环:类似的操作
ActiveWorkbook.Worksheets("League Table CSV").Range("A1:C7").Value = ActiveSheet.Range("A8:C14").Value
会直接执行)复制表格行
Sheet1!A8:A9,C8:J9
(Sheet2!B6:S6
2 行 9 个单元格到 1 行 18 个单元格)。