Excel 根据 header 比较同一行中两列的匹配或差异

Excel Compare two columns for matches or differences in the same row based on the header

Sheet1
上有 45 列 每次列都不会出现在同一个地方,在 Sheet1 中有两个重要的列,即 Work CountryBase Country,我在这里检查两列的值是相同还是不同:如果它们相同,则 Status 列中的输出应该是 LocalExpat 否则。
但是当我尝试计算我的公式时,结果是 #Name?
你能帮我解决这个问题吗?我附上了我的工作表的屏幕截图。
我的 Excel 文件也包含 VBA 模块,所以我可以使用公式或 VBA 代码。

这是我使用的公式:

=IF(Work Geography,A2)=IFS(Work Country,B2)

此错误可能有多种原因:

  • IFS 函数未在 MS Office Professional Plus 2013 中定义,您正在使用的函数在您的 Excel.[=34= 版本中未启用]
  • 您的公式引用了一个未在 Excel 中定义的名称,您显然使用的是命名范围(Work GeographyWork Country) 但你可能会忘记定义它们。
  • 有错别字,要么是Work Geography要么是Work Country,或者两者都是,因为名字不能包含space个字符.
  • 逻辑有缺陷,对非布尔值使用 IF 函数可能会导致意外结果。

我会使用的公式:

=IF(A2=B2, "Local", "Expat")

感谢@Zac 的澄清。
这是我想出的:

Option Explicit
Sub CheckCountries()
    Dim lRow As Long
    Dim MySheet As Worksheet
    Dim rngGeo As Range, rngCountry As Range, rngStatus As Range
    Dim rngData As Range

    '    Define Sheet1
    Set MySheet = ThisWorkbook.Worksheets("Sheet1")

    '    I assumed headers are constantly on the first row
    '    Find cells with needed headers
    Set rngGeo = MySheet.Rows(1).Find("Work Geography", , xlValues, xlWhole, xlByColumns)
    Set rngCountry = MySheet.Rows(1).Find("Work Country", , xlValues, xlWhole, xlByColumns)
    Set rngStatus = MySheet.Rows(1).Find("Status", , xlValues, xlWhole, xlByColumns)

    '    Your big table, excluding headers
    With MySheet.Range("A1").CurrentRegion
        Set rngData = .Offset(1, 0).Resize(.Rows.Count - 1, .Columns.Count)
    End With
    
    '    Define needed columns
    Set rngGeo = Intersect(rngData, rngGeo.EntireColumn)
    Set rngCountry = Intersect(rngData, rngCountry.EntireColumn)
    Set rngStatus = Intersect(rngData, rngStatus.EntireColumn)

    '    Calculate
    rngStatus.Value _
        = Evaluate("=IF(" & rngGeo.Address & "=" & rngCountry.Address & ", " & _
                        """Local"", " & _
                        """Expat"")")
End Sub