Кормление нескольких отдаленных ячеек одним массивом - другой случай - PullRequest
1 голос
/ 27 сентября 2019

Это относится к моему предыдущему вопросу , но немного по-другому.У меня есть следующая таблица, включающая 6 переменных - 3 X и 3 Y - с 10 наблюдениями каждая.

    A  B  C  D  E  F ...
1  X1 Y1 X2 Y2 X3 Y3
2   7  5  3  2  4  1
3   2  6  7  9  8  0
4   6  2  4  6  7  1
5   3  4  2  5  3  5
6   8  8  2  4  6  7
7   9  3  5  2  7  6
8   0  3  4  2  5  7
9   7  0  5  1  1  4
10  1  4  2  5  1  3
11  2  3  8  9  1  7
12                 =correl(E2:E11,F2:F11)

Предположим, я хочу получить correl между X и Y, а не correl между X3 и Y3 выше.Одним из примитивных способов является соответствующая векторизация переменных: вырезать C2:C11 и вставлять в A12, вырезать D2:D11, вставлять в B12 и т. Д.Интересно, смогу ли я использовать correl без преобразования этой таблицы.Кажется, здесь не работают ни двоеточия, ни скобки.Спасибо.

Ответы [ 2 ]

1 голос
/ 27 сентября 2019

Вы можете сделать это с длинной формулой:

=CORREL(INDEX(A2:F11,N(IF({1},MOD(ROW(A1:B30)-1,10)+1)),N(IF({1},INT((ROW(A1:B30)-1)/10)*2+1))),INDEX(A2:F11,N(IF({1},MOD(ROW(A1:B30)-1,10)+1)),N(IF({1},INT((ROW(A1:B30)-1)/10)*2+2))))

(эта формула массива нуждается в обобщении для массива произвольного размера)

enter image description here

РЕДАКТИРОВАТЬ

Вот обобщенная формула для двумерного диапазона произвольного размера и формы (она работает с if (1 ... not if ({1} ...)):

=CORREL(INDEX(A2:F11,N(IF(1,MOD(ROW(A1:INDEX(B:B,ROWS(A2:F11)*COLUMNS(A2:F11)/2))-1,ROWS(A2:F11))+1)),N(IF(1,INT((ROW(A1:INDEX(B:B,ROWS(A2:F11)*COLUMNS(A2:F11)/2))-1)/ROWS(A2:B11))*2+1))),
INDEX(A2:F11,N(IF(1,MOD(ROW(A1:INDEX(B:B,ROWS(A2:F11)*COLUMNS(A2:F11)/2))-1,ROWS(A2:F11))+1)),N(IF(1,INT((ROW(AA1:INDEX(B:B,ROWS(A2:F11)*COLUMNS(A2:F11)/2))-1)/ROWS(A2:F11))*2+2))))

Обе формулы необходимо вводить с помощью Ctrl Shift Введите

0 голосов
/ 27 сентября 2019

CORREL сам по себе не поддерживает использование несмежных диапазонов.Существует обходной путь для некоторых функций (например, COUNTIF, как описано здесь ), но я относительно уверен, что они не будут работать на CORREL.Вы можете обойти это, написав свою собственную пользовательскую функцию в VBA, но я не уверен, что результат будет стоить хлопот в вашем случае.

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