如何在Excel VBA中保存和转置范围

时间:2019-04-05 20:19:39

标签: excel vba

我有一个宏,可在其中打开一个文本文件,以将几列复制并转置到工作表中。到目前为止,这实际上是可行的。但是,由于我现在打开文本文件,复制一列,返回到我原来的工作表中,粘贴并转置数据,然后在两张表之间来回切换,直到所有相关的列都被复制了,所以我认为可以对其进行优化如果我对VBA有更好的了解。

所以我的问题是,我是否可以将列数据另存为范围,然后一次将其全部复制,然后一次将其粘贴并转置?

或者这不会对宏的速度产生任何影响吗?

而且,由于我实际上正在打开许多文本文件(打开一个文本文件,将其关闭,打开下一个文件,将其关闭,等等),当打开一个新的文本文件时,是否有可能覆盖范围?

我在下面显示了我的代码示例,希望您能理解它:

'要复制的第一选择 ActiveSheet.Cells(行温度+ 1,1)。选择     范围(选择,选择。结束(xlDown))。选择

Selection.Copy

'Go back to original sheet

Windows(Left(f, Len(f))).Activate

'Paste and Transpose Data

If IsEmpty(ActiveSheet.Cells(4, 2).Value) = True Then
        ActiveSheet.Cells(4, 1).Select
        ActiveCell.Offset(0, 1).Range("A1").Select
            Selection.PasteSpecial Paste:=xlPasteValues, 
            Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=True

            ActiveSheet.Cells(4 + 5 + Range("A2").Value, 1).Select
            ActiveCell.Offset(0, 1).Range("A1").Select
            Selection.PasteSpecial Paste:=xlPasteValues, 
             Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=True
End If

'Copy 2nd set of Data
         Windows(Left(z, Len(z))).Activate
         Range("B1").Select

         Selection.End(xlDown).Select
         ActiveCell.Offset(1, 0).Range("A1").Select
         Range(Selection, Selection.End(xlDown)).Select
         Selection.Copy

         Windows(Left(f, Len(f))).Activate

'Paste and Transpose 2. set of data

        If IsEmpty(ActiveSheet.Cells(5, 2).Value) = True Then
            ActiveSheet.Cells(5, 2).Select
            Selection.PasteSpecial Paste:=xlPasteValues, 
            Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=True

            ActiveSheet.Cells(5 + 5 + Range("A2").Value, 2).Select
             Selection.PasteSpecial Paste:=xlPasteValues, 
            Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=True
        End If

0 个答案:

没有答案