【问题标题】:Excel : Weeknumber within month with criteriaExcel:带有标准的月份内的周数
【发布时间】:2017-08-24 08:05:33
【问题描述】:

我正在尝试制定一个公式来计算一周内的周数,但有一定的标准。一周总是从星期一开始。但如果该周的星期四在下个月,则该周数是下个月的一部分。

[在此处输入图片描述][2]

现在我有以下公式:

=INTEGER((6+DAY(A4+1-WEEKDAY(A4-1)))/7) where A4 is the date.

这已经计算了一个月内的周数,但不是以星期四为标准。一个额外的附加标准是周数应该从周一早上 6 点开始,而不是从午夜开始。但是我可以用一个额外的列来解决这个问题。

提前致谢!

【问题讨论】:

  • 请提供屏幕截图或数据样本,其中包含符合您问题标准的场景。手动输入所需的结果。现在,作为这里的新用户,请确保您理解这一点:编辑您的问题以提供所要求的详细信息。不要为此使用 cmets。编辑问题后,发表评论并使用@teylyn 提醒我您的更改。
  • @teylyn 我添加了 Excel 示例的屏幕截图。谢谢。
  • 我认为EOMONTH 函数可以帮助你。很遗憾,我无法为您提供更多帮助。

标签: excel excel-formula week-number


【解决方案1】:

考虑根据前一周数计算出周数:

  • 如果是星期一,那么
    • 如果下周四进入下个月,则重置为 1
    • 否则增加 1
  • 否则使用相同的值

所以从 E4 中的 1 开始

=IF(WEEKDAY(A5)=2,IF(MONTH(A5+3)>MONTH(A5-4),1,E4+1),E4)

输入 E5 并复制下来。

编辑

以上适用于 2017 年,但需要稍作更改才能适用于 2018 年及以后,因为跨年边界的月份从 12 减少到 1:

=IF(WEEKDAY(A5)=2,IF(MONTH(A5+3)<>MONTH(A5-4),1,E4+1),E4)

【讨论】:

  • 我得出了类似的结论@TomSharpe,但如果日期从月中开始,我就永远不会上台。 OP 示例数据不涵盖这种情况,并且 OP 确实将第一个日期留为空白,我假设它确实应该是 4。虽然答案很好,并且准确地给出了 OP 要求的输出。
  • 感谢@Forward Ed,这样似乎更容易。感觉好像你必须向后工作。但老实说,我还没有弄清楚 OP 的原始公式是如何接近解决方案的,也许我接下来应该这样做。
  • 我最终想出了一个解决方案,从日期开始计算周数。这个想法是为每个日历月定义一个“会计月”,例如对于 2017 年 1 月,它将从 2 日星期一到 29 日星期日,那么获得周数并不难,但它确实需要几个帮助列。
  • 我以为会有点困难,但我总是喜欢挑战。
  • 非常感谢您提供这个简单的解决方案。与此同时,我能够使用各种帮助列来解决它,但这仍然不是万无一失的。当我将年份更改为 2018 年时,出现了一些错误的值。最初的公式是基于在开场帖上张贴的公式。但是在反复试验中将其更改为: =INTEGER((1+DAY(B4+3-WEEKDAY(B4-1)))/7)+1
【解决方案2】:

我无法上传工作簿,但这里有一个解决方案:

第 2 行是标题 第 3 行为空 B4 往下是日期(01/01/2017 到 31/12/2017)

C4=WEEKDAY(B4,2)

D4=VLOOKUP($C4,$L$3:$M$9,2,0)

E4=MONTH(B4)

F4 到 J4 为空

F5=IF(C5=1,F4+1,F4)

G5=IF(C5=4,11,0)

H5=IF(MAX(E5:E11)-MIN(E5:E11)&lt;&gt;0,22,0)

I5=IF(AND(C5=4,SUM(G5:G11)+SUM(H5:H11)&gt;22),I4+1,0)

J5=IF(H6-H5&lt;0,1,IF(H6=22,J5,IF(OR(C6=1,I6&lt;&gt;0),J5+1,J5)))

L3 到 M9 是 vlookup

1   Monday
2   Tuesday
3   Wednesday
4   Thursday
5   Friday
6   Saturday
7   Sunday

这对你有用吗?

【讨论】:

  • 谢谢!我想我理解你的解决方案,但是 J5 中的最终函数似乎很奇怪,因为它有一个循环引用?那么这是如何工作的呢?
  • 我不确定为什么会有循环引用。你复制我的代码对吗?
  • 您在单元格 J5 中的函数包含 J5,所以它引用了自己? J5 =IF(H6-H50),J5+1,J5)))
  • 啊,改成J4。如果这不起作用,我明天会正确地完成它
【解决方案3】:

根据我的经验,这些周数问题中的大多数问题都可以通过您原来的公式的一些变化来回答 - 在这种情况下,这个版本应该迎合周一开始,从周四开始确定月份

=INT((6+DAY(B4+4-WEEKDAY(B4-1)))/7)

这适用于 A4 中的日期,但假设您在 A4 中有一个日期/时间,并且一周直到周一 06:00 才开始,那么您可以按如下方式进行调整:

=INT((6+DAY(B4+3.75-WEEKDAY(B4-1.25)))/7)

【讨论】:

    猜你喜欢
    • 2012-05-16
    • 2016-08-07
    • 2012-06-06
    • 2016-06-25
    • 1970-01-01
    • 2015-04-09
    • 1970-01-01
    • 2021-11-17
    • 1970-01-01
    相关资源
    最近更新 更多