2014-01-14 2 views
5

Это мои данныеExcel Некорректное формулу массива Использование объяснение

Region Value 
East  9800 
East  5592 
East  6966 
West  5418 

Когда я

=AVERAGE(IF(A2:A5="East",B2:B5)) CTRL+SHIFT+ENTER 

Я получаю

7452.667 

Который является правильный ответ. Но когда я делаю

=AVERAGE(IF(A2:A5="East",B2:B5)) ENTER 

У меня нет ошибки. Я получаю

6944 

Если я только что напечатали

=IF(A2:A5="East",B2:B5) ENTER 

Я получаю

9800 

Так 6944 не среднее 9800. Что Excel делает здесь?

Когда я

=IF(A2:A5="West",B2:B5) ENTER 

я

FALSE 

Так это выглядело как IF читает первую строку .. но потом что-то странное происходит с Average (If())

У меня один/два вопроса (-ов) и одна молитва:

Вопросы: Что отличает от достижения 69 44? Почему я не получил ошибку, когда я сделал ENTER вместо CTRL + SHIFT + ВВОД, и есть ли способ напомнить excel, чтобы сказать мне, что нужно делать правильные вещи при работе с массивами?

Молитва: Я могу только надеяться, что за последние несколько недель я не произвел много мусора, когда я пренебрег CTRL-SHIFT-ENTER и сделал по ошибке ошибку, а не получил ошибки и побежал с тем, что получил ,

+1

+1 для комментария «вопрос и молитва» и очень четкий вопрос, который излагает одну из много опасностей Excel. Вы, возможно, вполне закончили с неправильными ответами, как вы обнаружили. Если это важно, вернитесь и проверьте свою работу. – Floris

+1

+1 для вопроса. Чтобы * частично * ответить на второй вопрос - как только формула (* по крайней мере один раз *) была введена с помощью CTRL + SHIFT + ENTER, вы можете использовать свойство '.HasArray' объекта Range, чтобы проверить, является ли формула массивом формула. Вы можете создать небольшой защитный механизм, например, для отображения сообщения, когда вы * касаетесь */щелкните ячейку с помощью формулы массива (CSE -ctrl-shift-enter). С другой стороны, если вы впервые входите в формулу и не заходите в CSE, вы можете подумать о своей файловой структуре и создать суб, чтобы проверить, следует ли ожидать формулы массива. –

+0

@mehow Спасибо. У меня еще нет отбивных, чтобы даже четко понимать, не взирая на то, что вы предложили, но по-прежнему очень полезно иметь дорожную карту, которая может иметь смысл в течение нескольких дней после этой линии. – Amatya

ответ

4

6944 - среднее значение всех значений. Вы получите его, используя =SUM(B2:B5)/4.

Когда вы не используете CSE, IF будет оценивать следующим образом:

=IF(A2="East",B2:B5) 

Если у вас есть массив в формулу без массива в Excel, вы получите только один член (или элемент) из массив. Если, например, вы поставили вышеприведенную формулу (без AVERAGE), IF оценивает ячейку, соответствующую строке, в которую была вставлена ​​формула. Фактическая формула «результат» будет следующей, если вы поместите ее во вторую строку excel (в любой из ячеек C2, D2, E2, и т.д.):

=IF(A2="East", B2) 

Что произойдет, если вы поместите его в ячейку С3:

=IF(A3="East", B3) 

И если вы поместите его в C6 ...A2:A5 вернет #VALUE!, так как соответствующий ряд из 6 в A2:A5 не существует !. В C5, конечно же, вы получите =IF(A5="East", B5), который вернет FALSE с вашими значениями образцов.

Следуя исходной формуле, поскольку A2 действительно является East, вы получите результат как AVERAGE(B2:B5).

То же самое с другой функцией:

=IF(A2="West",B2:B5) 

Возвращает FALSE и среднее FALSE является 0.

Вы можете использовать функцию AVERAGEIF, не нужно быть массив поступил на работу, но это при условии, что у вас есть Excel 2007 или более поздней версии:

=AVERAGEIF(A2:A5,"East",B2:B5) 

Если вы не хотите использовать массив и застрял с версией Excel до 2007 года, например Excel 2003, вы можете попробовать:

=SUMIF(A2:A5,"East",B2:B5)/COUNTIF(A2:A5,"East") 
+1

Просто избили меня тоже. – user2140261

+3

Единственное, что я добавил, было то, что когда он ввел '= IF (A2: A5 =" EAST ", B2: B5)' и, как оказалось, вернулся 9800, потому что он возвращал 'B2: B5', и если if вы вводите это в ячейку, вы получаете массив значений внутри B2: B5, и, как показывает excel, это показывает только первое значение, даже несмотря на то, что все они все еще есть, поэтому среднее значение не равно 9800. Было также добавив, что он может проверить это в будущем, используя 'F9' в своей формуле внутри панели формул, чтобы узнать, какие именно результаты. – user2140261

+0

@ user2140261 Упс, я действительно забыл упомянуть эту часть. Спасибо, что упомянул об этом :) – Jerry

Смежные вопросы