VBA-嵌套用于循环替换或忽略一个值(如果满足一次)

VBA-嵌套用于循环替换或忽略一个值(如果满足一次),vba,Vba,下面的代码可以工作,但我相信一定有更好的方法。我想听听其他的策略 我的代码的目的是找出任何字母(Z,A,B,C)旁边对应的单元格中是否有值1。如果这个字母是,我想复制这个字母的所有对应值 第1列\第2列 Z 0 Z______1 C______1 A 0 C______1 B 0 结果: Z 0 Z______1 C______1 C______1 我标记了包含字母的行,该字母已经满足了包含“1”和“RHO”的标准。这是我的快速修复,以防止它复制值两次(即,上面的C行被复制了两次,因为出现了两次

下面的代码可以工作,但我相信一定有更好的方法。我想听听其他的策略

我的代码的目的是找出任何字母(Z,A,B,C)旁边对应的单元格中是否有值1。如果这个字母是,我想复制这个字母的所有对应值

第1列\第2列

Z 0

Z______1

C______1

A 0

C______1

B 0

结果:

Z 0

Z______1

C______1

C______1

我标记了包含字母的行,该字母已经满足了包含“1”和“RHO”的标准。这是我的快速修复,以防止它复制值两次(即,上面的C行被复制了两次,因为出现了两次1)

子测试区()
变暗rng As范围
将wb设置为工作簿
暗卡提德
暗室
淡色可乐
设置wb=ThisWorkbook
对于wb.Sheets(1).range(“B1”,单元格(Sheets(1).Rows.Count,2).End(xlUp))
如果cell.Value=1,则
catid=单元偏移量(0,-1).Value
对于wb表格(1)范围(“A1:A10”)中的每一列1
如果col1=catid和col1.Offset(0,2)“RHO”,则
wb.Sheets(1).行(col1.Row).复制wb.Sheets(2).单元格(Rows.Count,1).结束(xlUp).偏移量(1,0)
col1.偏移量(0,2).Value=“RHO”
如果结束
下一个col1
如果结束
下一个细胞
端接头

是否仅复制每列中的唯一值?我使用此选项将唯一值存储到数组中,然后将该数组加载到组合框列表中。稍微调整一下,这应该对你有用
Dim v,e With Sheets(“CTK1INV”).Range(“Table17[CTK]”)v=.Value以CreateObject(“scripting.dictionary”)结尾。comparemode=1表示v中的每个e,如果不存在,则存在(e)。添加e,如果不存在,则不添加任何内容。Count Then Me.ComboBox\u CTK.List=Application.Transpose(.keys)以
结尾(似乎无法获得正确的格式)
  Sub Testzone()
  Dim rng As range
  Dim wb As Workbook
  Dim catid
  Dim cell
  Dim col1

  Set wb = ThisWorkbook
For Each cell In wb.Sheets(1).range("B1", Cells(Sheets(1).Rows.Count, 2).End(xlUp))

If cell.Value = 1 Then
     catid = cell.Offset(0, -1).Value

       For Each col1 In wb.Sheets(1).range("A1:A10")
           If col1 = catid And col1.Offset(0, 2) <> "RHO" Then
                wb.Sheets(1).Rows(col1.Row).Copy wb.Sheets(2).Cells(Rows.Count, 1).End(xlUp).Offset(1, 0)
                col1.Offset(0, 2).Value = "RHO"
            End If
        Next col1
End If
 Next cell

 End Sub