很抱歉我无法在此处粘贴表格,因为我的工作笔记本电脑安全性并不能让我这么做。 我有一行有多个重复值,例如columnB到BI再次包含2s,3s,1s和3s。 最后一列中的值为3.我想计算最后在更改为其他值之前有多少列是值3。
例如:如果行看起来像
2 2 3 3 3 1 1 2 2 3 3 2 2 2 2 2,然后我想要的答案是5,因为最后一个值是2,它是最后5列。
我希望这是有道理的。
谢谢你, Parul。
答案 0 :(得分:0)
您可以通过在VBA中创建UDF(用户定义函数)来实现,如下所示:
Function CountLast(x As Range, y As Integer)
Dim lColumn, count
lColumn = x.Cells(x.count).Column 'Get last column in range x
count = 0
For i = lColumn To 0 Step -1 'Start with last column and work from right to left
If Cells(1, i).Value <> y Then 'Compare value of each cell with the value provided in y and leave the loop if not found
Exit For
End If
count = count + 1 'Counts how many times the value is found
Next i
CountLast = count 'Returns the counted value
End Function
然后你会像这样使用它:
=CountLast(B1:BI1,BI1)
对于您在我使用的问题中提供的示例数据:
=CountLast(A1:P1,P1)
,得到的答案是5
发生的事情是UDF正在查找范围中的最后一个单元格,然后从那里开始将它与您提供该功能并从右到左(step -1
)的所选值进行比较然后它只要它们匹配就计数,最后返回计数值。