У меня есть формула массива в Excel, которая отлично работает во всех ячейках массива , за исключением , когда происходит изменение в условных тестах, и я не уверен, почему.Формула массива:
{=TEXT(VALUE(Header!$A$2)+VALUE(ReadingID)
*(IF(EventID="2", 1,IF(EventID="4", 1,0))*(VALUE(Header!$N$2)/86400)
+IF(EventID="2", 0, IF(EventID="4", 0, 1))*(VALUE(Header!$M$2)/86400))
, "#.000000")}
Типичные данные для значения ячеек формулы:
- Заголовок! $ A $ 2 = '43432.40434' # Серия Excelномер даты / времени в виде текста.
- ReadingID = # текстовые числа в виде текста, например, «1000», «1001» и т. д.
- EventID =# Значения 1, 2, 3 или 4 как текст.
- Заголовок! $ M $ 2 = 60 # как текст.
- Заголовок! $ N $ 2 = 10 # в виде текста.
Столбцы ReadingID и EventID имеют тот же размер, что и столбец формулы массива.Типичные результаты, когда EventID изменяется, скажем, с "2" на "3", следующие:
ReadingID EventID Result Diff
'1540 '2 43432.582581 0.000116
'1541 '2 43432.582696 0.000115
'1542 '3 43433.475173 0.892477
'1543 '3 43433.475868 0.000695
'1544 '3 43433.476562 0.000694
В столбце Diff просто отображаетсяувеличивается от строки к строке и соответствует любой стороне перехода в значении EventID (например, от «2» до «3»).Та же самая аномалия возникает во всех точках, где изменяется значение EventID (то есть от «1» до «2»; от «3» до «4»).
Формула массива охватывает несколько тысяч ячееки возвращает ожидаемый результат во всех других строках, , за исключением при изменении EventID .
Изначально я пытался использовать функцию OR
для выполнения добавочной суммы, но это нене работают, поэтому вложенные операторы IF
.
Кто-нибудь может подсказать, если что-то не так с формулой массива, или как избежать этого мошеннического результата?
ПРИМЕЧАНИЕ: Данные представлены в текстовом формате, поскольку они импортируются из других источников в формате CSV, и я хотел бы сохранить исходный импорт.