Excel问题,求公式,如图,求高手指点,谢谢!

2025-12-17 10:28:45
推荐回答(5个)
回答1:

Sub MC_TEST()
    Set d = CreateObject("Scripting.Dictionary")
    For i = 1 To [A65536].End(3).Row
        If Cells(i, "ad") = "" Then
            For j = 5 To 29
                If Cells(i, j) <> "" Then
                    d(Cells(i, j).Value) = d(Cells(i, j).Value) + 1
                End If
            Next
            ar = d.keys: br = d.items: d.RemoveAll
            For n = 0 To UBound(ar)
                d(br(n)) = d(br(n)) & "|" & ar(n)
            Next
            For M = 1 To 4
                ss = Split(d(M), "|")
                For X = 1 To UBound(ss)
                    Cells(i, 29 + (M - 1) * 7 + X) = ss(X)
                Next
            Next
        End If
        d.RemoveAll
    Next
End Sub

回答2:

我在通用Excel里用取数公式可以轻松做到,单机Excel里,你这个函数试试,或者下载通用Excel。

=IF(ISNA(MATCH(D5,INDIRECT("E1:E"&ROW()-1),0)),IF(ISNA(MATCH(D5,INDIRECT("E"&ROW()+1&":E65536"),0)),"","与第 "&(MATCH(D5,INDIRECT("E"&ROW()+1&":E65536"),0)+ROW())&" 行重复"),IF((ROW())=(MATCH(D5,INDIRECT("E1:E"&ROW()-1),0)),"","与第 "&(MATCH(D5,INDIRECT("E1:E"&ROW()-1),0))&" 行重复"))

回答3:

数组公式,适合2007以上的版本。
=IFERROR(OFFSET($A13,0,SMALL(IF(COUNTIF($E13:$AB13,$E13:$AB13)=1,COLUMN($E13:$AB13),""),COLUMN(A1))-1),"")

数组公式,适合所有版本的excel。
=IF(COLUMN(A1)>SUM(--(COUNTIF($E13:$AB13,$E13:$AB13)=1)),"",OFFSET($A13,0,SMALL(IF(COUNTIF($E13:$AB13,$E13:$AB13)=1,COLUMN($E13:$AB13),""),COLUMN(A1))-1))

回答4:

个人建议是去重重复值后,使用countif函数来统计比较简答!

回答5:

ad13=IFERROR(SMALL(IF((FREQUENCY(IF($E$13:$AB$13="",0,$E$13:$AB$13),IF($E$13:$AB$13="",0,$E$13:$AB$13))=ROUNDUP(COLUMN(A1)/8,0)),TRANSPOSE($E$13:$AC$13),""),MOD(COLUMN(A1),8)),""),按CTRL+SHIFT+ENTER结束公式右拉,下拉。EXCEL2003不可用,如是EXCEL2003的话通知我改一下。