2016-11-19 4 views
1

У меня есть небольшая проблема с файлом excel. я использую приведенную ниже формулу в целях:if-countif больше 7

функция возвращает значение, если выбранная ячейка содержит другое значение (строка). эта работа отлично. НО у меня есть 20 if/countif, чтобы добавить, и он не работает, потому что я не могу получить более 7 ... Любая идея решить эту проблему легко? Я даю вам также код VBA под кодом первенствовать ...

Большое спасибо за помощь

=SI(NB.SI([@[ENTRY_LABEL]];"*MAZ*");"MAZ";SI(NB.SI([@[ENTRY_LABEL]];"*MGN*");"MGN";SI(NB.SI([@[ENTRY_LABEL]];"*Magnitude*");"MGN";SI(NB.SI([@[ENTRY_LABEL]];"*AJU*");"AJU";SI(NB.SI([@[ENTRY_LABEL]];"*Reclas*");"Reclass";""))))) 

VBA код:

Range(ActiveCell, ActiveCell.End(xlDown)).SpecialCells(xlCellTypeVisible).FormulaR1C1 = "=IF(COUNTIF(Tableau4[[#This Row],[ENTRY_LABEL]],""*MAZ*""),""MAZ"",IF(COUNTIF(Tableau4[[#This Row],[ENTRY_LABEL]],""*MGN*""),""MGN"",IF(COUNTIF(Tableau4[[#This Row],[ENTRY_LABEL]],""*Magnitude*""),""MGN"",IF(COUNTIF(Tableau4[[#This Row],[ENTRY_LABEL]],""*AJU*""),""AJU"",IF(COUNTIF(Tableau4[[#This Row],[ENTRY_LABEL]],""*Reclas*""),""Reclass"","""")))))" 

ответ

0

В этом случае, вы можете использовать VBA формула. Просто написать что-то вроде этого в редакторе Visual Basic, в уровне модуля:

Public Function many_ifs(my_cell As Range) As String 

Select Case my_cell.Value 

    Case 1 
     many_ifs = "one" 

    Case 2 
     many_ifs = "two" 

    Case 3 
     many_ifs = "three" 

    Case 4 
     many_ifs = "four" 

    Case Else: 
     many_ifs = "Unknown" 

End Select 

End Function 

Затем вызовите его из Excel в качестве нормальной формулы, как это:

enter image description here

Вот как начать работу с VBA: https://msdn.microsoft.com/en-us/library/office/ee814737(v=office.14).aspx

+1

спасибо за ответ, он работает – jmten

+0

Благодарю вас! Рад видеть, что вам удастся исправить формулу по-своему! :) – Vityata

+0

@Vityata извините за мое редактирование, но только для того, чтобы сделать его более чистым и коротким –

1

Я, наконец, использовал это, и он работает.

Public Function cat1_0lia(my_cell As Range) As String 

    Dim result As String 

    Select Case True 

    Case my_cell.Value Like "*MAZ*": 
    result = "MAZ" 
    Case my_cell.Value Like "*Maz*": 
    result = "MAZ" 
    Case my_cell.Value Like "*maz*": 
    result = "MAZ" 
    Case my_cell.Value Like "*Mis à 0*": 
    result = "MAZ" 

    Case my_cell.Value Like "*Mgn*": 
    result = "MGN" 
    Case my_cell.Value Like "*MGN*": 
    result = "MGN" 
    Case my_cell.Value Like "*Magnitude*": 
    result = "MGN" 

    Case my_cell.Value Like "*AJU*": 
    result = "AJU" 
    Case my_cell.Value Like "*Aju*": 
    result = "AJU" 
    Case my_cell.Value Like "*aju*": 
    result = "AJU" 


    Case my_cell.Value Like "*RECLASS*": 
    result = "RECLASS" 
    Case my_cell.Value Like "*Reclass*": 
    result = "RECLASS" 
    Case my_cell.Value Like "*reclass*": 
    result = "RECLASS" 

    Case Else: 
    result = "" 


    End Select 

    cat1_0lia = result 

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