我在Excel电子表格中有一些这样的数据结构:
A B C D E F
1 1 1 2 x 2 3
2 1 1 1 2 2 3
3 3 3 3 3 4 4
我正在尝试制定一个Excel公式,它将为我提供此表中最右边一列的索引,该列具有与特定值匹配的单元格。
在这个例子中,包含值'1'的最右边的列在C列中。对于'2',它将是E.该列索引是我所追求的。
我使用列字母与Excel保持一致,但最好使用数字列索引。
我已经针对在线发现的类似Excel问题尝试了一些其他解决方案,但它们的行为并不完全正确。
答案 0 :(得分:3)
如果要使用辅助列,可以将此公式放在G1
中{=MAX((COLUMN(A1:F1)*(A1:F1=2)))}
输入了数组。填写G3。在G4中,输入
=MAX(G1:G3)
然后重复每个数字。如果您不想要帮助列,可以编写类似这样的UDF
Public Function MaxColumn(rInput As Range, vValue As Variant) As Long
Dim rFound As Range
Set rFound = rInput.Find(vValue, rInput.Cells(1), xlValues, xlWhole, xlByColumns, xlPrevious)
If Not rFound Is Nothing Then MaxColumn = rFound.Column
End Function
你称之为
=maxcolumn(A1:F3,2)
答案 1 :(得分:2)
怎么样:
Function FindCol(ToFind)
Dim r As Range
Dim rfind As Range
Dim rfound As Range
Set r = ActiveSheet.UsedRange
For i = r.Columns.Count To 1 Step -1
Set rfind = r.Columns(i)
Set rfound = rfind.Find(ToFind)
If Not rfound Is Nothing Then
Result = rfound.Column
Exit For
End If
Next
FindCol = Result
End Function
答案 2 :(得分:2)
这是一种用公式做的方法。我将展示如何使用几个不同的公式来显示逻辑的步骤,然后将它们组合成一个大的公式。
首先,每列使用一个公式,以查看目标值是否在列中。例如,在A栏中:
=COUNTIF(A1:A100,Goal)
=COUNTIF(B1:B100,Goal)
...
(where Goal can be a hardcoded search value,
or a named range where you type your query)
然后,将IF语句添加到这些公式中以将其转换为列号。如果列中存在查询,则显示列号,否则显示零。
=IF(COUNTIF(A1:A100,Goal)>0, 1, 0)
=IF(COUNTIF(B1:B100,Goal)>0, 2, 0)
...
最后,添加公式以从先前公式中获取最大列数。这将使最右边的列与您的查询值相等。
=MAX( IF(COUNTIF(A1:A100,Goal)>0, 1, 0), IF(COUNTIF(B1:B100,Goal)>0, 2, 0), ...)