Работа в Excel возобновляется, когда NA - PullRequest
0 голосов
/ 11 января 2020

У меня есть фрейм данных в Excel, и мне нужно сделать операцию в Excel для друга. Поэтому нельзя использовать python или R.

enter image description here

Я хочу создать новый столбец, в котором я выполняю эту операцию:

ABS (А2-В2) + ABS (А2-С2) + ABS (А2-D2) + ABS (А2-Е2) + ABS (А2-F2) + ABS (А2-G2) + ABS (А2-Н2) + ABS (A2-I2)

Проблема в том, что в некоторых строках есть NA, поэтому в результате Excel результат является ошибкой. В идеале я хочу это: ряд BB

ABS (A2-B2) + ABS (A2-C2) + ABS (A2-D2) + ABS (A2-E2) + ABS (A2-F2), исключая + ABS (A2-G2) + ABS (A2-H2) + ABS (A2-I2), поскольку эти последние три строки получили значения NA.

ABS (6-7) + ABS (6-7) + ABS ( 6-12) + ABS (6-20) + ABS (6-2) = 26

Если кто-то может помочь, это будет очень цениться! Спасибо

Ответы [ 2 ]

0 голосов
/ 12 января 2020

Если ваши NA всегда находятся в конце строки, вы можете использовать это

=SUMPRODUCT(ABS(A1-B1:INDEX(B1:I1,COUNT(B1:I1))))

COUNT только для подсчета чисел, поэтому оно будет включать в себя только ячейки, до которых числа останавливаются. INDEX(B2:I2,COUNT(B2:I2)) вернет ссылку на F2 в вашем примере. Оценка части B2:INDEX выглядит следующим образом

=SUMPRODUCT(ABS(A2-{7,7,12,20,2}))

, тогда

=SUMPRODUCT(ABS({-1,-1,-6,-14,4}))
=SUMPRODUCT({1,1,6,14,4})

SUMPRODUCT оценивается как формула массива, поэтому вы можете избежать ввода каждого ABS по отдельности.

0 голосов
/ 11 января 2020

Итак, попробуйте:

= Iferror (ABS (A2-B2), 0) + iferror (ABS (A2-C2), 0) + iferror (ABS (A2-D2), 0) + iferror (ABS (А2-Е2), 0) + IFERROR (ABS (А2-F2), 0) + IFERROR (ABS (А2-G2), 0) + IFERROR (ABS (А2-Н2), 0) + IFERROR (АБС (А2-I2), 0)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...