Как преобразовать значения Excel в ведра? - PullRequest
8 голосов
/ 28 апреля 2010

У меня есть набор данных в Excel и в одном столбце приведена оценка (количество недель)

Я хочу, чтобы формула Excel поместила ее в

  • Small
  • Средний
  • Large

где, если значение 0 - 10, тогда поместите его в Small. Если значение равно 10 - 20, укажите его как среднее и т. Д. , .

если есть какой-нибудь элегантный способ сделать это, кроме вложенных, если все операторы вместе взятые?

Ответы [ 11 ]

13 голосов
/ 29 апреля 2010

Правильный инструмент для этого - создать диапазон с вашими пределами и соответствующими именами. Затем вы можете использовать функцию vlookup () с 4-м параметром, установленным на True, чтобы создать поиск диапазона .

enter image description here

7 голосов
/ 07 сентября 2011

Другим методом для создания этого было бы использование условных выражений if, означающих, что вы будете ссылаться на ячейку, имеющую значение, и в зависимости от этого значения она даст вам корзину, такую ​​как small.

.

Например, =if(b2>30,"large",if(b2>20,"medium",if(b2>=10,"small",if(b2<10,"tiny",""))))

Так что если ячейка b2 имеет значение 12, то она вернет слово small.

Надеюсь, это было то, что вы ищете.

6 голосов
/ 30 ноября 2013

Если все, что вам нужно сделать, это подсчитать сколько значений попадают в каждую категорию, то это классический вопрос статистики, который может быть очень элегантно решен с помощью «гистограммы».

В Excel вы используете надстройку для анализа данных (если у вас ее еще нет, перейдите по ссылке ниже). Как только вы поймете гистограммы, вы сможете очень быстро разделить ваши данные на сегменты - так называемые «корзины», легко настроить ваши корзины и автоматически отобразить данные.

Это три простых шага: 1) Поместите ваши данные в один столбец 2) Создайте столбец для ваших корзин (10, 20, 30 и т. Д.) 3) Выберите «Данные» -> «Анализ данных» -> «Гистограмма» и следуйте инструкциям по выбору диапазона данных и ячеек (вы можете поместить результаты в новый рабочий лист и отобразить результаты в этом же меню)

http://office.microsoft.com/en-us/excel-help/create-a-histogram-HP001098364.aspx

5 голосов
/ 08 ноября 2011

Вы ищете функцию LOOKUP. пожалуйста, смотрите следующую страницу для получения дополнительной информации:

Ведра данных (в диапазоне)

5 голосов
/ 28 апреля 2010

Может быть не совсем то, что вы искали, но как насчет использования функции условного форматирования Excel

EDIT: В качестве альтернативы вы можете создать функцию vba, которая будет действовать как формула, которая будет выполнять вычисления за вас. что-то вроде

Function getBucket(rng As Range) As String
    Dim strReturn As String

    Select Case rng.Value
        Case 0 to 10
            strReturn = "Small"
        Case 11 To 20
             strReturn = "Medium"
        Case 21 To 30
             strReturn = "Large"
        Case 31 To 40
             strReturn = "Huge"
        Case Else
             strReturn = "OMG!!!"
    End Select
    getBucket = strReturn
End Function
4 голосов
/ 26 июня 2015

Хороший способ создания сегментов - функция LOOKUP ().

В этом примере ячейка A1 содержит количество дней. Второй параметр - это список значений. Третий параметр - это список имен сегментов.

= LOOKUP (А1, {0,7,14,31,90,180,360}, { "0-6", "7-13", "14-30", "31-89", "90-179" , "180-359", "> 360"})

3 голосов
/ 23 ноября 2017

Вот решение, которое:

  • Самостоятельно
  • Не требует VBA
  • Не ограничивается так же, как IF в отношении максимумов ковша
  • Не требует точных значений, как LOOKUP

=INDEX({"Small","Medium","Large"},LARGE(IF([INPUT_VALUE]>{0,11,21},{1,2,3}),1))

Замените [INPUT_VALUE] соответствующей ссылкой на ячейку и обязательно нажмите Ctrl + Shift + Enter , так как это формула массива.

Каждая из констант массива может быть расширена до произвольно длинной; до тех пор, пока формула не превышает максимум Excel в 1919 символов. Первая константа должна содержать возвращаемые значения, вторая должна содержать упорядоченные пороги, а третья должна быть просто целыми числами по возрастанию.

2 голосов
/ 04 июля 2016

Может быть, это поможет вам:

=IF(N6<10,"0-10",IF(N6<20,"10-20",IF(N6<30,"20-30",IF(N6<40,"30-40",IF(N6<50,"40-50")))))

Просто замените значения и текст на маленькие, средние и большие.

0 голосов
/ 28 ноября 2018

Я использую этот трюк для равного хранения данных. Вместо текстового результата вы получите номер. Вот пример для четырех ведер. Предположим, у вас есть данные в диапазоне A1:A100. Поместите эту формулу в B1:

=MAX(ROUNDUP(PERCENTRANK($A$1:$A$100,A1) *4,0),1)

Заполните формулу по всему столбцу B, и все готово. Формула делит диапазон на 4 равных сегмента и возвращает номер блока, в который входит ячейка A1. Первое ведро содержит самые низкие 25% значений.

Отрегулируйте количество ведер в соответствии с вашим желанием:

=MAX(ROUNDUP(PERCENTRANK([Range],[OneCellOfTheRangeToTest]) *[NumberOfBuckets],0),1)

Количество наблюдений в каждом ведре будет равно или почти равно. Например, если у вас есть 100 наблюдений, и вы хотите разделить их на 3 сегмента (как в вашем примере), то эти сегменты будут содержать 33, 33, 34 наблюдения. Так что почти равных. Вам не нужно беспокоиться об этом - формула сработает для вас.

0 голосов
/ 14 сентября 2017

Я предпочитаю маркировать ведра с помощью числовой формулы. Если размер сегмента равен 10, это обозначает интервалы 0,1,2, ...

=INT(A1/10)

Если вы поместите ведро размером 10 в отдельную ячейку, вы можете легко изменить его.

Если ячейка B1 содержит сегмент (0,1,2, ...), а столбец 6 содержит имена Low, Medium, High, тогда эта формула преобразует сегмент в имя:

=INDIRECT(ADDRESS(1+B1,6))

В качестве альтернативы это маркирует сегменты с наименьшим значением в наборе, то есть 0,10,20, ...

=10*INT(A1/10)

или это помечает их в диапазоне 0-10,10-20,20-30, ...

=10*INT(A1/10) & "-" & (10*INT(A1/10)+10)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...