如图所示:
6 9 13 13 17 9 12 20 12 18 18 16 2 18 13 18 6 17 1391317 26 420 14我在最下面的20旁边的空格里填入它与上一个20相隔的行数是14,最下面的6旁边的空格里填入它与上一个6相隔的行数是4,虽然它上面还有6,最下面的17旁边填入它与上一个17相隔的行数是2,虽然上面还有17,这用什么函数表达,怎么表达?
6 9 13 13 17 9 12 20 12 18 18 16 2 18 13 18 6 17 9 17 6 20 我在最下面的20旁边的空格里填入它与上一个20相隔的行数是14,最下面的6旁边的空格里填入它与上一个6相隔的行数是4,虽然它上面还有6,最下面的17旁边填入它与上一个17相隔的行数是2,虽然上面还有17,这用什么函数表达,怎么表达?
这能告诉我什么意思吗
追答先用大白话来说一下,如果本单元格和本单元格之上,本单元格的个数小于2(意思就是本单元格的内容有没有重复,小于2的必然是1,就是首次出现的),返回空,否则找寻上面最后一次出现的行号,用本单元格的行号去减它,就是你要的结果。
COUNTIF(A$1:A2,A2)<2
中,COUNTIF是条件计数,COUNTIF(A$1:A2,A2)的意思就是在A1:A2中与A2相同的有几个,如果A1为1,A2为2,那么COUNTIF(A$1:A2,A2)=COUNTIF({1;2},2)=1,就是与2相同的为一个,那么小于2这个条件符合,返回IF函数第二参数,就是"",空格的意思,因为A$1:A2,第一个单元格被固定住了,下拉到B3时,它会变成countif(A$1:A3,A3),形成动态计算。
LOOKUP(1,0/(A$1:A1=A2),ROW($1:1))
当COUNTIF不小于2,就是有重复时,执行这段,这个的意思是就是在本单元格之上找寻符合等于本单元格的,最后一个的行号,如果是第四行,就返回4,ROW()就是返回本单元格的行号,如果本单元格为B7,就是7,7-4就是3,最后的结果就是3行了。
看来你很想学习函数,告诉你一个看懂人家函数的办法,用鼠标在编辑栏中拖黑公式的一段或部分,按F9就是查看这段函数的结果,按CTRL+Z或ESC返回,想看哪段拖黑哪段,比如COUNTIF(A$1:A2,A2)拆解完毕了就看明白了。
VBA更不会了
追答如你的数据在A列
用公式,那么在B2输入公式如下
=IF(COUNTIF(A$1:A2,A2)<2,"",ROW()-LOOKUP(1,0/(A$1:A1=A2),ROW($1:1))-1)
或
=IF(COUNTIF(A$1:A2,A2)<2,"",ROW(A1)-LOOKUP(1,0/($A$1:A1=A2),ROW($1:1)))
公式下拉完成
如果用VBA处理,代码如下
Sub test()
Dim i&, x&, y&, r&
r = Range("A65536").End(xlUp).Row
For x = r To 2 Step -1
For y = x - 1 To 1 Step -1
If Cells(y, 1) = Cells(x, 1) Then Cells(x, 2) = x - y - 1: Exit For
Next y
Next x
End Sub
运行这个宏即得到结果