Excel公式,用于查找包含表中值的最右列

时间:2011-01-24 20:48:09

标签: excel formula excel-formula

我在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问题尝试了一些其他解决方案,但它们的行为并不完全正确。

3 个答案:

答案 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), ...)