Sub ProcessMatrixFromFile()
Dim fso As Object
Dim ts As Object
Dim filePath As Variant
Dim content As String
Dim dataArr As Variant
Dim i As Integer, j As Integer
Dim maxVal As Double
Dim matrix(1 To 5, 1 To 5) As Double
' 1. Выбор файла через диалоговое окно
filePath = Application.GetOpenFilename("Text Files (*.txt), *.txt")
If filePath = False Then Exit Sub
' 2. Чтение файла
Set fso = CreateObject("Scripting.FileSystemObject")
Set ts = fso.OpenTextFile(filePath, 1)
content = ts.ReadAll
ts.Close
' Заменяем переносы строк на пробелы и разбиваем строку в массив
' (предполагаем, что числа разделены пробелами или переносами строк)
content = Replace(content, vbCrLf, " ")
content = Replace(content, vbCr, " ")
content = Replace(content, vbLf, " ")
dataArr = Split(WorksheetFunction.Trim(content), " ")
' Проверка количества чисел
If UBound(dataArr) < 24 Then
MsgBox "В файле меньше 25 чисел!", vbCritical
Exit Sub
End If
' 3. Заполнение матрицы 5х5 на листе Excel (начиная с ячейки A1)
For i = 1 To 5
For j = 1 To 5
matrix(i, j) = CDbl(dataArr((i - 1) * 5 + (j - 1)))
Cells(i, j).Value = matrix(i, j)
Next j
Next i
' 4. Поиск максимума в 1-м столбце
maxVal = matrix(1, 1)
For i = 1 To 5
If matrix(i, 1) > maxVal Then
maxVal = matrix(i, 1)
End If
Next i
' Вывод результата
MsgBox "Матрица заполнена." & vbCrLf & "Максимальное число в 1-м столбце: " & maxVal, vbInformation
End Sub