Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 逗号分隔为多列中的行_Excel_Vba_Comma - Fatal编程技术网

Excel 逗号分隔为多列中的行

Excel 逗号分隔为多列中的行,excel,vba,comma,Excel,Vba,Comma,更新-底部的最终解决方案 我试图制作如下数据: 身份证件 H柱 一栏 1. 鲍勃,乔 树、苹果、狗 2. 蒂姆,汤姆,塔姆 猫 我想你可以简化它,如下所示。这会将结果放置在新图纸上,从而保留原始结果 在每种情况下,这都是对数组进行转置和复制,唯一的区别是如果两个数组的大小不同,则空白的位置也不同。测试最少,因此可能出现故障 Sub x() Dim r As Long, ws As Worksheet, vH, vI, i As Long, j As Long, n As Long Set w

更新-底部的最终解决方案

我试图制作如下数据:

身份证件 H柱 一栏 1. 鲍勃,乔 树、苹果、狗 2. 蒂姆,汤姆,塔姆 猫
我想你可以简化它,如下所示。这会将结果放置在新图纸上,从而保留原始结果

在每种情况下,这都是对数组进行转置和复制,唯一的区别是如果两个数组的大小不同,则空白的位置也不同。测试最少,因此可能出现故障

Sub x()

Dim r As Long, ws As Worksheet, vH, vI, i As Long, j As Long, n As Long

Set ws = Worksheets.Add

For r = 2 To Sheet1.Cells(Rows.Count, "H").End(xlUp).Row 'may need to change sheet reference
    vH = Split(Sheet1.Cells(r, "H"), ",")
    vI = Split(Sheet1.Cells(r, "I"), ",")
    n = ws.Cells(Rows.Count, "G").End(xlUp).Row + 1 'whatever column has ID
    If UBound(vH) >= UBound(vI) Then
        ws.Cells(n, "G").Resize(UBound(vH) + 1).Value = Sheet1.Cells(r, "G").Value
    Else
        ws.Cells(n, "G").Resize(UBound(vI) + 1).Value = Sheet1.Cells(r, "G").Value
    End If
    ws.Cells(n, "H").Resize(UBound(vH) + 1).Value = Application.Transpose(vH)
    ws.Cells(n, "I").Resize(UBound(vI) + 1).Value = Application.Transpose(vI)
Next r

End Sub

你的问题具体是什么?在任何情况下,只要看看这个,而不设置数据和代码来调试它,allcount总是>0,或者如果rcount和qcount都=0,您可能不应该启动循环,因为这样您将循环i=1到0。如果没有步骤-1(即,对于i=1到0的步骤-1),当rcount和qcount为0时,该循环将永远不会执行。有些行的allcount将为零,其中列i和H都只有一个值。在这种情况下,我不需要“For”来触发,因为没有数据可以触发。我当前的问题是if allcount>0。我试着做一些类似的事情,比如取最后一个逗号后的值并将其放入行中,然后从“v”中删除该值,然后在下一行上取逗号后的最后一个值,直到值用完为止。如果这更容易的话,我也可以从第一个到最后一个。谢谢这是惊人的,工作完美,所以更简单。如果有更多的列需要以相同的方式分隔逗号分隔的值,是否有一种简单的方法使其工作?我在J,K,和LAre J,K和L列中也有它们,和G,H和I一样(在布局方面)?如果只是这两个集合,那么最好还是像最初一样使用最大值,然后将其合并到上面的代码中。在你澄清之前,我可以修改。我做到了!谢谢你的帮助