【问题标题】:Excel comma data rowsExcel 逗号数据行
【发布时间】:2014-12-12 09:50:41
【问题描述】:

我在 Excel 工作表中有很多用逗号分隔的数据,需要转换成行。 数据如下所示:['C$', 'ADMIN$', 'WSTemp', 'Disk #0, Partition #0 ']

有 14000 个单元格(数据以逗号分隔)要转换为行。我正在使用 Data-> text to column 函数,然后反转/转置数据。但是有什么比这更快的吗? 谢谢

【问题讨论】:

  • 是如何转置数据的问题;列成行?如果是,就说吧……如果不是,那么问题是什么?
  • @rfornal 有 14000 个单元格(['C$', 'ADMIN$', 'WSTemp', 'Disk #0, Partition #0'])要转换成行。我正在使用 Data-> text to column 函数,然后反转/转置数据。但是有什么比这更快的吗?谢谢!
  • A列的数据是?
  • @PJRosenburg 数据跨列分布:AW 到 BC
  • 我很难相信 VBA 宏会比等效的 Excel 函数更快。

标签: excel vba


【解决方案1】:

您不一定需要 VBA 来执行此操作。如果您转到 Excel 中的“数据”选项卡并转到“数据工具”部分,则有一个选项称为“文本到列”。单击它,您可以告诉函数您要分割每行文本的内容。在这种情况下,它将是“,”。这是特定于 Microsoft 2013 的。我知道此功能存在于 2010 年,尽管它可能不称为文本到列。祝你好运!

【讨论】:

  • 谢谢@Thomas Beck Sutton。我正在这样做。但是“逗号数据”超过一千个单元格。我正在寻找更快的解决方案。
【解决方案2】:

这在 VBA 中有效。

首先循环遍历源数据。

使用拆分,构建单元格中项目的数组,然后使用 UBound 获取数组中项目的数量。 删除任何额外的引号,这样您以后就不必再这样做了。

已测试:

这是修改后的答案:V4

Sub CellSplitToRows()

Dim lastRow As Long
Dim tempVals() As String
Dim valCount As Integer
Dim i As Long
Dim newLast As Long
Dim lastSourceRow As Long

lastSourceRow = Sheets("Sheet1").Cells(Rows.Count, "AW").End(xlUp).row

For r = 2 To lastSourceRow
    For lCol = 49 To 55     'Columns AW to BC
        tempVals() = Split(Sheets("Sheet1").Cells(r, lCol).Text, ",")
        valCount = UBound(tempVals) + 1      '+1 for Array index 0
        i = 0
        lastRow = Sheets("Sheet1").Cells(Rows.Count, "BE").End(xlUp).row
        newLast = lastRow + valCount
        For lRow = (lastRow + 1) To newLast
            Sheets("Sheet1").Cells(lRow, "BE") = Replace(tempVals(i), "'", "") 'Remove Single Quotes
            i = i + 1
        Next lRow
    Next lCol
Next r
End Sub

【讨论】:

  • 谢谢@PJ 罗森堡。我想要行中的数据。所以我将您的公式编辑为:Sub CellSplitToColumns()
  • 你想要的行在哪里?来源是 AW 到 BC 列?那么这些列中的每一列都有一个包含多个逗号分隔文本的单元格?你把它放在下面的行中吗?
  • 所以我有来自 AW-BC 的数据。我希望 (AW,3) 中的数据位于 BE 列的行下
  • 对不起。但我无法附上图片(我没有要求的积分)。我将处理您提供的代码。谢谢你。我会告诉你结果的。
  • 知道了。我正在解决它。会更新你。谢谢@P J Rosenburg。
猜你喜欢
  • 1970-01-01
  • 2010-11-17
  • 1970-01-01
  • 2015-10-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多