gpt4 book ai didi

Excel:显示从开始日期和结束日期生成的月份名称集合?

转载 作者:行者123 更新时间:2023-12-04 11:58:33 24 4
gpt4 key购买 nike

我正在尝试生成一个表格来记录每个月发布的文章。但是,我与不同客户合作的月份因广告系列的长度而异。例如,客户 A 签订了从 3 月到 9 月的六个月契约(Contract)。客户 B 从 2 月开始签订为期 12 个月的契约(Contract)。
我不想每次都创建相关月份的定制列表,而是希望根据事件开始和结束自动生成列表。
这是一个屏幕截图来说明这可能看起来如何:
example_spreadsheet
以下是上述预期输出的示例,我想要实现的目标:
expected_output
目前,唯一生成的月份是最后一个月。它进入A6(我希望A5,但我觉得我正在尝试使用谷歌翻译说一种语言,所以......)。
这是我正在使用的代码:

Sub CreateReport()
Dim uniqueMonths As Collection
Set uniqueMonths = New Collection

Dim dateRange As Range
Set dateRange = Range("B2:C2")

On Error Resume Next

Dim currentRange As Range
For Each currentRange In dateRange.Cells

If currentRange.Value <> "" Then

Dim tempDate As Date: tempDate = CDate(currentRange.Text)
Dim parsedDateString As String: parsedDateString = Format(tempDate, "MMM")
uniqueMonths.Add item:=parsedDateString, Key:=parsedDateString

End If

Next currentRange

On Error GoTo 0

Dim uniqueMonth As Variant
For Each uniqueMonth In uniqueMonths

Debug.Print uniqueMonth

Next uniqueMonth

Dim item As Variant, currentRow As Long
currentRow = 5
For Each item In uniqueMonths
dateRange.Cells(currentRow, 0).Value = item
currentRow = currentRow + 1
Next item

End Sub

最佳答案

通过 Evaluate 的用户定义函数
只需输入=GetCampaignMonths(A2,B2)进入单元格A5 .
如果您不处置较新的动态版本 2019+/MS365,则需要输入 CSE (Ctrl+Shift+Enter) 完成一个{数组公式}:
解释
基本上这会将所有结果显示为 动态(溢出)范围 ,从代码评估中获益一个类轮 ...
例如Jan..Dec(12 个月由列地址表示)*

=TEXT(DATE(0,Column(A:L),1),"mmmm")
如果您想包括更多年份,udf 只需将年份差异(a 部分)乘以 12 到列号(参见 b 部分)。
DATE() 函数的评估(参见 c 节)甚至连续几年都正确,TEXT() 返回通过 "mmmm" 格式化的(英文)月份名称.
Public Function GetCampaignMonths(StartDate As Date, StopDate As Date)
'Purpose: get vertical 2-dim array of month names
'a) get years difference
Dim yrs As Long: yrs = Year(StopDate) - Year(StartDate)
'b) get column numbers representing months
Dim cols As String
cols = Split(Cells(, month(StartDate)).Address, "$")(1)
cols = cols & ":" & Split(Cells(, month(StopDate) + Abs(yrs * 12)).Address, "$")(1)
'c) evaluate dates
Dim months
months = Evaluate("Text(Date(0,Column(" & cols & "),1),""mmmm"")")
GetCampaignMonths = Application.Transpose(months)
End Function

关于Excel:显示从开始日期和结束日期生成的月份名称集合?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67984399/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com