Предполагая, что в вашем листе Excel есть следующие данные, начиная с позиции A1
для X
:
Если вы хотите разместить две таблицы в разных позициях, измените следующие переменные в макросе с новыми позициями: startRowNumX, startColNumX, startRowNumP, startColNumP
Обратите внимание, что matix заполнен 0 и 1, потому что вы не поместили данные для примера в свой пост
Вот способ достичь того, что вы хотите сделать с помощью макроса:
Sub TransitonProbabilityMatrix()
Dim startRowNumX, startColNumX, startRowNumP, startColNumP, sizeMatrix As Integer
startRowNumX = 1
startColNumX = 1
startRowNumP = 3
startColNumP = 1
sizeMatrix = startColNumX
While (Not IsEmpty(Cells(startRowNumX, sizeMatrix)))
sizeMatrix = sizeMatrix + 1
Wend
sizeMatrix = sizeMatrix - startColNumX
For i = startColNumX + 1 To startColNumX + sizeMatrix - 2
Cells(Cells(startRowNumX, i) + startRowNumP, Cells(startRowNumX, i + 1) + startColNumP) = Cells(Cells(startRowNumX, i) + startRowNumP, Cells(startRowNumX, i + 1) + startColNumP) + 1
Next
For i = startRowNumP + 1 To startRowNumP + sizeMatrix - 1
For j = startColNumP + 1 To startColNumP + sizeMatrix - 1
Cells(i, j) = Cells(i, j) / WorksheetFunction.Sum(ActiveSheet.Range(Cells(i, startColNumP + 1), Cells(i, startColNumP + sizeMatrix)))
Next
Next
End Sub
Этот Sub сначала ищет размер матрицы, а после применяет переход.