【问题标题】:Excel Match function with concatenated value具有连接值的 Excel 匹配函数
【发布时间】:2015-02-02 18:51:23
【问题描述】:

我对使用 excel 编写大型复杂公式有点陌生。大约 7 个月前,我从某人那里接手了一份报告,似乎每周我都会发现他的公式所写的内容存在问题。

这周我遇到了匹配公式的问题。我们有一份为一家大型五金店运行的报告,他们根据周数进行报告。上周是 201501(2015,第 1 周。)上周是 201452(2014,第 52 周。)

为了查看 4 周的平均销售量,我的前任设置了 4 个数字,这些数字每周都会根据您在其中一个列标题中键入的周数而变化。所以,当我输入 201452 时,

#1 is 201449
#2 is 201450
#3 is 201451
#4 is 201452

他将这些输入到匹配函数中。

本周我发现 201501 无法正确显示周数。我得到了

Results   Formula Used
201501    =D1 (The cell where you type the Store's week)
201500    =IF(M1=201301,201252,IF(M1=201401,201352,M1-1))
201499    =IF(L1=201301,201252,IF(L1=201401,201352,L1-1))
201498    =IF(K1=201301,201252,IF(K1=201401,201352,K1-1))

我改变了那些公式

Results   New Formula
201501    =D1
201452    =IF(RIGHT(M1,2) = "01",(LEFT(M1,4) - 1)&"52",M1-1)
201451    =IF(RIGHT(L1,2) = "01",(LEFT(L1,4) - 1)&"52",L1-1)
201450    =IF(RIGHT(K1,2) = "01",(LEFT(K1,4) - 1)&"52",K1-1)

但是,他在整个工作簿中设置的匹配公式尚未修复。他们仍然显示“#N/A”。一个这样的公式是

=INDEX(N5:DZ5,1,MATCH(Data!$L$1,$N$1:$ED$1,0))

此公式主要查看列标题,如果它发现列标题与我输入的星期匹配,将显示该范围内的值。

基本上,任何输入 201452 值的公式都会返回“#N/A”。其他数字奇迹般地显示数据。

我已经尝试将受影响行中的所有数据转换为“常规”格式类型。我试过检查我的所有公式和列标题之前或之后是否有空格,但仍然没有运气。

有什么想法吗?

【问题讨论】:

    标签: excel-formula excel-2010 worksheet-function


    【解决方案1】:

    经过反复尝试,发现Excel不喜欢串联。修剪没有帮助,文本没有帮助,连接当然不起作用。

    我最终意识到我可以简单地写 =IF(RIGHT(M1,2) = "01",M1-49,M1-1)

    这使得在它右边的数字是第一周的情况下,减去 49 天并产生 52 而不是 00。

    【讨论】:

      【解决方案2】:

      我在这里猜测,但可能是您的公式将年/周组合显示为数字,匹配公式在其中查找文本(出于 Excel 的目的,它不会将它们识别为相同的) .

      您可以通过用文本公式包装上面的公式来解决这个问题

      所以你会得到以下内容:

      Results   New Formula
      201501    =TEXT(D1,"0")
      201452    =TEXT(IF(RIGHT(M1,2) = "01",(LEFT(M1,4) - 1)&"52",M1-1),"0")
      201451    =TEXT(IF(RIGHT(L1,2) = "01",(LEFT(L1,4) - 1)&"52",L1-1),"0")
      201450    =TEXT(IF(RIGHT(K1,2) = "01",(LEFT(K1,4) - 1)&"52",K1-1),"0")
      

      【讨论】:

      • * 叹息 * 感谢您编辑我的初始答案。我已经尝试过文本转换,但遗憾的是,这会导致更多的公式显示“#N/A”。我可以将任何 # 插入匹配项并使其工作。关于 201452 # 的一些东西已经过时了,因为其他三个数字在插入时可以工作,只是不能使用 =Text() 函数。
      • 奇怪的是,当我将星期更改为 201502 时,显示 201452 的公式变成了错误的公式。显然,当我的 IF 公式为真时,我的 IF 公式有问题,但我不知道问题是什么:/
      • 单步执行公式时会发生什么?
      • 我为我的问题找到了一个简单的解决方案并已发布。我确实尝试过早一点,但找不到任何有用的东西。 =INDEX(N5:DZ5,1,MATCH(Data!$L$1,$N$1:$ED$1,0)) 然后 =IF(RIGHT(M1,2) = "01",(LEFT(M1,4) - 1)&"52",M1-1) 然后 D1 然后 201501 。我想我只是想多了这个问题,并没有意识到解决方案真的很简单。
      猜你喜欢
      • 2021-08-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多