Моя таблица Excel

Что я имею:
Столбец, который содержит год плюс номер недели, который служит уникальным идентификатором времени для моих данных, и столбец, который содержит значение. Количество рядов варьируется. Как видите, значение идентично для каждой строки с одинаковым YEAR+WEEKNUM.

Что мне нужно:
Чтобы вернуть одно значение для каждого ГОДА +WEEKNUM - и эти значения должны появиться в столбце C. Я не могу просто фильтровать уникальные значения, так как разные недели иногда имеют одинаковые значения.

2 ответа2

2

А вот эквивалент не VBA. В D2 введите:

2

В D3 введите:

=IF(A3=A2,"",1+MAX($D$1:D2))

и скопировать вниз. Затем в C2 введите:

=IFERROR(INDEX(B:B,MATCH(ROW(),D:D,0)),"")

и скопируйте вниз:

Замечания:

Этот подход не использует формулы массива или изменчивые функции. Он использует тот факт, что данные столбца А организованы в группы.

1

У меня было несколько минут, чтобы убить, поэтому я предлагаю решение VBa. Вы не просили VBa, но, поскольку в настоящее время нет другого решения, этого может быть достаточно. Я подозреваю, что @MateJuhasz лучше всего подходит для сводной таблицы, но я не уверен, что она классифицируется как формула рабочего листа (подозреваю, что нет)

Sub WalkThePlank()

Dim startRow As Integer
startRow = 2

Dim resultRow As Integer
resultRow = 1

Dim resultCol As String
resultCol = "C"

Dim prev As String
prev = ""

Do While Range("A" & startRow).Value <> ""
    Dim v As String
    v = Range("A" & startRow).Value

    If (prev <> v) Then
        resultRow = resultRow + 1
        prev = v
    End If

    Range("C" & resultRow).Value = Range("B" & startRow).Value

    startRow = startRow + 1
Loop

End Sub

Помните, что в VBa нет опции отмены, поэтому сначала сделайте резервную копию

Как добавить VBA в MS Office?

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