Excel宏扫描单元格中的多个值。和循环

Excel宏扫描单元格中的多个值。和循环,excel,loops,vba,Excel,Loops,Vba,下面我有一个程序,它将进入一张工作表(库存),查看员工姓名,a列,如果与上面相同(上次) 如果单元格(i&“,”1“).Value=单元格(i-1&“,”1“).Value,则 然后看B列中的描述,如果它不在我需要的描述上,请转到下一行并重复。如果这是我需要的,那么将该行复制回活页J并复制到那里。重复冲洗泡沫。然而,目前它所做的只是为i添加另一个值并继续前进,这意味着它只是跳过了每一行。我需要添加什么循环以使其重新检查下一行,即对于相同的内容,I=3,并可能丢弃它 对于奖励积分,A列扫描不起作用

下面我有一个程序,它将进入一张工作表(库存),查看员工姓名,a列,如果与上面相同(上次)

如果单元格(i&“,”1“).Value=单元格(i-1&“,”1“).Value,则

然后看B列中的描述,如果它不在我需要的描述上,请转到下一行并重复。如果这是我需要的,那么将该行复制回活页J并复制到那里。重复冲洗泡沫。然而,目前它所做的只是为i添加另一个值并继续前进,这意味着它只是跳过了每一行。我需要添加什么循环以使其重新检查下一行,即对于相同的内容,I=3,并可能丢弃它

对于奖励积分,A列扫描不起作用。这方面的帮助太好了

Dim i As Integer
Dim j As Integer
Dim k As Integer

i = 2
j = 73
k = 3

ActiveCell.FormulaR1C1 = "Inventory"
Sheets("Inventory").Select
Do Until i = 4495
   If Cells(i & ",1").Value = Cells(i - 1 & ",1").Value Then
       Sheets("Inventory").Select
       Application.ScreenUpdating = False
       If Cells(i & ",2").Text <> "CONSUMABLES" _
           Or Cells(i & ",2").Text <> "FILTERS - BILLI TRIO" _
           Or Cells(i & ",2").Text <> "FILTERS - ZIP GENERIC" _
           Or Cells(i & ",2").Text <> "GOODS" _
           Or Cells(i & ",2").Text <> "HARDWARE FIXINGS" _
           Or Cells(i & ",2").Text <> "LIGHTING - 50W DICHROIC" _
           Or Cells(i & ",2").Text <> "LIGHTING - COMPACT BC/ES" _
           Or Cells(i & ",2").Text <> "LIGHTING - DICHROIC LAMP" _
           Or Cells(i & ",2").Text <> "LIGHTING - FLURO" _
           Or Cells(i & ",2").Text <> "LIGHTING - PLC LAMP 840/830" _
           Or Cells(i & ",2").Text <> "LIGHTING - PL-L" _
           Or Cells(i & ",2").Text <> "LIGHTING - PULSE STARTER" _
           Or Cells(i & ",2").Text <> "LIGHTING - STANDARD STARTER" _
           Or Cells(i & ",2").Text <> "LIGHTING - T5 FLURO" _
           Or Cells(i & ",2").Text <> "NITROGEN CHARGE" _
           Or Cells(i & ",2").Text <> "OXYGEN / ACETYLENE WELDING" _
           Or Cells(i & ",2").Text <> "R-134A" _
           Or Cells(i & ",2").Text <> "R-22" _
           Or Cells(i & ",2").Text <> "R-407C" _
           Or Cells(i & ",2").Text <> "R-410A" = 0 Then   
               i = i + 1
       Exit If
   Rows(i).Select
   Selection.Copy
   Sheets("Sheet" & j).Select
   Rows(k).Select
   ActiveSheet.Paste
   i = i + 1
   k = k + 1
Else
Dim i作为整数
作为整数的Dim j
将k变为整数
i=2
j=73
k=3
ActiveCell.FormulaR1C1=“库存”
工作表(“库存”)。选择
直到i=4495为止
如果单元格(i&“1”).Value=单元格(i-1&“1”).Value,则
工作表(“库存”)。选择
Application.ScreenUpdating=False
如果单元格(i&“2”)。文本“耗材”_
或单元格(i&“2”)。文本“过滤器-BILLI TRIO”_
或单元格(i&“2”)。文本“过滤器-ZIP通用”_
或单元格(i&“2”)。文本“货物”_
或单元(i&“2”)。文本“硬件固定件”_
或电池(i&“2”)。文本“照明-50W二向色性”_
或单元格(i&“2”)。文本“照明-紧凑型BC/ES”_
或电池(i&“2”)。文字“照明-二向色灯”_
或单元格(i&“2”)。文本“LIGHTING-FLURO”_
或单元(i&“2”)。文本“照明-PLC灯840/830”_
或单元格(i&“2”)。文本“照明-PL-L”_
或单元(i&“2”)。文本“照明-脉冲启动器”_
或单元(i&“2”)。文本“照明-标准启动器”_
或单元格(i&“2”)。文本“照明-T5 FLURO”_
或电池(i&“2”)。文本“氮电荷”_
或电池(i&“2”)。文本“氧气/乙炔焊接”_
或单元格(i&“2”)。文本“R-134A”_
或单元格(i&“2”)。文本“R-22”_
或单元格(i&“2”)。文本“R-407C”_
或单元格(i&“,2”)。文本“R-410A”=0
i=i+1
退出如果
行(i)。选择
选择,复制
图纸(“图纸”&j)。选择
行(k)。选择
活动表。粘贴
i=i+1
k=k+1
其他的
试试这个:

Option Explicit

Sub Sample()

Dim myarray
Dim wsInv As Worksheet
Dim rngDes As Range, rng As Range, cel As Range
Dim k As Long

Set wsInv = Thisworkbook.Sheets("Inventory")

'~~>Assign all cell in Column A with value
Set rng = wsInv.Range("A2", wsInv.Range("A" & Rows.Count).End(xlup).Address)

'~~> you identified j = 73 so I assign it directly
Set rngDes = Thisworkbook.Sheets("Sheet73").Range("A3")

'~~> assign all the compare values in an array
myarray = Array("CONSUMABLES", "FILTERS - BILLI TRIO", "FILTERS - ZIP GENERIC", _
    "GOODS", "HARDWARE FIXINGS", "LIGHTING - 50W DICHROIC", "LIGHTING - COMPACT BC/ES", _
    "LIGHTING - DICHROIC LAMP", "LIGHTING - FLURO", "LIGHTING - PLC LAMP 840/830", _
    "LIGHTING - PL-L", "LIGHTING - PULSE STARTER", "LIGHTING - STANDARD STARTER", _
    "LIGHTING - T5 FLURO", "NITROGEN CHARGE", "OXYGEN / ACETYLENE WELDING", _
    "R-134A", "R-22", "R-407C", "R-410A")

'~~> Initialize k to 0 to used in offet
k = 0
For Each cel in rng
    If cel.Value = cel.Offset(-1,0).Value Then
        If Not IsError(Application.Match(cel.Offset(0,1).value, myarray, 0)) Then  
            cel.EntireRow.Copy rngDes.Offset(k,0)
            k = k + 1
        End If
    End If
Next cel

End Sub
上面所做的是检查库存表A列中的每个值,如果有连续的值。
如果有,我会检查它的相邻单元格(B列)的值是否在
myarray

如果是,则会将整行复制到
Sheet73


这是你需要的吗

每个循环递增
i
两次。在if语句中和之后各一次。我不确定你想要你的代码做什么,所以我不能告诉你要删除/修改哪个。我想用大If检查冒号B中的值。如果它通过了冒号(在End If下面的所有内容),如果它失败,请在下一行重复(i=i+1)您能否显示
循环的其余部分?或者举一个简单的例子来说明你的问题?如果冒号a与上一个单元格不一样,那么剩下的部分就是一个条件,制作一张新的表格并格式化以供使用帮助我理解你的逻辑。所以,如果单元格(i,2)包含“消耗品”,您想复制它还是不复制它?这对我来说似乎非常有用,无论何时运行它,都会出现
Set rng=wsInv.Range(“A2”,ws.Range(“A”&Rows.Count).End(xlUp))
并出现运行时错误,表示需要对象。你能帮我吗?已经更正了密码。它应该是
Set rng=wsInv.Range(“A2”,ws.Range(“A”&Rows.Count).End(xlUp).Address)
。我试过你的更新版本,但遇到了同样的问题。我甚至不太了解这段代码,但可能是因为ws没有设置为顶部的范围吗?哦,对不起,我的错:(应该是
set rng=wsInv.range(“A2”,wsInv.range(“a”)和Rows.Count).End(xlUp).Address)
。现在编辑答案。真的很抱歉mate.np,很高兴它起作用。如果我提供了未经测试的代码,我表示歉意:D。有时,我没有自由测试每一个代码。