2013-02-12 5 views
1

Я пытаюсь написать эту функцию в клетке:Использование Excel функции с помощью VBA

=CONCATENATE("Blah",ROUND(COUNTA(I26:I34)/COUNTA(I4:I24,I26:I34)*100,0),"%") 

И вот что я прямо сейчас (я положил их в отдельных строках, так что легче читать):

DestBook.Worksheets("Sheet1").Range("I2").Value = 
DestBook.Application.WorksheetFunction.Concatenate("Blah ", 
WorksheetFunction.Round(WorksheetFunction.CountA("I4:I24")/
WorksheetFunction.CountA("I4:I24", "I26:I24") * 100, 0), "%") 

И это, кажется, не нравится, так как он дал эту ошибку: Объект не поддерживает это свойство или метод

я не уверен, если это то, что я устанавливаю значение неправильно или если моя формула неверно переведена , Может ли кто-нибудь взглянуть на него и посмотреть, что с ним не так? Благодаря!

+0

I4: I34 в Excel и I26: I24 в VBA? Вы используете разные диапазоны ... –

+0

Почему бы не использовать оператор '&' и 'Round()' VBA? Вот почему они здесь. – ja72

+0

И разделите ваше заявление на несколько шагов, чтобы выяснить, где проблема. – ja72

ответ

3

Попробуйте это:

Dim r1 As Range, r2 as Range, r3 as Range 
Set r1 = DestBook.Worksheets("Sheet1").Range("I4:I24") 
Set r2 = DestBook.Worksheets("Sheet1").Range("I26:I34") 
Set r3 = DestBook.Worksheets("Sheet1").Range("I2") 

Dim S1 as Double, S2 as Double 
S1 = WorksheetFunction.CountA(r1) 
S2 = WorksheetFunction.CountA(r1, r2) 

r3.Value = "Blah " & Format(S1/S2 * 100, "0") & "%" 

Я проверил его и он работает.

+0

Это потрясающе! Благодаря!! – user974047

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