2015-03-25 5 views
0

У меня есть таблица с девятью столбцами и двадцатью строками. Я пытаюсь указать, какой заголовок столбца имеет максимальное количество полей под ним, где значения больше или равны указанному числу. Диапазон таблиц: J4: R23. Указанное число - B6. J4: R4 содержит заголовок, который я пытаюсь сопоставить. Любые мысли о формуле для получения соответствующего заголовка столбца? Благодаря!Заголовок столбца столбца, где встречается максимальное количество значений в столбцах

ответ

0

Эта вещь едва подходит, конечно, не самое лучшее решение, но должно работать ЮС штраф:

=IF(SUMIFS($J$5:$J$23;">"&$B$6)=MAX(
SUMIFS($J$5:$J$23;">"&$B$6); 
SUMIFS($K$5:$K$23;">"&$B$6); 
SUMIFS($L$5:$L$23;">"&$B$6); 
SUMIFS($M$5:$M$23;">"&$B$6); 
SUMIFS($N$5:$N$23;">"&$B$6); 
SUMIFS($O$5:$O$23;">"&$B$6); 
SUMIFS($P$5:$P$23;">"&$B$6); 
SUMIFS($Q$5:$Q$23;">"&$B$6); 
SUMIFS($R$5:$R$23;">"&$B$6));$J$4; 
IF(SUMIFS($K$5:$K$23;">"&$B$6)=MAX(
SUMIFS($J$5:$J$23;">"&$B$6); 
SUMIFS($K$5:$K$23;">"&$B$6); 
SUMIFS($L$5:$L$23;">"&$B$6); 
SUMIFS($M$5:$M$23;">"&$B$6); 
SUMIFS($N$5:$N$23;">"&$B$6); 
SUMIFS($O$5:$O$23;">"&$B$6); 
SUMIFS($P$5:$P$23;">"&$B$6); 
SUMIFS($Q$5:$Q$23;">"&$B$6); 
SUMIFS($R$5:$R$23;">"&$B$6));$K$4; 
IF(SUMIFS($L$5:$L$23;">"&$B$6)=MAX(
SUMIFS($J$5:$J$23;">"&$B$6); 
SUMIFS($K$5:$K$23;">"&$B$6); 
SUMIFS($L$5:$L$23;">"&$B$6); 
SUMIFS($M$5:$M$23;">"&$B$6); 
SUMIFS($N$5:$N$23;">"&$B$6); 
SUMIFS($O$5:$O$23;">"&$B$6); 
SUMIFS($P$5:$P$23;">"&$B$6); 
SUMIFS($Q$5:$Q$23;">"&$B$6); 
SUMIFS($R$5:$R$23;">"&$B$6));$L$4; 
IF(SUMIFS($M$5:$M$23;">"&$B$6)=MAX(
SUMIFS($J$5:$J$23;">"&$B$6); 
SUMIFS($K$5:$K$23;">"&$B$6); 
SUMIFS($L$5:$L$23;">"&$B$6); 
SUMIFS($M$5:$M$23;">"&$B$6); 
SUMIFS($N$5:$N$23;">"&$B$6); 
SUMIFS($O$5:$O$23;">"&$B$6); 
SUMIFS($P$5:$P$23;">"&$B$6); 
SUMIFS($Q$5:$Q$23;">"&$B$6); 
SUMIFS($R$5:$R$23;">"&$B$6));$M$4; 
IF(SUMIFS($N$5:$N$23;">"&$B$6)=MAX(
SUMIFS($J$5:$J$23;">"&$B$6); 
SUMIFS($K$5:$K$23;">"&$B$6); 
SUMIFS($L$5:$L$23;">"&$B$6); 
SUMIFS($M$5:$M$23;">"&$B$6); 
SUMIFS($N$5:$N$23;">"&$B$6); 
SUMIFS($O$5:$O$23;">"&$B$6); 
SUMIFS($P$5:$P$23;">"&$B$6); 
SUMIFS($Q$5:$Q$23;">"&$B$6); 
SUMIFS($R$5:$R$23;">"&$B$6));$N$4; 
IF(SUMIFS($O$5:$O$23;">"&$B$6)=MAX(
SUMIFS($J$5:$J$23;">"&$B$6); 
SUMIFS($K$5:$K$23;">"&$B$6); 
SUMIFS($L$5:$L$23;">"&$B$6); 
SUMIFS($M$5:$M$23;">"&$B$6); 
SUMIFS($N$5:$N$23;">"&$B$6); 
SUMIFS($O$5:$O$23;">"&$B$6); 
SUMIFS($P$5:$P$23;">"&$B$6); 
SUMIFS($Q$5:$Q$23;">"&$B$6); 
SUMIFS($R$5:$R$23;">"&$B$6));$O$4; 
IF(SUMIFS($P$5:$P$23;">"&$B$6)=MAX(
SUMIFS($J$5:$J$23;">"&$B$6); 
SUMIFS($K$5:$K$23;">"&$B$6); 
SUMIFS($L$5:$L$23;">"&$B$6); 
SUMIFS($M$5:$M$23;">"&$B$6); 
SUMIFS($N$5:$N$23;">"&$B$6); 
SUMIFS($O$5:$O$23;">"&$B$6); 
SUMIFS($P$5:$P$23;">"&$B$6); 
SUMIFS($Q$5:$Q$23;">"&$B$6); 
SUMIFS($R$5:$R$23;">"&$B$6));$P$4; 
IF(SUMIFS($Q$5:$Q$23;">"&$B$6)=MAX(
SUMIFS($J$5:$J$23;">"&$B$6); 
SUMIFS($K$5:$K$23;">"&$B$6); 
SUMIFS($L$5:$L$23;">"&$B$6); 
SUMIFS($M$5:$M$23;">"&$B$6); 
SUMIFS($N$5:$N$23;">"&$B$6); 
SUMIFS($O$5:$O$23;">"&$B$6); 
SUMIFS($P$5:$P$23;">"&$B$6); 
SUMIFS($Q$5:$Q$23;">"&$B$6); 
SUMIFS($R$5:$R$23;">"&$B$6));$Q$4; 
IF(SUMIFS($Q$5:$Q$23;">"&$B$6)=MAX(
SUMIFS($J$5:$J$23;">"&$B$6); 
SUMIFS($K$5:$K$23;">"&$B$6); 
SUMIFS($L$5:$L$23;">"&$B$6); 
SUMIFS($M$5:$M$23;">"&$B$6); 
SUMIFS($N$5:$N$23;">"&$B$6); 
SUMIFS($O$5:$O$23;">"&$B$6); 
SUMIFS($P$5:$P$23;">"&$B$6); 
SUMIFS($Q$5:$Q$23;">"&$B$6); 
SUMIFS($R$5:$R$23;">"&$B$6));$R$4; 
"Error in process" 
) 
) 
) 
) 
) 
) 
) 
) 
) 

Смотрите мой attached file (замена и копирование может быть повреждена формула).

+0

я считаю, что это изначально. Удивление, если есть массив индексов или maxif для обработки этого сценария – John

+0

Я бы рекомендовал определить функцию в vba. Кстати, что происходит, если есть галстук? Шахта дает заголовок первого столбца, где есть галстук. – user3819867

0

Я сделал функцию VBA тоже, это избыточно и так далее, но вот это:

Public Function FINDHEADERWHEREMAXCOUNTIFS(Target As Range, Condition As Double) 
Dim rng As Range 
NumCols = Target.Columns.Count 'counts how many header values we can choose of 
Dim Headers() 'defines separate arrays for headers and values (turned out to be obsolete, see variable x) 
    ReDim Headers(1 To NumCols) 
Dim ValuesArr() 
    ReDim ValuesArr(1 To NumCols) 

HeaderRow = Target.Row 'row in which headers are located 
LastRow = HeaderRow + Target.Rows.Count - 1 'last row with values 
FirstColumn = Target.Column 'first column with values 
LastColumn = FirstColumn + Target.Columns.Count - 1 'last column with values 

For k = FirstColumn To LastColumn 'for each column 
    i = i + 1 'set array position 
    Headers(i) = Cells(HeaderRow, k).Value2 'set the corresponding header 
    For Each rng In Range(Cells(HeaderRow, k), Cells(LastRow, k)) 'for each value 
     If rng.Row <> HeaderRow Then 'I mean value, not header 
      If rng.Value2 > Condition Then ValuesArr(i) = ValuesArr(i) + 1 'if it's higher than the condition then count 
     End If 
    Next 
Next 

x = 1 'default is the first header 
For j = 1 To NumCols 'for each header 
If ValuesArr(j) > ValuesArr(x) Then x = j 'if the corresponding value is larger then standard then change the current one to standard 
Next 
FINDHEADERWHEREMAXCOUNTIFS = Headers(x) 'the standard value's corresponding header is the output 
End Function 
Смежные вопросы