в любом случае, чтобы сделать этот код меньше?

312
SSP

Я создал формулу, индекс которой соответствует разным рабочим листам, а затем сложил их вместе.

Есть ли возможность сделать кодировку меньше или лучше? Я пытался и потерпел неудачу, но не получил результатов :(

,

У меня есть следующий код;

=IFERROR(INDEX('Report 1'!BC:BC,MATCH(B13,'Report 1'!$A:$A,0)),"0") +IFERROR(INDEX('Report 2'!BC:BC,MATCH(B13,'Report 2'!$A:$A,0)),"0") +IFERROR(INDEX('Report 3'!BC:BC,MATCH(B13,'Report 3'!$A:$A,0)),"0") +IFERROR(INDEX('Report 4'!BC:BC,MATCH(B13,'Report 4'!$A:$A,0)),"0") +IFERROR(INDEX('Report 5'!BC:BC,MATCH(B13,'Report 5'!$A:$A,0)),"0") 
0

2 ответа на вопрос

1
Scott Craner

Чтобы получить результаты из вашей формулы, удалите символ "со всех сторон, 0чтобы формула не пыталась добавить текстовые строки.

но мы можем сократить формулу с помощью 3D SUMIF

С именами нужных листов в списке и ссылками на них с помощью команды INDIRECT в SUMIF:

=SUMPRODUCT(SUMIF(INDIRECT("'" & D1:D5 & "'!A:A"),B13,INDIRECT("'" & D1:D5 & "'!BC:BC"))) 

enter image description here

0
Máté Juhász

Есть ли возможность сделать кодировку меньше или лучше?

На самом деле, нет:(

Хотя вы можете использовать некоторые обходные пути:

  • именованный диапазон : вы можете определить имена для своих диапазонов и ссылаться на них
  • Ячейка поддержки: используйте другую ячейку для хранения результата вашей MATCHфункции, поэтому не нужно запускать ее несколько раз
  • UDF: используйте макрос для создания пользовательской функции, где вы можете написать более хороший код, чем ваша текущая формула

Похожие вопросы