Excel 通过不使用范围筛选VBA中的月份范围
我不熟悉VBA代码,我有一个下拉列表,其中的值是从1月到12月。我手动添加了到12月的日期。在我当前编写的代码中,如果我选择1月,它将复制我输入的范围。我需要它自动选择一月整月日期,当我选择一月或任何其他月份时,不指定范围值。这可能吗Excel 通过不使用范围筛选VBA中的月份范围,excel,vba,Excel,Vba,我不熟悉VBA代码,我有一个下拉列表,其中的值是从1月到12月。我手动添加了到12月的日期。在我当前编写的代码中,如果我选择1月,它将复制我输入的范围。我需要它自动选择一月整月日期,当我选择一月或任何其他月份时,不指定范围值。这可能吗 For Each cel In Range("D2") If cel.Value = "Jan" Then Sheets("Actuals").Range("K1:AO1").Select 'copy required data to new sheet She
For Each cel In Range("D2")
If cel.Value = "Jan" Then
Sheets("Actuals").Range("K1:AO1").Select
'copy required data to new sheet
Sheets("Actuals").Range("K1:AO1").Copy
使用函数计算范围的起始值 以及使用月底函数的范围结束
Option Explicit
Function CalcAddress(yr As Integer, mth As String, Jan1 As String) As String
Dim dt As Date, n As Integer, i As Integer
' set date to 1st of month
dt = Format(yr & "-" & mth & "-01", "yyyy-mmm-dd")
' calc days in month
n = Day(WorksheetFunction.EoMonth(dt, 0))
' calculate days from Jan 1
i = DateDiff("d", DateSerial(yr, 1, 1), dt)
i = i + Month(dt) - 1 ' add spacer columns
CalcAddress = Range(Jan1).Offset(0, i).Resize(1, n).Address
End Function
Sub test()
Dim yr As Integer, mth As String, addr As String
yr = Year(Date) ' current year
mth = InputBox("Enter month [Jan,Feb,Mar,..]")
addr = CalcAddress(yr, mth, "K1")
MsgBox "Range is " & addr, vbInformation, UCase(mth) & " - " & yr
'Dim ws1 As Worksheet, ws2 As Worksheet
'Set ws1 = ThisWorkbook.Sheets("Sheet1")
'Set ws2 = ThisWorkbook.Sheets("Sheet2")
'ws1.Range(addr).Copy ws2.Range(addr)
End Sub
请与我们分享您的数据样本或您的工作成果。是的,可以提供其他信息。如果您只输入月份名称,您如何知道使用哪一年?现在我添加了当前年份月份@Ron Rosenfeld如果第1行的Jan是K到AO(31列)是Feb(2020)如果第2行的K到AM(29列)?@CDP1802-Feb将从同一行开始,排除Jan的一个单元格(即Jan K1到AO,Feb将从AQ1开始到BS1)