Excel formula Excel,用于输出';代理名称'&引用;“复制”;,或;“未找到”;
我有一个excel测试,我没有做得特别好,但这一个问题让我难住了。我需要一个等式,该等式取此列表中的名称,并在“first.initial”或“COPY”或“NOT FOUND”中输出代理名称 第1页: 代理人 亚当·m 代理人 大卫·e 代理人 乔。A 代理人 本·B 代理人 凯特·C 代理人 培训.22 代理人 管理员 我提交的方程式,老师说是错误的,是:Excel formula Excel,用于输出';代理名称'&引用;“复制”;,或;“未找到”;,excel-formula,Excel Formula,我有一个excel测试,我没有做得特别好,但这一个问题让我难住了。我需要一个等式,该等式取此列表中的名称,并在“first.initial”或“COPY”或“NOT FOUND”中输出代理名称 第1页: 代理人 亚当·m 代理人 大卫·e 代理人 乔。A 代理人 本·B 代理人 凯特·C 代理人 培训.22 代理人 管理员 我提交的方程式,老师说是错误的,是: =IFNA(IF(COUNTIF(Sheet1!A:A, A3)>1, "COPY", INDEX(Sheet1!A:A,MATC
=IFNA(IF(COUNTIF(Sheet1!A:A, A3)>1, "COPY", INDEX(Sheet1!A:A,MATCH(A3&"*",Sheet1!A:A,0))),"Not Found")
事情是这样的
您正在检查原始数据源的名称、预转换。我必须承认,副本
起初有点误导,但后来我才明白
你也将整个事情包装在一个单一的逻辑。。。ISNA()。。。您的公式只能从中返回TRUE、FALSE或错误
将包装的ISNA()放在一边,这意味着对于您的公式,这些条目中的大多数都找不到。是的,如果你有一个已经被处理过的数据列表,这几乎可以成功。但是您正在检查错误数据中的“副本”
这里的第一个任务是将数据处理为所需的格式“[Firstname].[initial]”//因此,假设单元格中的第一组字符始终是名字,您可以使用以下内容的组合:
=LEFT(A2,SEARCH(“,A2)-1)
-通过将最左边的字符返回到第一个空格位置减去1的长度来获取forname
=RIGHT(A2,LEN(A2)-搜索(“,A2))
通过确定从右侧开始的长度为总单元格长度减去空格位置,获取空格右侧的所有字符
在第二种情况下,您需要执行逻辑运算,尽管您希望单个字母是一个单词,如果是数字,则需要整个字母:
=IFERROR(右(A2,LEN(A2)-搜索(“,A2))-0,中(A2,搜索(“,A2)+1,1))
因此,我在这里所做的是尝试从字符串中删除0,如果它是一个数字,这将成功并将该数字返回给我们。如果它失败了,它将产生一个错误并继续到第二条,给我们一个字符
您可以使用简单的字符串构建或连接子句组合这些内容:
=左(A2,搜索(“,A2)-1)和“&&IFERROR(右(A2,LEN(A2)-搜索(“,A2))-0,中(A2,搜索(“,A2)+1,1))
或
=CONCATENATE(=左(A2,搜索(“,A2)-1),”,IFERROR(右(A2,LEN(A2)-搜索(“,A2))-0,中(A2,搜索(“,A2)+1,1))
现在我们差不多到了,除了Ben和Adam产生了错误,因为找不到空格字符。我们现在将处理该错误,以便继续搜索:
=IF(ISERROR(SEARCH(“,A2)),A2,LEFT(A2,SEARCH(“,A2)-1)&“&IFERROR(RIGHT(A2,LEN(A2)-SEARCH(“,A2))-0,MID(A2,SEARCH(“,A2)+1,1))
-如果找不到空格字符,我们将拥有整个单元格,否则,我们将使用空格来构建搜索项
现在我们已经按照我们想要的方式对文本进行了格式化,我们可以继续进行搜索,顺序很重要,因为我们需要首先检查上面的结果是否重复,并在找到的地方打印“副本”,然后查找匹配项并返回它(如果有),如果找不到,最后返回“未找到”
我们需要使用通配符来满足条目Ben
。因此,让我们先展示逻辑,然后将整个公式组合在一起:
=IF(COUNTIF($B$1:B1,[SearchTermFormula]),“COPY”,
-公式的这部分使用COUNTIF检查搜索词是否已经存在于其上方,如果存在,则返回“COPY”,并将继续下一部分,即绝对引用($
)这一点很重要,以便在向下复制公式时更新范围,但保持第一个单元格处于锁定状态
IF(ISNUMBER(匹配([SearchTermFormula]&“*”,Sheet1!$A$1:$A$14,0)),[SearchTermFormula],“NOT FOUND”)
-因此这可以用来显示基本逻辑,我们再次使用IF()来确定是否可以进行匹配,因为如果是,则返回数字。然后我们可以返回搜索词本身或“NOT FOUND”
不过,这一部分的一个更简洁的版本是:
IFERROR(索引(Sheet1!$A$1:$A$14,匹配([SearchTermFormula]&“*”,Sheet1!$A$1:$A$14,0)),“未找到”)
因为它实际上从sheet1返回结果,并且使我们使用[SearchTermFormula]1的时间更短,资源更少
INDEX()
基本上将范围映射为基于1的数组。这意味着范围中的第一个单元格被视为1,1的地址。您可以认为它添加了X和Y轴,但0,0在左上方,Y轴反转
因此,我们将其索引到列A,MATCH返回相对位置,因为行的大小相同,相对位置将是我们要查找的行号,因此我们得到返回的结果或错误值,因此IFERROR()引导我们生成“NOT FOUND”
综上所述,我们有:
=IF(COUNTIF($B$1:B1,IF(ISERROR,SEARCH(“,A2)),A2,LEFT(A2,SEARCH(“,A2)-1&“&IFERROR(RIGHT(A2,LEN(A2)-SEARCH(“,A2))-0,MID(A2,SEARCH(“,A2)+1,1))>0,“复制”,IFERROR(索引(Sheet1!$A$1,匹配)(IF(ISERROR(SEARCH(,SEARCH(“,A2)),A2),LEFT(A2,SEARCH(“,A2,SEARCH(“,A2)-1)&IFERROR(RIGHT)(RIGHT,LEN,A2),SEARCH(“),MID(A2,A2),SEARCH(,A2))-1))-1),-1),-1&&IFERROR(MID)搜索),-1),-,Sheet1!$A$1:$A$14,0)),“未找到”)
很抱歉这篇文章,但我希望它能帮助您理解文章的范围
=IFNA(IF(COUNTIF(Sheet1!A:A, A3)>1, "COPY", INDEX(Sheet1!A:A,MATCH(A3&"*",Sheet1!A:A,0))),"Not Found")