Excel Min Положительное число с несколькими критериями - PullRequest
0 голосов
/ 04 апреля 2020

Я хочу получить местоположение каждого RefID на основе наименьшего положительного числа. Ответ для приведенного ниже примера: Таблица

RefID   Location    Number
vT70SAAS    Sixth Floor 311.39
wmhXXAAY    Sixth Floor 35.57
wm2xcAAA    Rooftop 7.55

Я пробовал = MIN (IF (F27: F30> 0, F27: F30)) как массив, но он получает общее мин положительный. Мне нужен один для каждого RefID

Пример данных:

Number  Location    RefID
-3.50   Basement    wmhXXAAY
-32.39  First Floor wm2xcAAA
524.71  Second Floor    vT70SAAS
-7.19   Second Floor    wm2xcAAA
61.81   Third Floor wm2xcAAA
150.63  Third Floor wmhXXAAY
467.76  Fifth Floor wm2xcAAA
102.30  Fifth Floor wmhXXAAY
311.39  Sixth Floor vT70SAAS
35.57   Sixth Floor wmhXXAAY
521.51  Rooftop vT70SAAS
7.55    Rooftop wm2xcAAA
244.54  Rooftop wm2xcAAA

Таблица

Ответы [ 4 ]

0 голосов
/ 04 апреля 2020

Вы также можете сделать это с помощью Power Query, доступного в Excel 2010 +

Большинство шагов можно выполнить с помощью пользовательского интерфейса.

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

Алгоритм

  • Отфильтруйте таблицу по значениям> 0
  • Групповые строки по RefID, с Operation = All Rows
  • Добавить пользовательский столбец с формулой Table.Min([Grouped],"Number"), чтобы извлечь RefID с наименьшим номером
  • Развернуть результирующий столбец
  • Переупорядочить столбцы в нужном окончательном порядке
  • Удалить лишние столбцы
  • Переименовать результирующие столбцы.

M-код

Возможно, вам потребуется изменить имя таблицы в Линия 2

let
    Source = Excel.CurrentWorkbook(){[Name="refIDtbl"]}[Content],
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"Number", type number}, {"Location", type text}, {"RefID", type text}}),
    #"Filtered Rows" = Table.SelectRows(#"Changed Type", each [Number] >= 0),
    #"Grouped Rows" = Table.Group(#"Filtered Rows", {"RefID"}, {{"Grouped", each _, type table [Number=number, Location=text, RefID=text]}}),
    #"Added Custom" = Table.AddColumn(#"Grouped Rows", "Custom", each Table.Min([Grouped],"Number")),
    #"Expanded Custom" = Table.ExpandRecordColumn(#"Added Custom", "Custom", {"Number", "Location", "RefID"}, {"Custom.Number", "Custom.Location", "Custom.RefID"}),
    #"Reordered Columns" = Table.ReorderColumns(#"Expanded Custom",{"RefID", "Grouped", "Custom.Location", "Custom.RefID", "Custom.Number"}),
    #"Removed Columns" = Table.RemoveColumns(#"Reordered Columns",{"Grouped", "Custom.RefID"}),

        oldColNames = Table.ColumnNames(#"Removed Columns"),
        newColNames = List.ReplaceValue(oldColNames,"Custom.","",Replacer.ReplaceText),

    #"Renamed Columns" = Table.RenameColumns(#"Removed Columns",List.Zip({oldColNames,newColNames}))
in
    #"Renamed Columns"

enter image description here

0 голосов
/ 04 апреля 2020

Просто добавьте еще одно условие к IF():

. Для данных, начинающихся во второй строке, введите массив:

=MIN(IF((F2:F14>0)*(H2:H14="vT70SAAS"),F2:F14))

Обратите внимание, что мы используем умножение, а не AND()

enter image description here

(сделать то же самое для других идентификаторов)

0 голосов
/ 04 апреля 2020

Еще одна опция:

=AGGREGATE(15,6,(1/(($A$2:$A$14>0)*($C$2:$C$14=F2)))*$A$2:$A$14,1)

enter image description here

0 голосов
/ 04 апреля 2020

Сводная таблица - лучший способ. Особенно, если вы собираетесь работать с большими наборами данных.

Сделайте один из ваших данных. Добавьте RefID в качестве ROW и Min (Number) в качестве DATA

Затем. Если вы хотите добавить значение обратно в исходную таблицу (в другом смежном столбце), вы можете выполнить поиск в сводной таблице.

= VLOOKUP (A1, F1: G5,2)

Где F1: G5 - диапазон сводной таблицы.

Если по какой-либо причине вам требуется VLOOKUP для работы без возможности ручного выбора сводной таблицы, затем посмотрите это: https://answers.microsoft.com/en-us/msoffice/forum/msoffice_excel-mso_other/use-pivot-table-name-in-a-formula/17aa5ad3-eee4-4a5c-a70c-a9296853066d

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