2015-03-14 1 views
0

У меня есть проблема с этим кодом, и я не могу его решить.Сравните два набора диапазонов и MsgBox количество и значение общих значений ячейки

У меня есть два набора диапазонов; Диапазон («C14: C19») и диапазон («E14: E19»), каждый из которых содержит 6 чисел, генерируемых случайным образом (я уже закодировал случайный выбор).

Моя цель состоит в том, чтобы после генерации чисел сравнить оба диапазона. Если оба диапазона содержат одинаковые номера, Я хочу MsgBox количество одинаковых номеров, найденных в обоих диапазонах, а также значение каждого числа.

Пример: После генерации чисел, если оба диапазоны имеют значения, 9 и 7 общего, то МздВох будет выглядеть так:

Существует/есть 2 номер (а) в выигрышной комбинации и это/есть значение (-ы): /, 7, 9

Вот что я смог сделать до сих пор.

Private Sub Compare() 

    Dim rgnChoix As Range, rgnTirage As Range, i As Range, j As Range, iVal As Integer 

    Set rgnChoix = Range("C14:C19") 
    Set rgnTirage = Range("E14:E19") 

     For Each i In rgnChoix.Cells 

      For Each j In rgnTirage.Cells 

       If i.value = j.value Then 

        MsgBox "There is/are" & " " & iVal & " " & "number(s) in the winning combination and it's/there value(s) is/are :" & " " & i.value, , "Erika" 
         Exit Sub 

       End If 
      Next j 
      Next i 

    iVal = Application.WorksheetFunction.CountIf(Range("C14:C19"),"i.value=j.value") 

End Sub 

Спасибо! Erika

ответ

0

Он может работать по вашему желанию. Но если одно и то же число встречается более одного раза в диапазоне, он считает его отдельным поединком. Он рассчитывает все поединки отдельно. Если один диапазон включает в себя два 4, а другой включает три 4, он подсчитывает шесть совпадений.

Private Sub Compare() 
    Dim rgnChoix As Range, rgnTirage As Range, i As Range, j As Range, iVal As Integer, sVal As String 
    Set rgnChoix = Range("C14:C19") 
    Set rgnTirage = Range("E14:E19") 
    For Each i In rgnChoix.Cells 
     For Each j In rgnTirage.Cells 
      If i.Value = j.Value Then 
       iVal = iVal + 1 
       sVal = sVal & "," & CStr(i.Value) 
      End If 
     Next j 
    Next i 
    sVal = Mid(sVal, 2) 
    MsgBox "There is/are" & " " & iVal & " " & "number(s) in the winning combination and it's/there value(s) is/are :" & " " & sVal, , "Erika" 
End Sub 
Смежные вопросы