【问题标题】:Determine the month of a week based on in which month a certain weekday is?根据某个工作日在哪个月份确定一周中的月份?
【发布时间】:2014-10-06 09:41:31
【问题描述】:

我希望用户在 A1 中输入年份。

我希望用户在 A2 中输入周数。

我希望用户在 A3 中输入工作日(星期一、星期二、星期三、星期四、星期五、星期六或星期日)。

然后我希望 A4 计算输入的周数的月份,根据指定的工作日是否在该月内,周数被计为属于某个月份。

什么公式可以在 A4 中使用? (如果你不能解决这个问题,但可以给我一个公式,如果指定的工作日只能是星期四,那么我也欢迎。

【问题讨论】:

  • 你尝试过什么了吗?
  • 我尝试过类似 =CHOOSE(MONTH(DATE(YEAR;1;WEEK*7-N)-WEEKDAY(DATE(WEEK;1;3)));"Jan";"Feb ";"Mar";"Apr";"Maj";"Jun";"Jul";"Aug";"Sep";"Okt";"Nov";"Dec") 并且该公式中的 N 在 1 之间变化和 7,(周一和周日),但还没有让它工作。我不完全理解公式。
  • 我的公式灵感来自这里:extendoffice.com/documents/excel/…
  • 我理解错了吗:你想使用 Excel 而不是 VBA?
  • 你是如何计算周数的?使用的方法多种多样;最常见的是 ISO 标准(第 1 周是一年中的第一周,其中包含星期四,一周的第一天是星期一),但您的方案可能会使用其他标准,这会有所不同计算。

标签: excel excel-formula


【解决方案1】:

我的想法是这样的:

(weeknumber-1)*7 + Weekday -> Mon = 1, Tue = 2.... 检查年份 [0..365 或 366] 并与 1 月 / 2 月 / 3 月的偏移量进行比较...取决于年份是否有 2 月 29 日 - 可以使用年份来计算。

现在您所要做的就是将其转换为代码。

编辑: 在我阅读了您提到的那个页面后,我假设您在理解 Excels 日期语法时遇到了困难 http://office.microsoft.com/en-us/excel-help/date-function-HP010062283.aspx

让我们分解一下代码: 这里会发生什么?

=CHOOSE(MONTH(DATE(A2,1,B2*7-2)-WEEKDAY(DATE(B2,1,3))),"January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December") 

让我们选择第一个 DATE 语句: 日期(如 Microsoft 文档中所述)的工作方式如下:如果您的月份超过 30/31 天,则剩余天数被拖到下个月。所以 A1 是年份 (yyyy/mm/dd) B2 是 天乘以 7 == 周数减去一些偏移量,因为第一周不应该被计算在内(就像它是第 1 周第 3 天但是否则公式将使其成为第 10 天)

** https://support.office.com/en-US/Article/WEEKDAY-function-a9784177-5c31-4deb-bc9e-d4ab914983ca?ui=en-US&rs=en-US&ad=US

** 与月份相同 https://support.office.com/en-US/Article/MONTH-function-EEDAC31A-E28C-46FB-B81F-CADB4BC03751?ui=en-US&rs=en-US&ad=US

那么月份名称是怎么回事? 好吧,这只是一个简单的枚举,一开始的 CHOOSE 函数会将 0...x 之间的数字转换为枚举中相应位置的值,这就是为什么月份必须按顺序排列的原因。

【讨论】:

  • 也许我不明白我的问题。问题是当我使用我在网上找到的函数 =MONTH(DATE(year;1;week*7-2)-WEEKDAY(DATE(week;1;3))) 时,它告诉我 2014 年的第 1 周是在十二月。但这是荒谬的。我希望第一周在 1 月。如何更正公式?
  • 此函数使用 ISO 周日期编号en.wikipedia.org/wiki/ISO_week_date。定义是:第 1 周是包含 1 月 4 日的那一周。所以 2014 年的第 1 周从 2013 年 12 月开始,星期一是 2013 年 12 月 30 日。
  • @user1283776 如果您将 -2 替换为 +1,即=MONTH(DATE(year;1;week*7+1)-WEEKDAY(DATE(week;1;3))),那么这将花费一周的星期四并从中计算月份,这意味着第 1 周将始终在 1 月并且第 52/53 周总是在 12 月(假设您的周数是 ISO 周).....但是如果您希望这一天灵活,您需要定义您的周数,以便第 1 周始终完全在 1 月内(即正如 Axel 所说,ISO 周不是这种情况),所以 Ron 的问题(上面)是相关的 - 如何为您定义周数?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-14
  • 1970-01-01
  • 2023-02-01
  • 2010-10-25
  • 1970-01-01
  • 1970-01-01
  • 2020-04-02
相关资源
最近更新 更多