#excel #excel-2007 #vba
#excel #excel-2007 #vba
Вопрос:
Я хотел бы посчитать определенные числа из массива, определенного внутри функции, из диапазона ячеек. Вот мой код:
Function countNumbers(cell As Range)
Dim rCell As Range
Dim myArray(25) As Integer
myArray(0) = 1
myArray(1) = 2
myArray(2) = 3
myArray(3) = 4
myArray(4) = 5
myArray(5) = 11
myArray(6) = 12
myArray(7) = 13
myArray(8) = 14
myArray(9) = 15
myArray(10) = 21
myArray(11) = 22
myArray(12) = 23
myArray(13) = 24
myArray(14) = 25
myArray(15) = 31
myArray(16) = 32
myArray(17) = 33
myArray(18) = 34
myArray(19) = 35
myArray(20) = 41
myArray(21) = 42
myArray(22) = 43
myArray(23) = 44
myArray(24) = 45
For Each rCell In cell.Cells
For i = LBound(myArray) To UBound(myArray)
If rCell.Value = myArray Then
countNumbers = countNumbers 1
End If
Next i
Next rCell
End Function
Ошибка, которую я получаю, — это «Несоответствие типов» в первой строке кода. Я использую Ms-Excel 2007. Спасибо
Комментарии:
1. внутри вашего цикла измените свою строку
If rCell.Value = myArray Then
If rCell.Value = myArray(i) Then
так, как вы пытаетесь проверить критерии каждой ячейки внутри массива2. Кроме того, измените
Dim myArray(25) As Integer
значение toDim myArray(24) As Integer
, иначе последний элемент будет пустым, а все пустые ячейки войдут в вашиIf
критерии.3. @ShaiRado можете ли вы добавить свои исправления в качестве ответа, чтобы принять его, пожалуйста!
Ответ №1:
Function countNumbers(cell As Range)
Dim rCell As Range
Dim myArray(24) As Integer
myArray(0) = 1
myArray(1) = 2
myArray(2) = 3
myArray(3) = 4
myArray(4) = 5
myArray(5) = 11
myArray(6) = 12
myArray(7) = 13
myArray(8) = 14
myArray(9) = 15
myArray(10) = 21
myArray(11) = 22
myArray(12) = 23
myArray(13) = 24
myArray(14) = 25
myArray(15) = 31
myArray(16) = 32
myArray(17) = 33
myArray(18) = 34
myArray(19) = 35
myArray(20) = 41
myArray(21) = 42
myArray(22) = 43
myArray(23) = 44
myArray(24) = 45
For Each rCell In cell.Cells
For i = LBound(myArray) To UBound(myArray)
If rCell.Value = myArray(i) Then
countNumbers = countNumbers 1
End If
Next i
Next rCell
End Function