Как отфильтровать текстовую ячейку String?

Я хочу использовать функцию SUMPROCUT при условии, что количество строк на листе неизвестно.

поэтому формула была написана с помощью = SUMPRODUCT (- F: F, - G: G) , после нажатия клавиши Enter появилось #VALUE!.

Я понял, что имена столбцов являются строковыми, но они были включены в расчет, что могло быть проблемой.
как избежать строкового текста в функции СУММПРОИЗВ? или, может быть, у вас есть более умный способ, пожалуйста, помогите. заранее спасибо!

[ОБНОВЛЕНО - скриншот и исходные требования]
клиенты спрашивали меня о формуле для вычисления суммы (столбец F * столбец G), например 10 * 470 + 5 * 350 + 5 * 5,5 + 25 * 180 + 4 * 48 + 6 * 15 + 80 * 4,5 + 70 * 5,44, и я не знаю, сколько строк на их листе привело к тому, что им нужна общая формула для работы со всеми файлами Excel.

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


person rock    schedule 24.07.2012    source источник
comment
вы можете показать нам, как выглядят ваши данные (с помощью снимка экрана или примера), чтобы мы могли помочь вам решить проблему root и избежать Проблема XY   -  person JMax    schedule 24.07.2012
comment
Вам действительно нужны двойные негативы --? Без этих SUMPRODUCT строки, содержащие текст, будут игнорироваться.   -  person lori_m    schedule 24.07.2012
comment
@JMax, вы правы, возможно, проблема XY. Я обновил вопрос.   -  person rock    schedule 24.07.2012
comment
@rock: ты определенно был прав, отредактировав свой вопрос :). Я попробую   -  person JMax    schedule 24.07.2012
comment
@lori_m - я знаю, что вы имеете в виду, - обработает ситуацию, когда клиент указывает неправильный тип столбца, такой как String, возникнет исключение   -  person rock    schedule 24.07.2012
comment
@lori_m Я попробовал ваше решение, оно отлично работает, спасибо.   -  person rock    schedule 24.07.2012


Ответы (2)


Вот попытка:

=SUMPRODUCT($F2:INDEX($F:$F,MATCH(9.9999E+307,$F:$F)), $G2:INDEX($G:$G,MATCH(9.9999E+307,$G:$G)))

При условии, что ваши значения заканчиваются в одной строке.

Некоторое объяснение:

  • index() может возвращать ссылку, а также значение (мы используем его здесь как ссылку)
  • 9.9999E + 307 - это трюк - в основном, если вы ищете число больше любого числа в диапазоне чисел (& 9.9999E + 307 - это самое большое число, с которым Excel может справиться, поэтому работает в большинстве случаев), match() вернет позицию последнего числа в списке, что мы и хотим

Вдохновение нашел здесь, но я нашел этот трюк очень умным и умным :)

person JMax    schedule 24.07.2012
comment
браво, это невероятно ... это действительно отлично работает, спасибо @JMax, мне нужно вникнуть, чтобы изучить эти две формулы. - person rock; 24.07.2012

Просто используйте =SUMPRODUCT(F:F,G:G) (то есть без --)

person chris neilsen    schedule 24.07.2012
comment
Что дублирует мой комментарий ... Я интерпретировал ответ как означающий, что -- может понадобиться в случае ввода числа как текста, но обычно вы можете просто преобразовать любые нечисловые числа с помощью опции всплывающей подсказки. - person lori_m; 24.07.2012
comment
@lori_m Я должен сказать, что вы абсолютно правы, извините за задержку признательности - person rock; 25.07.2012