【问题标题】:Duplicating line when cell has values separated by commas当单元格具有用逗号分隔的值时复制行
【发布时间】:2016-07-30 17:40:37
【问题描述】:

当第 6 列中有用逗号分隔的值(多行)时,我需要将每一行拆分为 2。

示例(从 2 行开始):

A  B  C  D  E  F  G0 ,G1 
A* B* C* D* E* F* G0*,G1*

变成:

A  B  C  D  E  F  G0
A  B  C  D  E  F  G1
A* B* C* D* E* F* G0*
A* B* C* D* E* F* G1*

【问题讨论】:

  • 这是对这个问题的跟进:stackoverflow.com/questions/38674587/…
  • @ShaiRado 我已采用标记为正确的答案,但尚未完成拆分。在那里你可以看到我的初始代码。
  • 您在该问题中的所有示例都没有在第 6 列中显示逗号,也没有在您使用逗号时显示您希望结果的样子。再次,发布您尝试解决此问题的内容,以及您的数据和所需输出的示例。但是text to columns 向导是一种拆分方式。请阅读How do I Ask a Good QuestionHow to create a Minimal, Complete, and Verifiable example 的帮助主题
  • @jony 这些程序的原因是为了让您提出明确的问题,并获得有用的信息。当您发布不清楚的问题时,通常会浪费很多时间,因为人们试图解释(通常是错误的)您真正想要的是什么。花更多的时间来设计好的问题和提供好的例子可能会更好地为你服务。当然,您可能会很幸运,无论如何,有人可能会为您找到正确的答案!
  • 是的,你是对的。看到我赶不上最后期限,我真的很紧张:(

标签: arrays vba excel flatten


【解决方案1】:

改用Split delimited 2nd and 3rd column data into new rows

Option Explicit

Sub split_out()
    Dim v As Long, vVALs As Variant, vSPLITs As Variant
    Dim rw As Long, lr As Long, mx As Long

    With Worksheets("Sheet4")
        lr = .Cells(Rows.Count, 1).End(xlUp).Row
        For rw = lr To 2 Step -1
            vVALs = .Cells(rw, 1).Resize(1, 7).Value2
            vSPLITs = Split(vVALs(1, 7), Chr(44))
            For v = UBound(vSPLITs) To LBound(vSPLITs) + 1 Step -1
                .Rows(rw + 1).EntireRow.Insert
                .Cells(rw + 1, 1).Resize(1, 6) = _
                    Array(vVALs(1, 1), vVALs(1, 2), vVALs(1, 3), vVALs(1, 4), vVALs(1, 5), vVALs(1, 6))
                .Cells(rw + 1, 7) = Trim(vSPLITs(v))
            Next v
            .Cells(rw, 7) = Trim(vSPLITs(v))
        Next rw
    End With

End Sub


     从此...


     ...进入这个。

【讨论】:

  • 我会谦虚地建议你停止你正在做的事情,并回顾过去几个小时内提供给你的例子。逐行逐行阅读代码,如果您不了解任何内容,请从自己的一些研究开始。运行你不理解的代码是(很简单)鲁莽的。
  • ".Cells(rw, 7) = Trim(vSPLITs(v))" 此行抛出下标超出范围错误
  • 该行的 G 列中可能没有任何内容。插入 if 以确保 v >= 零。
  • 我知道问题出在哪里了...不是 g 列而是 F 列!
  • 我将第7行的所有引用都更改为第6行。拆分后原始行中的额外数据没有被删除
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多