Excel根据标题比较同一行中两列的匹配或差异
Excel根据标题比较同一行中两列的匹配或差异,excel,excel-formula,excel-2013,vba,Excel,Excel Formula,Excel 2013,Vba,表1上有45列 每次列不在同一位置时,在表1中有两个重要的列,即工作国家和基准国家,在这两个列中,我检查两个列的值是否相同或不同:如果相同,则列状态中的输出应为本地,否则,请移居国外。 但当我尝试计算公式时,结果是#Name? 你能帮我解决这个问题吗?我已附上工作表的屏幕截图。 我的Excel文件也包含VBA模块,所以我对公式或VBA代码都没有意见 这是我使用的公式: =IF(Work Geography,A2)=IFS(Work Country,B2) 此错误可能有多种原因: 如果MS O
表1上有45列
每次列不在同一位置时,在
表1
中有两个重要的列,即工作国家和基准国家,在这两个列中,我检查两个列的值是否相同或不同:如果相同,则列状态中的输出应为本地,否则,请移居国外。但当我尝试计算公式时,结果是#Name?
你能帮我解决这个问题吗?我已附上工作表的屏幕截图。
我的Excel文件也包含VBA模块,所以我对公式或VBA代码都没有意见 这是我使用的公式:
=IF(Work Geography,A2)=IFS(Work Country,B2)
此错误可能有多种原因:
- 如果MS Office Professional Plus 2013中未定义S功能,则您使用的是Excel版本中未启用的功能
- 您的公式引用了Excel中未定义的名称,显然您使用的是命名范围(
和工作地域
),但您可能会忘记定义它们工作国家
- 有一个输入错误,它要么在
中,要么在工作地域
中,要么在两者中,因为名称不能包含空格字符工作国家
- 逻辑有缺陷,对非布尔值使用
函数可能导致意外结果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
您的第二列是以国家或工作地区为基础的吗?很抱歉,我对A列和B列进行了匹配。
=IF(工作地区,A2)
?它将抛出错误,除非您没有布尔值。工作地域
和工作国家
是否命名范围?否则也会抛出错误。#函数未定义或拼写错误时会出现名称错误。在上面的屏幕截图中,我可以看到“IFS”是excel中不可用的函数,这就是为什么您会出现#名称错误。请返回并重新阅读我的评论,然后重新阅读您的叙述,最后仔细查看您提供的图像并对其进行理解。我同意OP的查询有一些问题(如您所述)但你提供的答案并不是OP问题的解决方案。。这是对OP查询中可能(最有可能)问题的分析。虽然我同意你概述的内容,但我不认为它应该作为一个项目提供answer@Zac我是否应该在结尾添加公式以改进我的答案?当我阅读问题标题和问题本身时,我有点不知所措,因为它们都涉及不同的问题(列比较和#NAME?计算)。我应该回答哪一个问题?你好,安德隆德,我颠倒了我的投票,但我应该感谢你提供了这些有用的信息。据我所知,OP的问题有两个方面:1。OP的公式有问题。2.这些列并不总是在“同一个位置”。我怀疑答案可能是VBA和公式的组合。我想你现在的公式可以用了,但是首先需要一些VBA来查找列,然后使用VBA来实现你的公式Hello AntiDrondert,非常感谢你对我的帮助,这段代码非常有效,我永远不会忘记你。再次感谢你。