Как написать функцию COUNTIF для подсчета в одном столбце и использовать критерии из нескольких столбцов? - PullRequest
0 голосов
/ 06 июня 2019

Я работаю над составлением отчета о фиде, о котором я спрашивал в предыдущем вопросе. В одном из полей указывается количество отправляемых в данный момент товаров, но для этого необходимо использовать критерии из отдельного столбца, относящиеся к вводным датам (UDF_INTRODUCED).

Я использовал функцию COUNTIF, чтобы получить счетчик «UDF_INTRODUCED» за последние 6 месяцев, и теперь мне нужно получить количество элементов с «FirstOfDuedate1» в этой группе. Я не знаю, является ли это вложенным COUNTIF или мне нужно будет использовать COUNTIFS.

Изображение исходных данных:

Заголовки исходных данных и 7 строк

Изображение токового выхода, необходимо получить числовое значение для поля B7:

Токовый выход

Я пытаюсь использовать функцию COUNTIFS для подсчета на основе нескольких критериев, как показано в конце кода ниже:

Sub CommandButton1_Click()

Range("A2").Value = "Total FG"
Range("A3").Value = "Total out of stock"
Range("A4").Value = "Total out of stock intro past 6 months (included in 
Total out of stock)"
Range("A5").Value = "Total out of stock less past 6 months introductions"
Range("A6").Value = "Percentage in stock not included new introductions"
Range("A7").Value = "Items in Transit"
Range("A8").Value = "Percentage in stock including items in transit"

Dim MyPath As String, mps As Variant, mps_temp As String, mydate As Date, 
IntroDate As Date, i As Integer

MyPath = "C:\Users\Kirank\Documents\Stock Feed 
Analysis\HVL_Available_to_Sell_Report_with_Headers 2019.01.01"
mps = Split(MyPath, " ")

For i = LBound(mps) To UBound(mps)
    mps_temp = mps(UBound(mps) - i)
    If mps_temp Like "####.##.##" Then
        mydate = DateSerial(Mid(mps_temp, 1, 4), Mid(mps_temp, 6, 2), 
Mid(mps_temp, 9, 2))
        IntroDate = mydate - 181
        Exit For
    End If
Next
Range("B1").Value = mydate

    Range("B2").Select
    ActiveCell.FormulaR1C1 = 
"=COUNT(HVL_Available_to_Sell_Report_wi!C[3])"
    Range("B3").Select
    ActiveCell.FormulaR1C1 = 
"=COUNTIF(HVL_Available_to_Sell_Report_wi!C[3],0)"
    Range("B4").Select
    ActiveCell.FormulaR1C1 = 
"=COUNTIF(HVL_Available_to_Sell_Report_wi!C[13],"">=" & IntroDate & """)"
    Range("B5").Select
    ActiveCell.FormulaR1C1 = Range("B3") - Range("B4")
    Range("B6").Select
    ActiveCell.FormulaR1C1 = (Range("B2") - Range("B5")) / Range("B2")
    Selection.Style = "Percent"
    Range("B7").Select
    ActiveCell.FormulaR1C1 = 
"=COUNTIFS(HVL_Available_to_Sell_Report_wi!C[4]," > " & 0" & 
"HVL_Available_to_Sell_Report_wi!C[13],"">=" & IntroDate & """)"

End Sub

В результате получается «ИСТИНА», а не число. Окончательное значение для этого должно быть 45.

1 Ответ

0 голосов
/ 06 июня 2019

Проблема в этом коде прямо здесь: > " & 0".

вы хотите иметь условие> 0, но то, как вы используете свои кавычки, означает, что знак > находится вне всехиз них, так что вы в основном делаете операцию сравнения.Вот почему вы получаете True.

Попробуйте:

ActiveCell.FormulaR1C1 = "=COUNTIFS(HVL_Available_to_Sell_Report_wi!C[4], "">0"",HVL_Available_to_Sell_Report_wi!C[13],"">=" & IntroDate & """)"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...