Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.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
Vba 在数组中循环,然后移动一些元素_Vba_Excel - Fatal编程技术网

Vba 在数组中循环,然后移动一些元素

Vba 在数组中循环,然后移动一些元素,vba,excel,Vba,Excel,因此,我试图编写一段代码,循环遍历一个数组,并找出该元素是否在另一个数组中,然后我尝试使用它们,因为我是VBA的新手,一些代码是我自己编写的,一些代码是我从这里借用的(如下面的函数) 更清楚的是(正如你在下面看到的-链接到一个屏幕截图),我在列数据中循环,看看每个元素(在每个单元格中)是否在我左边的列表中。如果是,则应在数据列旁边提取。但到目前为止,我写的只是提取元素中的一个。我不确定我应该在哪里添加一些条件,就像下面的屏幕上一样 谢谢您的建议。您遇到的问题是 Cells(i, 4) = pa

因此,我试图编写一段代码,循环遍历一个数组,并找出该元素是否在另一个数组中,然后我尝试使用它们,因为我是VBA的新手,一些代码是我自己编写的,一些代码是我从这里借用的(如下面的函数)

更清楚的是(正如你在下面看到的-链接到一个屏幕截图),我在列数据中循环,看看每个元素(在每个单元格中)是否在我左边的列表中。如果是,则应在数据列旁边提取。但到目前为止,我写的只是提取元素中的一个。我不确定我应该在哪里添加一些条件,就像下面的屏幕上一样


谢谢您的建议。

您遇到的问题是

Cells(i, 4) = partVal
这将始终将找到的项放入D列,每次找到新项时都会覆盖以前的值。您可以通过生成一个计数器变量来解决这个问题

Dim count As Integer

For i = 2 To maxRow
    fullVal = dataSheet.Cells(i, 3).Value
    splitArray() = Split(fullVal, "|")
    count = 4
    For j = 0 To UBound(splitArray)
        partVal = splitArray(j)
        If isInArray(partVal, List_Array) = False Then
            Cells(i, count) = partVal
            count = count + 1 
        End If

    Next j
Next i
这将在任何时候发现匹配项时增加列号,并在开始检查新词时将其重置回起始位置

Dim count As Integer

For i = 2 To maxRow
    fullVal = dataSheet.Cells(i, 3).Value
    splitArray() = Split(fullVal, "|")
    count = 4
    For j = 0 To UBound(splitArray)
        partVal = splitArray(j)
        If isInArray(partVal, List_Array) = False Then
            Cells(i, count) = partVal
            count = count + 1 
        End If

    Next j
Next i