arrays - 获取 2 个输入日期之间的月份名称并将它们放入数组中

标签 arrays excel vba

这是我想要做的:单元格 B2:开始日期单元格 B3:结束日期

示例:
B2 --> 01/01/2019
B3 --> 01/05/2019

示例

enter image description here

这是迄今为止我的代码:

Sub GetUniqueMonths()

Dim StartDate As Date, EndDate As Date

With ThisWorkbook.Sheets("Foglio1") 'remember to fully qualify your ranges, including the workbook
    StartDate = .Range("B2")
    EndDate = .Range("B3")
End With

Dim StartWeek As String, EndWeek As String
StartWeek = MonthName(Month(StartDate))
EndWeek = MonthName(Month(EndDate))

Dim arr() As String
Dim i As Long
ReDim arr(StartWeek To EndWeek)
For i = StartWeek To EndWeek
    arr(i) = i
Next

End Sub

我想循环思考给定的两个日期:01/01/201901/05/2019获取月份名称并将它们放入数组< strong>arr,但我得到的只是一个错误 --> ReDim arr(StartWeek To EndWeek) 上的类型不匹配,有什么建议吗?

我的输出将是arr(一月、二月、三月、四月、五月)

最佳答案

你可以像我今天早上在 your other question 上那样回答这个问题。 。作为替代尝试:

enter image description here

Sub Test()

Dim StrtD As Long, EndD As Long
Dim arr As Variant

With Sheets("Foglio1")
    StrtD = Month(.Cells(1, 2).Value)
    EndD = Month(.Cells(2, 2).Value)
    arr = Application.Transpose(.Evaluate("TEXT(DATE(2019,ROW(" & StrtD & ":" & EndD & "),1), ""mmmm"")"))
End With

End Sub
<小时/>

如果您超过了某一年的跨度,您需要知道两个日期之间有多少个月。在您的示例中 1-12-20191-3-2020。现在,我在 .Evaluate 中使用的公式需要获取 12-15 的范围。我们可以使用 DateDiff 函数来实现这一点,如下所示:

Sub Test()

Dim StrtD As Long, EndD As Long
Dim arr As Variant

With Sheets("Foglio1")
    StrtD = Month(.Cells(1, 2).Value)
    EndD = StrtD + DateDiff("m", .Cells(1, 2).Value, .Cells(2, 2).Value)
    arr = Application.Transpose(.Evaluate("TEXT(DATE(2019,ROW(" & StrtD & ":" & EndD & "),1), ""mmmm"")"))
End With

End Sub

您可能想知道“但现在您给配方输入的时间范围是 12:15?既然不超过 12 点,那么如何返回正确的月份呢?”好的是,公式会知道 13 表示一月,14 表示二月,等等。因此,正确的数组将返回给变量。 :)

关于arrays - 获取 2 个输入日期之间的月份名称并将它们放入数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57872845/

相关文章:

VBA VLookup 使用混合格式失败

jQuery inArray 给出错误的结果

java - 在两个数组中查找值

c++ - 当数组超出范围时,通过异常检查是否安全?

c++ - 是什么导致这个数组值改变?

运行其他模块的VBA模块

excel - 如何获得一个号码并将其分成多个组

excel - 在一列中求和数字

excel - 每 15 分钟刷新整个 Excel 工作簿(所有数据连接和计算)?

excel - 如何使用 CheckBox Logic 导航工作簿中的其他工作表?