EXCEL: получить критерии из формулы Sumif

Я пытался найти способ получить критерии из формулы Sumif, которая выглядит так

=SUMIFS(N:N,G:G,"1670",H:H,"2016")

Каждый sumif был жестко запрограммирован ... поэтому я хочу просто вытащить критерий1 в ячейке (1670) и критерий2 (2016) в ячейке. Либо решение excel, либо vba в порядке


person FancyDolphin    schedule 12.12.2016    source источник
comment
Если I1 = 1670, m1 = 2016, то =SUMIFS(N:N,G:G,I1,H:H,M1).   -  person Andy    schedule 12.12.2016


Ответы (2)


Расширяя ответ от @Floris, приведенный ниже набор формул дает вам диапазон критериев и критерии в формуле. Приведенная ниже формула используется для удаления символа "= СУММЕСЛИ (" & ")"

=SUBSTITUTE(SUBSTITUTE(FORMULATEXT(SUMIF_FORMULA),"=SUMIFS(",""),")","")

Функции FIND находят положение запятых в формуле. Последняя LEN функция требуется для получения последних критериев.

Команда MID используется для получения текста между двумя запятыми. «+1» и «-1» в функции MID предназначены для удаления запятых из вывода. Не удалось создать таблицу Google, так как функция FORMULATEXT не была распознана.

введите описание изображения здесь

person nightcrawler23    schedule 12.12.2016
comment
Спасибо за это, для полноты вы можете добавить версию Excel 2010. Я выбрал функцию FT (mycell As Range); FT = mycell.Formula; Конечная функция; Но у вас может быть лучшее решение. - person FancyDolphin; 12.12.2016

В соответствующей версии Excel вы можете использовать функцию FORMULATEXT, чтобы получить строку, содержащую формулу.

Чтобы получить критерии из этого, вы должны сделать определенные предположения о форматировании формулы - если вы знаете, что запятые встречаются только между аргументами, довольно легко разделить текст на запятые и извлечь; но в разных регионах вы можете обнаружить, что вместо запятой используется точка с запятой; возможно, что в диапазонах есть запятые; и Т. Д.

Насколько надежным должно быть решение?

person Floris    schedule 12.12.2016
comment
соответствующий = XL 2013 и выше - person teylyn; 12.12.2016
comment
Спасибо за awnser, к сожалению, мне нужно было выбрать решение для xl2010, поэтому я решил использовать функцию FT (mycell As Range); FT = mycell.Formula; Конечная функция - person FancyDolphin; 12.12.2016