Products    PD1 PD2 PD3 PD4 PD5 PD6 Summary of Purchases
Customer A      2   2   3   5   6   PD2, PD3, PD4, PD5, PD6
Customer B      2   2       1       PD2, PD3, PD5, 

Как мне суммировать покупки таким образом, чтобы он смотрел в строке, чтобы увидеть, не является ли он пустым, и получает соответствующий список продуктов.

2 ответа2

0

Попробуйте следующий UDF():

Public Function qwerty(rIN As Range) As String
    Dim r As Range, s As String

    s = ""
    For Each r In rIN
        If r.Value <> "" Then
            s = s & "," & r.EntireColumn.Cells(1).Value
        End If
    Next r
    qwerty = Mid(s, 2)
End Function

Пользовательские функции (UDF) очень просты в установке и использовании:

  1. ALT-F11 открывает окно VBE
  2. ALT-I ALT-M открывает новый модуль
  3. вставьте материал и закройте окно VBE

Если вы сохраните книгу, UDF будет сохранен вместе с ней. Если вы используете версию Excel более поздней, чем в 2003 году, вы должны сохранить файл как .xlsm, а не .xlsx

Чтобы удалить UDF:

  1. откройте окно VBE, как указано выше
  2. очистить код
  3. закройте окно VBE

Чтобы использовать UDF из Excel:

=qwerty(A1:Z1)

Чтобы узнать больше о макросах в целом, смотрите:

http://www.mvps.org/dmcritchie/excel/getstarted.htm

а также

http://msdn.microsoft.com/en-us/library/ee814735(v=office.14).aspx

а подробности о UDF смотрите в:

http://www.cpearson.com/excel/WritingFunctionsInVBA.aspx

Макросы должны быть включены, чтобы это работало!

0

Другой способ, который не использует vba, вместо этого он использует имена и формулу, чтобы проверить, есть ли запись в PD1. Это может быть использовано в любом месте строки. чтобы проверить клиента A, перейдите в любую пустую ячейку справа от данных во 2-й строке и введите

= if($ b2 = "", "", $ b $ 1 & ",")

это будет либо пустое значение, либо PD1, в зависимости от содержимого b2 скопируйте формулу, а затем используйте менеджер имен (лента формул), создайте новое имя PD_1 и вставьте формулу в нижнюю строку, а менеджер имен слегка преобразует ее такие как

= IF(Лист1!$ B2 = "", "", Лист1!$ B $ 1 & ",")

Следуйте той же схеме для остальных продуктов, используя правильный пример буквы столбца $ c2 = "", $ c $ 1 для PD2 и т.д.

Вы могли бы перейти прямо к использованию PD_ #, но я бы сделал еще одно имя

PD_Sum = обрезать (pd_1 & Pd_2 & PD_3 & PD_4 & PD_5 & PD_6)

Затем в столбце суммы просто поместите = PD_Sum

если вы хотите это без, в конце, то это

= IFERROR (слева (PD_sum, длина (PD_sum)-1), "")

Iferror включается в том случае, если в любой из ячеек ничего не выбрано, оно остается пустым и не генерирует ужасное сообщение об ошибке.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .