Excel - 公式为每个唯一标识符返回单个值

Excel - 公式为每个唯一标识符返回单个值

我的 Excel 表格

我拥有:
一列包含年份和周数,作为我的数据的唯一时间标识符,还有一列包含值。行数各不相同。如您所见,对于具有相同 YEAR+WEEKNUM 的每一行,值都是相同的。

我需要:
为每个 YEAR+WEEKNUM 返回一个值 - 并且这些值必须出现在 C 列中。我不能只过滤唯一值,因为不同的星期有时具有相同的值。

答案1

以下是非 VBA 等效版本。在D2进入:

2

D3进入:

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

并抄下来。然后在C2进入:

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

并抄下来:

在此处输入图片描述

笔记:

这种方法不使用数组公式或易失性函数。它利用了列A的数据被组织成组。

答案2

我有几分钟空闲时间,所以我提供了一个 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 中没有撤消选项,因此请先备份

如何在 MS Office 中添加 VBA?

相关内容