excel - 使用 if 函数从开始日期和结束日期获取值

标签 excel if-statement excel-formula lookup

我正在使用 Excel,我有两个数据集,其中包含每日数据,即按天分割的日期。我有另一个数据集,其中包含按周计算的数据,如开始周和结束周,并且我还有周数。我需要将“week_number”提取到我的主数据集中,该数据集按每日数据分割。开始周和结束周将包含一系列日期,即周开始 1/11,周结束 1/16 第 3 周。我需要该周号来存储每日数据。

我尝试使用嵌套的 if,但我试图在数组中查找它,所以最终结果是“溢出” 关于如何解决这个问题有什么想法吗?示例

Table 1                       Table 2

date                            week_start    week_end   week_number
1/1                                 1/11         1/16      3
1/2
1/3
1/4

最终结果

date     week_number
    
1/11         3
1/12         3

最佳答案

Exhibit/截图等引用:


<强>1。最简单

=WEEKNUM(C5)-($K$5-$J$5)

simplest illustration

  • 利用原生“weeknum”公式(针对您/账单的“一年的第一天”之间的任何偏差进行调整
  • 没有泄漏!担忧
  • 简单/节俭

缺点/对策

  • 您的周数可能在某些方面/形式上与 Excel 有所不同
  • 但是,在我上面的示例中,关于“17”与“3”的情况很容易被允许(因此您的第一周可能是在八月中旬 - 对应于您启动公司/项目等的时间 - 这并不正如我在上面演示的那样,不会对任何事情产生不利影响;即使您建模的是 5 天“工作日”与 7 天“日历”组成一周,这也不会出现问题;使用 7 天也不会出现问题;
  • 由于 weeknum 函数限制,溢出功能不可用(Q 不清楚这是否是可取的,尽管如此 - 无法使用当前形式的此函数实现溢出#
  • 需要 Office 365 兼容版本的 Excel(对于提及“spill”功能的 OP 来说不是问题)

<强>2。 “中间”方法

(即在另外两个RE中:复杂性/简约性等)

=LET(a_,$H$5:$H$15,b_,$I$5:$I$15,x_,(C5<=b_)*(C5>=a_),y_,(C5>b_)*(C5<OFFSET(a_,1,0)),z_,SUM($J$5:$J$15*(x_+y_)),z_)

in-betweeny

这里:x_ 负责工作日,y_ 负责周末(如果您的周跨越日历周/7 天,fn 仍然有效 - 如下所示;类似于其他人提出的 RE:sumifs [但我认为更简洁,因为条件等同于 sumifs 中相同标准的乘积 - 'sumproduct' 与 'sum' 也是如此,尽管 sumifs > 将提供“溢出”功能 - 这是不可能用 sum (或 minmaxor 实现的> - 顺便说一句,同样的事情也适用)]

  • x_ 变量适用于工作日(假设周跨周一至周五,尽管这不是先决条件,
  • 能够处理非连续周数的函数(例如,如果项目在第二个“周”后暂停一年,那么它将保持“weeknum=2”状态,直到项目重新启动,此时它将反射(reflect) weeknum = 3 (或此时分配给它的任何周数)
  • 工作日/周末也是如此,例如如果您希望 weeknum 反射(reflect)在周六/周日旁边,但带有 weeknum 的表格不包括周末,那么您可以“返回 'blank' RE: weeknum ,或决定分配给上一个/下一个“工作日-周”
  • 我假设这些被分配给以下weeknum(例如,第 1 周之后的星期六接第 2 周)。然后,该项目将在这段不连续的时间段内继续最新状态 RE:weeknum(但可以按原样离开并继续处理不太远的其他事情 - (免责声明 - 后果自负!☺) )

解决方案 3(复杂 - 相对上下文 ☺)

=LET(
x_,SORT(VSTACK(H5:H15,I5:I15)),
x2_,HSTACK(x_,INDEX(J5:J15,IFERROR(MATCH(x_,H5:H15,0),MATCH(x_,I5:I15,0)))),
x2a_,INDEX(x2_,0,1),
x2b_,INDEX(x2_,0,2),
z_,IFERROR(INDEX(x2b_,MATCH(C5#,x2a_,1)),TREND(x2b_,x2a_,C5#)),
z_)

Meatier version


注释:

  • 使用spill#(更强大、更高效)(尽管这可以很容易地“关闭” - 尽管更喜欢原样
  • 它会创建一个类似数据透视表的 View ,其中包含摘要/周编号,然后在其他样板索引/匹配变体中使用漂亮的参数“-1”来识别查找

总体说明

  • 3 种独立方法(以及与手动检查)之间的对应关系有望证实结果的真实性 - ta。

💪


关于excel - 使用 if 函数从开始日期和结束日期获取值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/76067422/

相关文章:

c++ - if else 评价

Excel 比较两列并突出显示重复项

EXCEL 数组公式,指示一个范围中的值是否存在于另一范围中

vba - 无法创建循环来比较两个工作表的内容

excel - 从两个数组的差异创建第三个数组

java - 通过Java将Excel工作表转换为PDF

javascript - 一起显示英里每小时和公里每小时?

java - 暴力破解: Find Digits

vba - #ERROR : Unable to get match property of the worksheet class. 我已经尝试过在线提供的解决方案

vba - 从字符串 VBA 或函数的开头删除零