Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/15.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 for Excel:将唯一元素与另一列重复元素进行比较_Excel_Vba - Fatal编程技术网

VBA for Excel:将唯一元素与另一列重复元素进行比较

VBA for Excel:将唯一元素与另一列重复元素进行比较,excel,vba,Excel,Vba,我一直在研究一个解决方案,它可以计算出一列唯一值的距离,如果你们能帮助我,我会非常感激,因为我对编程是新手 我已经从一张纸到另一张纸做了一张复制粘贴,(A列作为一张线缆列表,B列是该线缆所需的距离。然后,我清理空白单元格,而不是一个0。然后,我在3列中删去了0个。 在第三列中,我开发了一些代码,以提供第1列中的唯一值列表 我的下一个目标是创建唯一值的计数(第3列),将其与第1列进行比较。如果电缆X在第1列中出现一次以上,则其距离必须在第4列(计数列)的第一行中增加。否则,将添加到第二行,以此类推

我一直在研究一个解决方案,它可以计算出一列唯一值的距离,如果你们能帮助我,我会非常感激,因为我对编程是新手

我已经从一张纸到另一张纸做了一张复制粘贴,(A列作为一张线缆列表,B列是该线缆所需的距离。然后,我清理空白单元格,而不是一个0。然后,我在3列中删去了0个。

在第三列中,我开发了一些代码,以提供第1列中的唯一值列表

我的下一个目标是创建唯一值的计数(第3列),将其与第1列进行比较。如果电缆X在第1列中出现一次以上,则其距离必须在第4列(计数列)的第一行中增加。否则,将添加到第二行,以此类推

你们能帮我写代码吗?我要留下一个版本的代码。 谢谢

Private Sub CommandButton4_Click()
Dim LastRow As Long, LastRow2 As Long, LastRow3 As Long
Dim sh As Worksheet, rng As Range
Dim a As Range, b As Range, c As Range
Dim x As Integer, contagem As String

For j = 1 To 1432

'limpar células em branco acrescentando 0 às células sem valor na distância   
Next j
  For Each a In Range("A1:A1432").Cells
     If a.Value = "" Then a.Value = 0
  Next a
  For Each b In Range("B1:B1432").Cells
    If b.Value = "" Then b.Value = 0
    Next b
Range("B1:B1432").Select
For Each c In Selection
    If Not c.HasFormula And Not IsEmpty(c) Then c = Val(c)
Next c

'Eliminar o valor 0 da coluna D

Set sh = Folha4
LastRow = sh.Range("d" & Rows.Count).End(xlUp).Row
LastRow2 = sh.Range("b" & Rows.Count).End(xlUp).Row
LastRow3 = sh.Range("a" & Rows.Count).End(xlUp).Row

For i = 1 To LastRow
    If Cells(i, 4).Value <> "0" Then
        Cells(counter + 1, 4).Value = Cells(i, 4).Value
        counter = counter + 1
    End If
Next i

With ActiveSheet
    .Range("D1", .Range("D1").End(xlDown)).RemoveDuplicates Columns:=1, Header:=xlNo
End With

Set items = CreateObject("Scripting.Dictionary")

    For i = 1 To LastRow3
        If Not items.exists(sh.Range("A" & i).Value) Then
        items.Add sh.Range("A" & i).Value, i
            For x = 1 To LastRow
                If sh.Range("d" & x).Value = sh.Range("A" & i).Value Then
                sh.Range("e" & x).Value = sh.Range("b" & x)
                x = sh.Range("d" & Rows.Count).End(xlUp).Row
                End If
            Next x
        Else
            For x = 1 To LastRow
                If sh.Range("d" & x).Value = sh.Range("A" & i).Value Then
                sh.Range("e" & x).Value = sh.Range("b" & x).Value + items(sh.Range("a" & i).Value)
                End If
            Next x
        End If
    Next i
End Sub
Private子命令按钮4\u单击()
调暗LastRow的长度,LastRow2的长度,LastRow3的长度
调暗sh作为工作表,rng作为范围
调暗a为范围,b为范围,c为范围
Dim x为整数,CONTAGE为字符串
对于j=1至1432
“limpar células em branco acrescentando 0ás células sem valor na disténcia
下一个j
对于范围内的每个a(“A1:A1432”)。单元格
如果a.Value=”“,则a.Value=0
下一个
对于范围内的每个b(“B1:B1432”)。单元格
如果b.Value=”“,则b.Value=0
下一个b
范围(“B1:B1432”)。选择
对于选择中的每个c
如果不是c.HasFormula且不是IsEmpty(c),则c=Val(c)
下一个c
伊莱米娜·奥瓦洛尔·达科鲁纳·德
设置sh=Folha4
LastRow=sh.Range(“d”和Rows.Count).End(xlUp).Row
LastRow2=sh.Range(“b”和Rows.Count).End(xlUp).Row
LastRow3=sh.Range(“a”和Rows.Count).End(xlUp).Row
对于i=1到最后一行
如果单元格(i,4)的值为“0”,则
单元格(计数器+1,4)。值=单元格(i,4)。值
计数器=计数器+1
如果结束
接下来我
使用ActiveSheet
.Range(“D1”),.Range(“D1”).End(xlDown)).removedupplicates列:=1,标题:=xlNo
以
Set items=CreateObject(“Scripting.Dictionary”)
对于i=1到最后一行3
如果不存在items.exists(sh.Range(“A”&i).Value),则
项目。添加sh.Range(“A”&i)。值,i
对于x=1到最后一行
如果sh.Range(“d”&x).Value=sh.Range(“A”&i).Value,则
sh.Range(“e”和x).Value=sh.Range(“b”和x)
x=sh.Range(“d”和Rows.Count).End(xlUp).Row
如果结束
下一个x
其他的
对于x=1到最后一行
如果sh.Range(“d”&x).Value=sh.Range(“A”&i).Value,则
sh.Range(“e”和x).Value=sh.Range(“b”和x).Value+项目(sh.Range(“a”和i).Value)
如果结束
下一个x
如果结束
接下来我
端接头

您有一列列出了唯一值?如果是,则只需
NumberOfUniqueValues=工作表(“Sheet1”)。范围(“C:C”)。单元格。特殊单元格(xlCellTypeConstants)。计数
,即“C”具有唯一值的列的名称我有一个具有唯一元素的列。第一列是另一张图纸的副本,第二列是电缆的距离,第三列是唯一值