0

我有 2400 家公司的 Excel 电子表格。现在看起来像 -

Autumn Ridge Golf Course, Inc.
11420 Auburn Road
Fort Wayne, IN 46845
(260) 637-8727


All Occasion Party Rental
4620 Speedway Drive
Fort Wayne, IN 46825
(260) 484-3964

..... ETC。

我的目标是把它变成友好的表格格式:

Autumn Ridge Golf Course  11420 Auburn Road    Fort Wayne IN 46845 (260)637-8727
All Occasion Party Rental 4620 Speedway Drive  Fort Wayne IN 46825 (260)484-3964

我知道“复制”/“特殊粘贴”“转置”excel选项;但它会很慢......与2400家公司有关。

有没有更快的方法来做到这一点?我需要任何可能的方法来将我的数据转换为表格(水平)视图

提前感谢您的帮助!

4

2 回答 2

1

这是一种使用 VBA 将数据存储在数组中,然后写入新工作表的方法。

我假设所有数据集之间都会有空行,并且任何特定数据集内都没有空行。

Sub HorizontalSplit()
Dim sh1 As Worksheet
Dim sh2 As Worksheet
Dim rng As Range
Dim cl As Range
Dim c As Long: c = 0
Dim r As Long: r = 1
Dim addressInfo() As Variant


Set sh1 = Worksheets("Sheet1") 'Modify as needed`
Set sh2 = Worksheets.Add(After:=sh1) 'Modify as needed, set to an existing sheet, etc.`

With sh1
    Set rng = .Range("A1:A2500") 'Modify as needed to fit your range of address info`
    For Each cl In rng

        If cl.Value = vbNullString Then
        'write out the data (if any), or skip the cell if there is no data in the array`
            If UBound(addressInfo) > 0 Then
                For c = 0 To UBound(addressInfo)
                    sh2.Cells(r, c + 1).Value = addressInfo(c)
                Next

                c = -1
                'clear out our array for the next brand'
                Erase addressInfo
                ReDim addressInfo(0)
                r = r + 1
            End If
        Else:
            'Add this row of data to the array
            c = c + 1
            ReDim Preserve addressInfo(c)
            addressInfo(c) = cl.Value

        End If
    Next
End With

End Sub
于 2013-04-10T03:16:28.230 回答
0

如果您的数据完全按照您指定的格式设置,则可能有一种快速简便的非 Excel 方法。

  1. 将您的数据复制到一个像样的文本编辑器(例如 Notepad++: http: //notepad-plus-plus.org/
  2. 使用“扩展”的搜索模式进行查找/替换,并用一些特殊字符替换多个空行的所有实例。(例如,如果地址之间有一个空格,请查找\r\n\r\n并替换为|。)
  3. 对剩余的空白行执行查找/替换,并用制表符替换。(再次在扩展模式下,查找\r\n并替换为\t
  4. 再次用新行查找/替换您的特殊字符。(在扩展模式下,查找|并替换为\r\n
  5. 将生成的文本复制并粘贴到 Excel 中。任何额外的清理都应该在 Excel 公式的范围内。

如果您反对或无法下载其他软件(尽管我强烈推荐 Notepad++),您应该能够使用 MS Word 完成类似的操作。http://office.microsoft.com/en-us/word-help/find-and-replace-text-or-other-items-HA001230392.aspx#_Toc282602054上的文档似乎与我记得的内容一致其中^p用于查找段落标记(新行),而^t用于查找制表符。

于 2013-04-10T01:56:26.183 回答