excelvba中从列格式到多列格式

excelvba中从列格式到多列格式,excel,string-formatting,vba,Excel,String Formatting,Vba,我有块格式的.txt数据: 1 1 2 2 3 3 在本例中,我有3个大小为2的块。大小不随块而变化,而是固定的。我现实生活中的箱子大约有500块大小为500的。我想以Excel格式导入这些数据 1 2 3 1 2 3 即每列表示一个块。我正在搜索一个在线工具,可以提供一个简单的复制到剪贴板的工具,但我没有找到任何。考虑到我的列的范围和块的大小(这里是A1:A6和块大小2),您将如何在Excel VBA中执行此操作?您尝试过使用公式吗?这是一个非常小的数据集,所以应该很容易做到。我知道没有可

我有块格式的.txt数据:

1
1
2
2
3
3
在本例中,我有3个大小为2的块。大小不随块而变化,而是固定的。我现实生活中的箱子大约有500块大小为500的。我想以Excel格式导入这些数据

1 2 3
1 2 3

即每列表示一个块。我正在搜索一个在线工具,可以提供一个简单的复制到剪贴板的工具,但我没有找到任何。考虑到我的列的范围和块的大小(这里是A1:A6和块大小2),您将如何在Excel VBA中执行此操作?

您尝试过使用公式吗?这是一个非常小的数据集,所以应该很容易做到。我知道没有可以自动重新排列的导入选项。为了清晰起见,我选择了这个例子。我的真实案例有500个大小为500的块。你能给我读txt文件的代码吗?因为我想通过你们的努力为你们提供答案,这与你们最初的帖子完全不同。也许你可以更新你的问题来澄清你的确切需求。不清楚(例如)一个“大小为500的块”代表什么(500x500?500个单元格?)这些块是如何分开的?@TimWilliams:已更新。对于500 x 500,这应该不重要,但我通常将其加载到数组中并粘贴到Excel中一次。效果非常好。谢谢
Sub Tester()
    ReadBlocks "C:\local files\tmp.txt", 100, ActiveSheet.Range("a1")
End Sub


Sub ReadBlocks(sPath As String, BlockSize As Long, rngDest As Range)

    Dim fso As Object, f As Object, val, r As Long, c As Long

    On Error GoTo haveError

    Set fso = CreateObject("scripting.filesystemobject")
    Set f = fso.opentextfile(sPath, 1) '1=forReading

    r = 0
    c = 0
    Application.ScreenUpdating = False
    Application.Calculation = xlCalculationManual
    Do Until f.AtEndOfStream
        rngDest.Offset(r, c).Value = f.ReadLine
        If (r + 1) Mod BlockSize = 0 Then
            r = 0
            c = c + 1
        Else
            r = r + 1
        End If
    Loop

haveError:

    Application.ScreenUpdating = True
    Application.Calculation = xlCalculationAutomatic
End Sub