是否有可能在列中找到不等于 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超越你的目标。