Использование существующих значений, экспортированных из SAP, для заполнения новых значений столбцов через VBA - PullRequest
0 голосов
/ 30 января 2020

У меня проблемы с созданием кода VBA для создания нового столбца со значениями на основе существующего столбца. Код, который я имею, показан ниже. Я попытался прикрепить изображение файла Excel, с которым я работаю, но я новичок на этом сайте, поэтому он не позволит мне. Сначала я извлекаю файл Excel из SAP, содержащий значения даты, которые меняются при каждом запуске макроса. «Дата начала» (столбец J) представляет день начала действия. Из этого столбца данных SAP я создал макрос, который создал новый столбец (столбец L), в котором указано количество дней, прошедших с даты начала. Из этого столбца я пытаюсь создать еще три столбца.

1) Столбец, который считается как 1, если 6 <Столбец L <20 дней, и считается как 0 для всего остального </p>

2) Столбец, который считается как 1, если Столбец L > 20 дней и считается как 0 для всего остального

3) Столбец, который считается как 1, если столбец L <6 дней, и считается как 0 для всего остального </p>

    With ActiveSheet
    ndt = Application.Range("D:D").Cells.SpecialCells(xlCellTypeConstants).Count 'Counts number of rows in column to see how many values there are
    End With 
With ActiveSheet
    Set rngCategory = .Range(.Cells(2, 9), .Cells(ndt, 9)) 'setting up of array of start date column
    End With
varCategory = rngCategory 'setting varCategory equal to the array made earlier
agedresults = varCategory 'setting agedresults equal to the array
For lngIdx = 1 To UBound(varCategory) 'For the number of rows in the array
    startdate = varCategory(lngIdx, 1) 'start date equals the array
    agedresults(lngIdx, 1) = DateDiff("d", startdate, Format(Now(), "MM/DD/YYYY")) 'aged results equals the difference in todays date and the start date value
Next lngIdx 
unaged = agedresults
For lngIdx = 1 To UBound(varCategory)
If agedresults(lngIdx, 1) < 6 Then unaged(lngIdx, 1) = 1 Else unaged(lngIdx, 1) = 0
       Next lngIdx
With ActiveSheet
    Set rngResults = .Range(.Cells(2, 12), .Cells(ndt, 12))
        .Cells(1, 12) = "Days in QM Lot"
        Set agedcolumn = .Range(.Cells(2, 13), .Cells(ndt, 13))
        .Cells(1, 13) = "Aged"
    End With
    rngResults = agedresults 
    agedcolumn = aged

По какой-то причине значение дней заполняется (столбец L), но остальные три столбца остаются пустыми (за исключением заголовка). Кто-нибудь знает, почему это так? Что-то не так с моим утверждением if?

...