Загрузка данных


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