Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/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 比较工作表中两个范围的值并计算重复值_Vba_Excel_Range - Fatal编程技术网

Vba 比较工作表中两个范围的值并计算重复值

Vba 比较工作表中两个范围的值并计算重复值,vba,excel,range,Vba,Excel,Range,我需要比较excel工作表中两个范围的值,如果发现值等于第二个范围中的另一个值,我会在该值附近的单元格中写入数字1,依此类推,将每个找到的值的数量增加1 Sub tbl() Dim Range1 As Range Set Range1 = Worksheets("Sheet1").Range("A1:C10") Dim Range2 As Range Set Range2 = Worksheets("Sheet2").Range("A1:A10") Dim cel As R

我需要比较excel工作表中两个范围的值,如果发现值等于第二个范围中的另一个值,我会在该值附近的单元格中写入数字1,依此类推,将每个找到的值的数量增加1

Sub tbl()

  Dim Range1 As Range
  Set Range1 = Worksheets("Sheet1").Range("A1:C10")
  Dim Range2 As Range
  Set Range2 = Worksheets("Sheet2").Range("A1:A10")
  Dim cel As Range
  Dim x As Integer
  Dim i, j As Integer

    For j = 1 To Range1.Count


        For i = 1 To Range2.Count

            If Range1(j).Value = Range2(i).Value Then

               x = x + 1
               Dim cel3 As Range
               Set cel3 = Range(Range2(i).Address)
               cel3.Offset(0, 1).Value = x

            End If
        Next i

     Next j
   End Sub

将要搜索的值加载到数组中,并在另一个范围上使用COUNTIF()以避免其中一个循环

Sub tbl()

Dim Range1 As Range
Dim Range2 As Variant
Dim range3() As Variant, j As Long

Set Range1 = Worksheets("Sheet1").Range("A1:C10")
Range2 = Worksheets("Sheet2").Range("A1:A10")

ReDim range3(1 To UBound(Range2, 1), 1 To 1)


For j = 1 To UBound(Range2, 1)
    range3(j,1) = Application.WorksheetFunction.CountIf(Range1, Range2(j,1))
Next j

Worksheets("Sheet2").Range("B1").Resize(UBound(range3), 1).Value = range3


End Sub

您不是在问问题,也不是在告诉我们上述代码的问题。我们是否应该猜测问题?当您更新问题以告诉我们您遇到了什么问题时,还应提及在运行代码时哪个工作表处于活动状态-是“Sheet1”、“Sheet2”还是其他工作表-以便我们可以告诉您将结果存储在何处。问题是:我的代码可以工作,但它给出了错误的结果。例如,我在单元格(1,1)中有值xx,在单元格(2,3)中有值xx,它们都在第一个范围内,我在第二个范围内有相同的值。我想比较和计算第一个范围内有相同值的单元格和第二个范围内有相同值的单元格,并写入相同值的次数counted@user3438908你的问题,,不要把属于OP的信息放在评论部分,为什么不直接使用
COUNTIF
?例如,假设您的活动工作表是Sheet2,则输入
=COUNTIF(Sheet1!$A$1:$C$10,Sheet2!$A1)
在B1单元格中,复制到B10单元格。谢谢,它可以正常工作,只需要对我要查找的内容进行一些更正。Scott Craner请说明如何将代码用于非连续范围,例如,我有六个非连续范围要查找值,这是一个新问题,值得发表一篇新文章。好的,我将发布一个新的帖子