excel - 如何在一列中提取多个值以使用这些值创建新行(重复原始行中的所有其他信息)?

标签 excel

我有一个包含 12 多列和 200 多行的 Excel 电子表格。在其中一列 (ColB) 中,有多个值与单行关联。我想将此类记录转换为 B 列中具有单个值的多行。换句话说,我想将其转换为:

[ColA] [ColB] [ColC]

[蓝色] [1, 4, 7] [打开]
[红色] [2, 3]
[绿色] [5] [开放]

对此:

[ColA] [ColB] [ColC]

[蓝色] [1] [开放]
[蓝色] [4] [开放]
[蓝色] [7] [开放]
[红色] [2]
[红色] [3]
[绿色] [5] [开放]

有什么建议么?谢谢!

最佳答案

我最喜欢在 Excel 中处理数据的方法是使用 Range 对象表示一行数据(我称之为“光标”)。您可以使用 Offset 方法将光标向下移动一行,然后循环直到光标中的特定单元格为空。有很多方法可以识别 Excel 工作表中的“最后一行”,但它们都有缺点 - 我只是更喜欢识别数据中不应为空的列,并在到达空白单元格时终止循环。

Dim cursor As Range
Dim x As Variant
Dim i As Long

Set cursor = Range("A2:C2")

Do Until IsEmpty(cursor(1))
    x = Split(cursor(2), ",")

    If UBound(x) > 0 Then
        cursor(2) = x(0)
        For i = 1 To UBound(x)
            cursor.EntireRow.Insert
            With cursor.Offset(-1)
                cursor.Copy .Cells(1)
                .Cells(2) = x(i)
            End With
        Next
    End If

    Set cursor = cursor.Offset(1)
Loop

关于excel - 如何在一列中提取多个值以使用这些值创建新行(重复原始行中的所有其他信息)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21890970/

相关文章:

excel - 尝试使用 Microsoft.Office.Interop.Excel.Workbooks.Open() 打开 Excel 时出现异常 HResult 0x800a03ec

excel - 在 Excel 中使用类似 VLOOKUP 的函数搜索非最左边的值

如果表中的值满足条件,Vba 宏将从表中复制行

excel - 在具有稳定跳跃的数字组上使用 excel 函数

java - 在Java中读取Excel(.xls)文件的几列

javascript - 如何在 Excel VBA 中使用 Selenium Webdriver 滚动下拉菜单

javascript - div 中的 Html 表格导出到 excel

excel - 拆分,转义某些拆分

python - 在Python中使用行中的多个csv文件

excel - 使用批处理文件从多个 csv 文件中删除特殊字符