Как я могу индексировать точное значение, повторенное в нескольких Столбцах в Excel

Это приложение, чтобы перечислить то, что шкафы товар будет находиться на складе.

например, если товар хранится на нескольких разных шкафов. Мне не нужно в общей сложности, сколько раз повторяется элемент, только заголовок столбца в этом случае " Rack #", где он может быть найден.

Я создал простой пример и мне нужен код для B2.

Я просто ввел значение B2, чтобы показать результат, который я ищу для:

enter image description here

30
задан Excellll
16.05.2023 0:07 Количество просмотров материала 2822
Распечатать страницу

2 ответа

хитрое решение без использования VBA

  • вставить ="" в G2: G6.
  • вставить =IF(NOT(ISNA(MATCH($A2,D:D,0))),CONCATENATE(G2,IF(G2="","",", "),D),G2) в H2 и скопируйте его в H2: J6
  • вставить =J2 в B2 и скопируйте его в B2:B6

Solution to Questions

если добавить стойки, вам нужно добавить столбцы справа от столбца J.

More Racks and more content in the Racks

если бы в Excel была хорошая функция конкатенации строк, ее можно было бы сократить ... .

объяснение

нужно поставить ="" в столбец G, потому что я хотел иметь один и тот же код в Столбцах H-J и никаких дополнительных предложений if.

длинная команда объяснила:

  • в какой строке A2 в столбце D2 :D5(если нет,то #NA) => MATCH (A2,D2:D5, 0)
  • не является A2 в столбце D2: D5 => ISNA (совпадение (A2, D2: D5,0))
  • Invert "is A2 not in the column D2: D5" => Не(ISNA (MATCH (A2,D2:D5,0)))
  • если вышеописанное произойдет то сделайте это еще раз => если(не(ISNA(MATCH (A2, D2: D5, 0)), это, то)
  • этот (А2 в колонке = мы хотим иметь "шкаф 1" написано) => объединить(G2,если(Г2="","",", "),Д1)
  • что (ничего нового) = > G2
0
отвечен daniel.neumann 2023-05-17 07:55

вот оно, используя VBA / Macros:

Public Function racks(code As String, range As range) As String
    result = ""
    Separator = ","
    colRanges = range.Columns.Count
    rowRanges = range.Rows.Count
    For i = 1 To colRanges
        For j = 2 To rowRanges
            If code = range.Cells(j, i) Then
                If result <> "" Then
                    result = result & Separator & range.Cells(1, i)
                Else
                    result = range.Cells(1, i)
                End If
                j = rowRanges
            End If
        Next j
    Next i
    racks = result
End Function

откройте VBA / Macros с Alt+F11, вставьте новый модуль в ThisWorkbook, и вставьте этот код справа.

функция использует два параметра,код и ряд там, где поиск.

например, для ячейки B2 на вашем примере это будет =racks(A2,$D:$F).

-1
отвечен jcbermu 2023-05-17 10:12

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх