由逗号分隔到数组的多值单元格

时间:2016-11-11 07:30:47

标签: arrays excel vba

我是VBA的新手,而且我遇到了必须拆分并复制整列(C)的多值单元格的点,这些单元格用逗号分隔成一个数组。并将其安排到相应的列 的假设:

  C1 = oranges,grapes,apple ; C2 = apple,mango ; C786 = watermelon,oranges,plum

它应该到各自的列,芒果的所有值应该到E列,苹果到F,西瓜到G,然后到下一列 我想要实现的是

Initially -::-

    A           B                 E     F           G       H      I      J     K
  Seller   FruitSell            Mango  Apple  Watermelon Grapes Orange  Plum Banana
 Seller1  Oranges,Grapes,Apple            
 Seller2  Only Mango            
 Seller3  Plum,Banana   
 Output :-:          
    A           B                 E     F           G       H      I      J     K
  Seller   FruitSell            Mango  Apple  Watermelon Grapes Orange  Plum Banana
 Seller1  Oranges,Grapes,Apple         Apple             Grapes Orange    
 Seller2  Only Mango            Mango
 Seller3  Plum,Banana                                                   Plum Banana                                      

提前致谢

2 个答案:

答案 0 :(得分:1)

这是公式的解决方案: solution

如果VBA类似但不太理想,你必须循环遍历行和列并插入相应的水果(如果它存在于B列中)。

答案 1 :(得分:0)

如果您想将其作为VBA代码,可以从以下内容开始:

Option Explicit

Sub TestMe()

    Dim my_dict             As Object
    Dim my_str              As String
    Dim my_arr              As Variant
    Dim my_key              As Variant
    Dim l_counter           As Long

    Set my_dict = CreateObject("Scripting.Dictionary")
    my_str = "ora,gra,app,app,app,man,man" 'Range(Cells(2, 2),cells(6,2))
    my_arr = Split(my_str, ",")

    For l_counter = LBound(my_arr) To UBound(my_arr)
        If my_dict.exists(my_arr(l_counter)) Then
            my_dict(my_arr(l_counter)) = my_dict(my_arr(l_counter)) + 1
        Else
            my_dict.Add my_arr(l_counter), 1
        End If
    Next l_counter

    For Each my_key In my_dict.Keys
        Debug.Print my_key, my_dict(my_key)
    Next my_key


End Sub

在你的情况下,你应该为每个带有水果的细胞放一个循环,把它写到my_str。最后你会得到一本很好的词典,里面有所有的成果。

尝试代码,它可以工作并在即时窗口中生成一些东西。