Как найти значения, которые попадают между двумя датами? - PullRequest
0 голосов
/ 02 марта 2020

У меня есть ключ «Значения, которые я пытаюсь найти», мои «Данные» и диапазоны дат, в которые они попадают.

Как бы я создал функцию или инструмент VBA, который будет искать значения, которые соответствуют "значениям, которые я пытаюсь найти", и падать между двумя датами?

Я также хотел бы поставить запятую с разделителями, потому что несколько значений могут совпадать с ключом в зависимости от диапазона дат.

Я попытался выполнить функцию INDEX (мне кажется, я ввожу ссылки неверные):

=INDEX($I$3:$I$18,MATCH($I$3:$I$18,K2:L2351,IF(E2>=K$2:K$2351,IF(F2<=K$2:K$2351,IF(Value=K$2:K$2351,1))),0))

Я новичок в Excel, любая помощь будет оценена.

[enter image description here

Я видел это vba на другом форуме, но он не включает функцию match / vlookup.

    Function SingleCellExtract(LookupValue As String, LookupRange As Range, ColumnNumber As Integer, Char As String)
'Updateby20150824
    Dim I As Long
    Dim xRet As String
    For I = 1 To LookupRange.Columns(1).Cells.Count
        If LookupRange.Cells(I, 1) = LookupValue Then
            If xRet = "" Then
                xRet = LookupRange.Cells(I, ColumnNumber) & Char
            Else
                xRet = xRet & "" & LookupRange.Cells(I, ColumnNumber) & Char
            End If
        End If
    Next
    SingleCellExtract = Left(xRet, Len(xRet) - 1)
End Function

1 Ответ

0 голосов
/ 16 марта 2020

Наконец разобрался, вот код:

    Sub Populate_Data()


ActiveSheet.Range("$A$1:$AE$2350").AutoFilter Field:=13, Criteria1:=Array( _
        "S48", "SX3", "P49", "S25", "P28", "T50", "TBF", "TB5"), Operator:=xlFilterValues
    ActiveSheet.Range("$A$1:$AE$2350").AutoFilter Field:=10, Operator:= _
        xlFilterValues, Criteria2:=Array(0, "1/3/2020", 0, "12/31/2019")

Range("J:J,M:M,T:T").SpecialCells(xlCellTypeVisible).Copy

curName = ActiveSheet.Name

updatedsheet = curName + " 2019-2020"

ThisWorkbook.Sheets.Add

ActiveSheet.Name = updatedsheet

Range("B1").PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
    False, Transpose:=False

ActiveSheet.Range("A2:A100" & var1a).Formula = _
Replace("=B2-DAY(B2)+1{SOME_VAR}", "{SOME_VAR}", var1a)


ActiveSheet.Range("G1" & var1a).Formula = _
Replace("1/1/2019{SOME_VAR}", "{SOME_VAR}", var1a)


With Range("G1")
.AutoFill Destination:=Range("G1:G13"), Type:=xlFillMonths

End With


Range("H1").FormulaArray = "=TEXTJOIN("","",TRUE,IF($A$1:$A$53=G1,$C$1:$D$53,""""))"
Range("H1:H13").FillDown

ActiveSheet.Range("I1" & var1a).Formula = _
Replace("=SUMIFS($D$2:$D$5,$A$2:$A$5,""=""&G1){SOME_VAR}", "{SOME_VAR}", var1a)

Range("I1:I13").FillDown

Cells.Select
    Selection.Copy
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False

End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...