是否有可能在列中找到不等于 1 的值并获得同一字段中的所有位置?
Is possible find the value not equal to one in the column and get all position in the same field?
我需要在 A 列中找到不等于 1 的值,并获取同一字段中的所有位置。
我想把所有不等于1的位置放到B11中。
我想使用 excel 公式函数而不使用 vba 或其他代码。我能怎么做 ?可以吗?
由于您使用的是 Excel-2007,很遗憾,您将无法使用新的 TEXTJOIN()
和 CONCAT()
函数(也不能使用电源查询)。然而,您可以通过像 CONCATENATE()
这样的函数变得非常有创意,这很可能意味着在某些时候您将不得不做一些手动操作 'labour'。谁想做体力劳动? ;)
所以在这种情况下,我更愿意采用 UDF
方式。下面是一个测试示例:
Function GetPos(RNG As Range, VAL As Double) As String
Dim CL As Range, ARR() As String, X as double
X = 1
For Each CL In RNG
If CL.Value <> VAL Then
ReDim Preserve ARR(X)
ARR(X) = CL.Address(False, False)
X = X + 1
End If
Next CL
If IsEmpty(ARR) Then
GetPos = "No hits"
Else
GetPos = Join(ARR, ",")
GetPos = Right(GetPos, Len(GetPos) - 1)
End If
End Function
这个有两个条件,一个范围和一个数值,表示范围内的单元格不能是什么。它将 return 一个字符串值。
通过 =GETPOS(A1:A10,1)
从您的工作表中调用它,它应该 return A2,A7,A9
编辑
如果您可以使用辅助列,您可以这样做:
B1
中的公式:
=IF(A1<>1,"A"&ROW()&",","")
B11
中的公式:
=LEFT(B1&B2&B3&B4&B5&B6&B7&B8&B9&B10,SUM(LEN(B1:B10))-1)
通过CtrlShift输入
注意:如果您不想使用辅助列,则必须使用 TRANSPOSE()
到 'load' 文本值数组,但它涉及体力劳动和 IMO超越你的目标。
我需要在 A 列中找到不等于 1 的值,并获取同一字段中的所有位置。
我想把所有不等于1的位置放到B11中。
我想使用 excel 公式函数而不使用 vba 或其他代码。我能怎么做 ?可以吗?
由于您使用的是 Excel-2007,很遗憾,您将无法使用新的 TEXTJOIN()
和 CONCAT()
函数(也不能使用电源查询)。然而,您可以通过像 CONCATENATE()
这样的函数变得非常有创意,这很可能意味着在某些时候您将不得不做一些手动操作 'labour'。谁想做体力劳动? ;)
所以在这种情况下,我更愿意采用 UDF
方式。下面是一个测试示例:
Function GetPos(RNG As Range, VAL As Double) As String
Dim CL As Range, ARR() As String, X as double
X = 1
For Each CL In RNG
If CL.Value <> VAL Then
ReDim Preserve ARR(X)
ARR(X) = CL.Address(False, False)
X = X + 1
End If
Next CL
If IsEmpty(ARR) Then
GetPos = "No hits"
Else
GetPos = Join(ARR, ",")
GetPos = Right(GetPos, Len(GetPos) - 1)
End If
End Function
这个有两个条件,一个范围和一个数值,表示范围内的单元格不能是什么。它将 return 一个字符串值。
通过 =GETPOS(A1:A10,1)
从您的工作表中调用它,它应该 return A2,A7,A9
编辑
如果您可以使用辅助列,您可以这样做:
B1
中的公式:
=IF(A1<>1,"A"&ROW()&",","")
B11
中的公式:
=LEFT(B1&B2&B3&B4&B5&B6&B7&B8&B9&B10,SUM(LEN(B1:B10))-1)
通过CtrlShift输入
注意:如果您不想使用辅助列,则必须使用 TRANSPOSE()
到 'load' 文本值数组,但它涉及体力劳动和 IMO超越你的目标。