0

我有一个大的 txt 文件,它包含一个矩阵,其中列标题和数据值总是右对齐。这是我能找到的唯一允许将 txt 导入 excel 的“常规功能”,因为元素由不规则数量的空格分隔,具体取决于数据编号的大小。

该矩阵在几个位置有空单元格。它看起来像这样:

              4536        4705        2360        2355        2717       
 56099                                                      5156.5 
 12470      4114.9                                                                 
 12469                    23.0                                          
 56997                  2311.9                                             
 12471                                                                 
 12479                                                                 
 12473                                                                 
 12478        41.1                                                               
 12484                                         78957.7                      
 12477                                                                 
 12483                                                                 
 12476                           7125444.9                                     

有关如何使用 VBA 进行导入的任何建议?我怎么能要求右对齐的条件?谢谢。

4

1 回答 1

1

您帖子中的数据与 12 的列宽右对齐。

此宏将打开data2包含您帖子中信息的 txt 文件并适当地设置列。

Sub OpenMatrixData()
    Dim filename As String
    filename = "C:\Test\data2.txt"
    Dim firstColumnWidth As Integer
    Dim columnWidth As Integer

    firstColumnWidth = 6
    columnWidth = 12

    Workbooks.OpenText filename:=filename, Origin:=437, StartRow:= _
        1, _
        DataType:=xlFixedWidth, _
        FieldInfo:=Array(Array(0, 1), _
        Array(firstColumnWidth, 1), _
        Array(firstColumnWidth + columnWidth * 1, 1), _
        Array(firstColumnWidth + columnWidth * 2, 1), _
        Array(firstColumnWidth + columnWidth * 3, 1), _
        Array(firstColumnWidth + columnWidth * 4, 1), _
        Array(firstColumnWidth + columnWidth * 5, 1)), _
        TrailingMinusNumbers:=True
End Sub

Excel对齐:

|    |  4536|  4705|     2360|   2355|   2717|
56099|      |      |         |       | 5156.5|
12470|4114.9|      |         |       |       |
12469|      |    23|         |       |       |
56997|      |2311.9|         |       |       |
12471|      |      |         |       |       |
12479|      |      |         |       |       |
12473|      |      |         |       |       |
12478|  41.1|      |         |       |       |
12484|      |      |         |78957.7|       |
12477|      |      |         |       |       |
12483|      |      |         |       |       |
12476|      |      |7125444.9|       |       |

回应OP评论:

对于动态列数,您可以尝试一下,这取决于Excel弄清楚如何处理数据。它适用于示例,但不如上述解决方案强大。

Sub OpenMatrixData()
    Dim filename As String
    filename = "C:\Test\data2.txt"

    Workbooks.OpenText filename:=filename
End Sub
于 2013-09-12T23:40:49.080 回答