Excel问题,求公式,如图,求高手指点,谢谢!
6个回答
展开全部
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
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
我在通用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))&" 行重复"))
=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))&" 行重复"))
追问
谢谢您的回答,貌似不行
追答
Excel里很多功能和想法是没有直接实现的办法,需要变通的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
数组公式,适合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))
=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))
更多追问追答
追问
您好!谢谢您的回答!但只能显示“出现一次”的数字,可否分四个公式来作呢?即:出现一次的(上面这个就可以)/出现两次的/出现三次的/出现四次的
追答
你把=1,分别改成 =2,=3,=4
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
个人建议是去重重复值后,使用countif函数来统计比较简答!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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的话通知我改一下。
追问
您好,感谢您的回答!您的公式右拉可行,但下拉全部是重复的。麻烦您啦!帮再改一下。
追答
=IFERROR(SMALL(IF((FREQUENCY(IF($E13:$AB13="",0,$E13:$AB13),IF($E13:$AB13="",0,$E13:$AB13))=ROUNDUP(COLUMN(A1)/8,0)),TRANSPOSE($E13:$AC13),""),MOD(COLUMN(A1),8)),""),按CTRL+SHIFT+ENTER结束公式右拉,下拉。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询