2015-08-24 6 views
1

Я хотел бы создать функцию, которая перебирает определенные значения ячеек. Если значение содержит "X", счетчик должен увеличиваться на 1.Создать цикл по диапазонам Excel

Синтаксис должен быть что-то вроде этого:

Sub CountVars() 

Dim range As Variant 
Dim ranges As Variant 

Dim count as Integer 

'set array with ranges 
range = Array("c3", "f3", h3) 

For Each range In ranges 

    count = 0 
    'if range = "X" then 
    count = count + 1 
    End If  
Next 

Но я не могу получить эту работу. Любые мысли о том, как я могу достичь своей цели?

ответ

2

Вы можете определить свои диапазоны в пределах функции Range() напрямую. Нет необходимости в строчном массиве. Например:

Dim r As Range, count As Long 

For Each r In Range("C3,F3,H3") 
    If r.Value = "X" Then count = count + 1 
Next 

Обратите внимание, что сравнение строк осуществляется таким образом с учетом регистра. Если вам нужно проверить x или X, вы можете конвертировать в тот же самый случай или использовать функцию, например StrComp(), с параметром vbTextCompare.

If UCase$(r.Value) = "X" Then ... 
' or 
If StrComp(r.Value, "X", vbTextCompare) = 0 Then ... 
+0

благодарит за ваш ответ. Ваш код дает мне ошибку компиляции: (неправильное количество аргументов или недопустимое присвоение свойств. Любые мысли, где это происходит не так? –

+0

На какой строке? Я не вижу здесь никаких проблем. – Bond

+0

дает ошибку в начале, где я declare my funcion -> Sub cDays() –

Смежные вопросы