#excel #vba #excel-formula
#excel #vba #excel-формула
Вопрос:
Я пытаюсь заполнить ряд от большего числа в ячейке G2 (например, «512») до меньшего числа в ячейке H2 (например, «500»). Мне нужно, чтобы код VBA выполнялся в столбце J, создавая следующий этот ряд в качестве примера 512, 511, 510, 509, 508 … вниз по столбцу.
Вот скриншот, который описывает, что мне нужно
Большинство примеров, которые я нашел, похоже, построены для возрастающего ряда (512, 513, 514….)
Любая помощь, чтобы сделать это правильно, будет полезна
Комментарии:
1. Есть так много способов сделать это. Один из способов — вычесть единицу из ячейки выше. Итак,
J3
содержит= J2 - 1
. Не уверен, что вы ищете. Кроме того, в тексте вашего сообщения указан код VBA, в то время как сообщение помечено формулой excel. Пожалуйста, выберите один. Я предполагаю, что вам, вероятно, не нужен тег.2. Я использовал это для цикла, но я думаю, что ответ Криса тоже работает нормально
3. Пожалуйста, не публикуйте код в комментариях. Отредактируйте свой вопрос и опубликуйте то, что вы пробовали.
Ответ №1:
Для общего решения VBA попробуйте следующее
Sub CreateSequence(StartValue As Long, EndValue As Long, OutputStart As Range, Optional ByVal StepBy As Long = 1)
Dim NumValues As Long
Dim dat As Variant
Dim i As Long
StepBy = Abs(StepBy)
If StepBy <= 0 Then Exit Sub
NumValues = Abs(StartValue - EndValue) StepBy 1
ReDim dat(1 To NumValues, 1 To 1)
For i = 0 To NumValues - 1
dat(i 1, 1) = StartValue i * IIf(StartValue > EndValue, -StepBy, StepBy)
Next
OutputStart.Resize(UBound(dat, 1), 1).Value = dat
End Sub
Используйте это так
Sub Demo()
CreateSequence Range("G2").Value, Range("H2").Value, Range("K2")
End Sub
Решение по формуле (версия 365 Excel)
=SEQUENCE(G2-H2 1,1,G2,-1)
Ответ №2:
hlRange = Sheets(2).Cells(2, 7).Value - Sheets(2).Cells(2, 8).Value 1
' Fill series from max to min value
For j = 1 To hlRange
Sheets(2).Cells(j 1, 10).Value = Sheets(2).Cells(2, 7).Value - j 1
Next j
Ответ №3:
Вы можете использовать следующий код, он позволяет добавлять значения a для указания шагов, которые вы хотите выполнить.
https://i.stack.imgur.com/vSan5.jpg
Sub createNumList()
Dim i As Integer
Dim count As Integer
Dim cellValue As Integer
count = (ActiveSheet.Cells(2, 1).Value - ActiveSheet.Cells(2, 2).Value) / ActiveSheet.Cells(2, 3).Value
For i = 1 To count 1
If i = 1 Then
ActiveSheet.Cells(i 2, 5).Value = ActiveSheet.Cells(2, 1).Value
Else
ActiveSheet.Cells(i 2, 5).Value = ActiveSheet.Cells(i 1, 5).Value - ActiveSheet.Cells(2, 3).Value
End If
Next i
End Sub