计算一个范围内的数字的多个实例
我有一个数字范围,我需要确定是否每个单元格的第一个数字在相应的行中的任何地方重复。
例如,在下面的第2行中,第2列和第3列都以3开始。我知道,如果我只用= LEFT(TRIM(单元格))得到第一个数字,但是如何find有重复数字的行在行中,所以第1行没有标记,但第2行是?
100|600|203|700| | 202|302|301|400|600|
用这个辅助列作为数组公式:
=SUMPRODUCT(--(COLUMN($A1:$E1)<>MATCH(INT($A1:$E1/100),INT($A1:$E1/100),0)))>0
作为一个数组公式,在退出编辑模式时,必须使用Ctrl-Shift-Enter而不是Enter来确认。 如果正确完成,则Excel将在公式周围放置{}
。
考虑下面的UDF() :
Public Function AnyDups(rng As Range) As Boolean Dim valu() As String Dim i As Long, L As Long L = rng.Count ReDim valu(1 To L) AnyDups = False If L = 1 Then Exit Function i = 1 For Each r In rng valu(i) = Left(r.Value, 1) i = i + 1 Next r For i = 1 To L - 1 v = valu(i) For j = i + 1 To L If v = valu(j) Then AnyDups = True Next j Next i End Function
例如:
代码只是循环遍历单元格中最左边字符的可能组合。
它应该使用文本或数字数据。
一种方法是使用这个公式作为基础:
=IF(ISERROR(FIND(LEFT(TRIM(A1),1),B1)),FALSE,"Row "& ROW(A1))
根据你想要检查你的行,你可以适应它。 你可以有一个公式来检查一个单元格(lockingA1的参考和向右拖动) – 这将允许您知道匹配的位置,但在工作表上占用更多的空间。 或者,如果您没有太多的单元格检查每行,您可以连接在同一个公式中的所有单元格:
=IF(ISERROR(FIND(LEFT(TRIM(A1),1),B1&C1&D1&E1)),FALSE,"Row "& ROW(A1))
我相信加里的学生会有一个更优雅的回答!