Я новичок в excel vba. Я пишу код, в котором хочу сохранить значения 20 строк в столбце в переменной и аналогично другой набор значений из 20 строк в другой переменной. Затем я хочу вычесть одно из другого и сохранить в другой переменной (например, A). Эту процедуру я повторю еще 3 раза с разными наборами данных и в итоге получу 4 переменные (например, A, B, C, D). Наконец, я хочу найти максимум всех 4 переменных и присвоить значения столбцу.
(Максимальные значения, которые я хочу поместить в столбец delE)
Я пробовал это, как показано ниже. Но это не сработало. Он стирает значения всех столбцов. Я прилагаю код здесь. Не могли бы вы мне помочь?
Sub span()
Dim I0 As Variant
Dim T1 As Variant
Dim I1 As Variant
Dim T2 As Variant
Dim I2 As Variant
Dim A As Variant
Dim B As Variant
Dim C As Variant
Dim D As Variant
Dim G As Variant
G = Range("G5").Value - Range("C5").Value
Range("C5:C25").Value = I0
Range("D5:D25").Value = T1
Range("E5:E25").Value = I1
Range("F5:F25").Value = T2
Range("G5:G25").Value = I2
A = I2 - I0
B = T2 - I0
C = T2 - I1
D = T1 - I1 + G
Range("H5:H25").Value = Application.WorksheetFunction.Max(A, B, C, D)
End Sub
Для этого вам не нужен VBA, вы можете использовать формулы.
Range("C5:C25").Value = I0 означает, что вы пишете из переменной IO (значение=0) в Range. Вы не можете складывать и вычитать векторы в VBA.


У вас уже есть это, вы можете использовать rowsrow и columnscolumn из диапазона.
Диапазон может идти прямо в массив, который имеет индексированные значения, и Использование массива немного быстрее.
Sub aTest()
Dim r As Excel.Range
Dim a() As Variant
Set r = Range("a1:d20")
a = r.Value
For x = 1 To UBound(a)
For t = 1 To r.Columns.Count
Debug.Print "Row " & x & " Value " & t & " " & a(x, t)
Next t
Next x
End Sub
Спасибо. Теперь, вот так, если я установлю другую переменную b(y, w), смогу ли я вычесть a из b? Я пытался, но не смог этого сделать.
Таким образом, строка 1 столбец 4-строка 1 столбец 3 будет result=a(1, 4)-a(1, 3) вы можете использовать переменные и т. д. для чисел
C5:C25 — это строки 21.