Excel 如何使用VBA转换通过QueryTables导入的值?
我创建了一个VBA代码,它会提示输入CSV文件并将其导入。但是,它将值作为行导入。我需要将它们作为列导入。怎么做 我尝试将范围设置为Excel 如何使用VBA转换通过QueryTables导入的值?,excel,vba,transpose,Excel,Vba,Transpose,我创建了一个VBA代码,它会提示输入CSV文件并将其导入。但是,它将值作为行导入。我需要将它们作为列导入。怎么做 我尝试将范围设置为$B$2:$B$10,但没有帮助。 我尝试在QueryTables中搜索“transpose data on import”指令,但到目前为止还没有找到 代码: 在本例中,我将QueryTables结果发布到空单元格范围A20 然后使用转置将单元格复制到所需位置B2:B10 If Ret <> False Then With ActiveShee
$B$2:$B$10
,但没有帮助。
我尝试在QueryTables中搜索“transpose data on import”指令,但到目前为止还没有找到
代码:
在本例中,我将QueryTables结果发布到空单元格范围
A20
然后使用转置将单元格复制到所需位置B2:B10
If Ret <> False Then
With ActiveSheet.QueryTables.Add(Connection:= _
"TEXT;" & Ret, Destination:=Range("$A$20"))
.TextFileParseType = xlDelimited
.RefreshStyle = xlOverwriteCells
.AdjustColumnWidth = False
.TextFileCommaDelimiter = True
.Refresh
End With
'Transpose
Dim DirArray As Variant
DirArray = Range("A20:I20").Value
Range("B2:B10").Value = Application.WorksheetFunction.Transpose(DirArray)
Range("A20:I20").Clear
End If
如果Ret为False,则
使用ActiveSheet.QueryTables.Add(连接:=_
“TEXT;”&Ret,目的地:=范围($A$20”))
.TextFileParseType=xlDelimited
.RefreshStyle=xl
.AdjustColumnWidth=False
.textfilecommadelimitor=True
刷新
以
“转置
Dim Dirray阵列作为变体
DirArray=范围(“A20:I20”)。值
范围(“B2:B10”).Value=Application.WorksheetFunction.Transpose(DirArray)
范围(“A20:I20”)。清除
如果结束
重现您的问题的数据样本在制定解决方案时非常有用。它不必是真实的数据;它可以组成,但应该使用功能区的数据
选项卡中的内置工具来表示。有许多was要导入文件。然后,您可以使用Table.Transpose
,它在电源查询编辑器的Transform
选项卡中显示为Transpose
选项。您可以使用power query
轻松地对数据进行转置,无法直接同时导入数据和转置,您需要为转置数据编写单独的程序instead@RonRosenfeld我已经添加了示例数据以及我希望它如何显示在Excel工作表上是的,使用您的数据并使用查询表。Add
方法,在将结果写入工作表后,您需要进行转换。如果工作表上有其他可能受到干扰的数据,请考虑写入临时工作表或隐藏工作表,然后复制/转置到您真正想要的工作表。Power Query将在写入工作表之前启用转置,但您需要一个命名范围(由VBA例程填充)来保存.txt文件的完整路径。也可以用VBA编写整个电源查询代码。
B2: product
B3: 30
B4: 370 psi
...
B10: 2021
If Ret <> False Then
With ActiveSheet.QueryTables.Add(Connection:= _
"TEXT;" & Ret, Destination:=Range("$A$20"))
.TextFileParseType = xlDelimited
.RefreshStyle = xlOverwriteCells
.AdjustColumnWidth = False
.TextFileCommaDelimiter = True
.Refresh
End With
'Transpose
Dim DirArray As Variant
DirArray = Range("A20:I20").Value
Range("B2:B10").Value = Application.WorksheetFunction.Transpose(DirArray)
Range("A20:I20").Clear
End If