0

Я хочу читать и хранить значения из матрицы 4 * 4 (2-мерный массив) и использовать ее в моей дальнейшей программе. Я говорю о VBA для Excel. Данные находятся в листе Excel, и я хочу прочитать его через VBA. Я новичок в этом, но быстро учился. Пожалуйста, помогите мне это сделать.как читать матрицу в excel vba?

это мои данные в листе

б 6 8 7

с 3 6 9

это то, что я хочу сделать

в 0 2 7 13

b 0 6 14 21

c 0 3 9 18

Мне нужно прочитать матрицу 3 * 3 из листа и преобразовать ее в накопительную матрицу, как показано. (добавьте предыдущее число и продолжайте).

В основном я имитирую цепь Маркова и должен подсчитывать, сколько раз человек проходит через каждый этап. Sub Пример 7()

Dim A As Double, B As Double, C As Double, PC(4, 4) As Double, row As Double, maxrwo As Double, col As Double, maxcol As Double 

Range("o5").Activate 

For i = 1 To 4 
For j = 1 To 4 
PC(i, j) = ActiveCell.Value 

ActiveCell.Offset(0, 1).Select 

Next j 

ActiveCell.Offset(1, -4).Select 
Next i 

Range("T4") = PC(2, 4) 

End Sub 
+0

Добро пожаловать в Stackoverflow! Не могли бы вы рассказать о своем задаче, например, о коде или о чем-то, чтобы люди могли быстро решить вашу проблему и помочь вам? Благодаря! – manetsus

+1

Довольно легко получить двумерный массив от диапазона до переменной VBA. Например, если 'A' объявлен как тип' Variant', а данные находятся в диапазоне A1: D4, тогда строка 'A = Range (« A1: D4 »). Значение' передаст данные в 'A'. –

ответ

1

Если вы хотите обработать значения в диапазоне вам не нужно хранить их в массиве первый. Вы можете прокручивать каждую ячейку диапазона, используя код, аналогичный приведенному ниже:

Sub LoopThroughRange() 

Dim currentCell As Range 
Dim desiredRange As Range 
Dim outputCell As Range 
Dim total As Double 

Set outputCell = Range("A6") 
Set desiredRange = Range("Sheet1!A1:D4") 

'This will add the values of each cell in the range and output the total to cell A6 
For Each currentCell In desiredRange 

    total = total + currentCell.Value 

Next currentCell 

outputCell.Value = total 

End Sub