У меня проблемы с созданием кода 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?