2016-03-01 5 views
0

Я кодировал цикл, и мне было интересно, почему мой макрос не работает. Идея макроса - определить количество недель в месяце. Зная имя рабочего дня месяца, я могу подсчитать количество этих событий в течение недели. Ее это:countif syntahx in vba

Dim dbNbSemaines As Double 
Dim strAbrevJourMois As String 

strAbrevJourMois = Range("E4").Value 

If strAbrevJourMois = "lun" Then 
Range("A404").FormulaR1C1 = "=COUNTIF(E4:AB4,""lun"")" 
    dbNbSemaines = Range("A404").Value 

ElseIf strAbrevJourMois = "mar" Then 
    Range("A404").FormulaR1C1 = "=COUNTIF(E4:AB4,""mar"")" 
    dbNbSemaines = Range("A404").Value 

ElseIf strAbrevJourMois = "mer" Then 
    Range("A404").FormulaR1C1 = "=COUNTIF(E4:AB4,""mer"")" 
    dbNbSemaines = Range("A404").Value 

ElseIf strAbrevJourMois = "jeu" Then 
    Range("A404").FormulaR1C1 = "=COUNTIF(E4:AB4,""jeu"")" 
    dbNbSemaines = Range("A404").Value 

ElseIf strAbrevJourMois = "ven" Then 
    Range("A404").FormulaR1C1 = "=COUNTIF(E4:AB4,""ven"")" 
    dbNbSemaines = Range("A404").Value 

End If

Когда я иду в A404 ячейку, содержащую формулу СЧЕТЕСЛИ она возвращает #NOM? и содержит =NB.SI('E4':'AB4';"lun"). Как я могу записать его в vba для вставки диапазона E4: AB4 в формулу COUNTIF?

Спасибо за вашу помощь

+0

Try 'NB.SI' вместо' COUNTIF' –

+0

@ Gary'sStudent - УВА [.Formula] (https://msdn.microsoft.com/en-us/library/office/ff838835. aspx) и [.FormulaR1C1] (https://msdn.microsoft.com/en-us/library/bb213527.aspx) ожидают [COUNTIF] (https://support.office.com/en-US/article/COUNTIF -функции-E0DE10C6-F885-4E71-ABB4-1F464816DF34). Чтобы использовать «языковые» функции региональной языковой функции, такие как [NB.SI] (https://support.office.com/fr-fr/article/NB-SI-NB-SI-fonction-E0DE10C6-F885-4E71-ABB4-1F464816DF34), тогда вместо этого следует использовать свойство [Range.FormulaLocal] (https://msdn.microsoft.com/en-us/library/office/ff838851.aspx). – Jeeped

+0

@ Jeeped ............ спасибо! –

ответ

0

Изменение:

Range("A404").FormulaR1C1 = "=COUNTIF(E4:AB4,""lun"")" 

в

Range("A404").Formula = "=COUNTIF(E4:AB4,""lun"")" 

(то же самое для других формул)

Если вы хотите придерживаться `.FormulaR1C1 то вам придется написать

Range("A404").FormulaR1C1 = "=COUNTIF(R[-400]C[4]:R[-400]C[27],""lun"")" 
1

Простой случай выбора достаточно думаю.

Dim dbNbSemaines As Long 
Dim strAbrevJourMois As String 

strAbrevJourMois = LCase(Range("E4").Value) 

Select Case strAbrevJourMois 
    Case Is = "lun", "mar", "mer", "jeu", "ven" 
     Range("A404").Formula = "=COUNTIF(E4:AB4,""" & strAbrevJourMois & """)" 
     dbNbSemaines = Range("A404").Value 
End Select