Чтение значения ячейки и всей строки из книги и цикл по нескольким строкам - PullRequest
0 голосов
/ 02 марта 2019

1. Я хочу иметь возможность читать значение из ячейки из закрытой рабочей книги и помещать его в переменную, в которой каждая ячейка имеет различный тип (т. Е. Целое число или символ и т. Д.). Также можно прочитатьвесь ряд одним выстрелом и поместить его в массив и использовать его в программе?

Алгоритм:

  1. Чтение из закрытого файла Excel -> Я хочу знать, как открыть файл и прочитать данные ячейки;

  2. Требуется прочитать всю строку от столбца 1 до столбца 200 строки Frist и необходимо назначить ее переменной нижеуказанным способом, но при этом необходимо сохранить тип данных (т. Е. Строка должна оставаться строкой и целым числом, чтобы оставаться целым числом)

    Переменная 1 равна значению ячейки (A1), где A1 - строка. Переменная 2 равна значению ячейки (B1), где B1 - целое число. Varaibale 3 равно значению ячейки (c1), где C1 - строка :::: Переменная 200 equlals значение ячейки (строка 1 столбец 200), где значение является строкой

    Каков наилучший способ сделать это.

  3. Я должен быть в состоянии через 100строки и выполните шаг 2 каждый раз для соответствующих строк и столбцов.

Не могли бы вы посоветовать

1 Ответ

0 голосов
/ 02 марта 2019

Шаг 1

Чтобы открыть книгу, вам нужно просто дать адрес вашей книги и присвоить его новой переменной, а также применить метод Open на объекте Рабочие книги вы можете открыть его:

Sub OpenWorkbook()
Dim FileName As String
'Assign the address of your file to the variable FileName
FileName = "\FileAddress\FileName.xlsx"
Workbooks.Open FileName
End Sub

До сих пор вы открыли нужную книгу Excel.

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

Sub OpenWorkbook()
Dim FileName As String
'Assign the address of your file to the variable FileName
FileName = "\FileAddress\FileName.xlsx"
Workbooks.Open FileName
Dim A1 As String
A1 = Workbooks("Excel File Name").Worksheets("Sheet Name").Range("A1")
Dim B1 As Integer
B1 = Workbooks("Excel File Name").Worksheets("Sheet Name").Range("B1")
Dim C1 As Integer
C1 = Workbooks("Excel File Name").Worksheets("Sheet Name").Range("C1")
'You continue until the column 200. If  there is some logic you can assign your similar variables by a for loop to an array.
End Sub

Шаг 3

Для вашей задачи вам нужно определить массивы.В противном случае вы не сможете решить эту проблему.Если вам нужно пройти 100 строк, вам нужно определить массив с размером 100 для каждого столбца.Массивы A (99) начинаются с A (0) до A (99), который имеет размерность 100. Например, для итерации в 3 столбцах по 100 строк вы можете написать:

Sub IterationInRows()
Dim A(99) As String, i As Integer
Dim B(99) As Integer
Dim C(99) As String
'Continue through all your variables
For i = 0 to 99
  A(i) = Workbooks("Excel File Name").Worksheets("Sheet Name").Ragne("A" & i+1)
  B(i) = Workbooks("Excel File Name").Worksheets("Sheet Name").Ragne("B" & i+1)
  C(i) = Workbooks("Excel File Name").Worksheets("Sheet Name").Ragne("C" & i+1)
Next i
End Sub

Я думаю, комбинируяЭти 3 шага вы можете решить вашу проблему.

Если в ваших столбцах есть логика, вы можете определить многомерные массивы и назначить все значения столбцов с аналогичным типом данных для этого массива.

Предположим, что нечетные столбцы (1, 3, 5, ..., 199) являются строками.Поэтому у вас есть 100 столбцов со строковым типом данных, и вы хотите выполнить итерацию в 100 строк.

Таким образом, вам нужно определить массив типа A (99,99), чтобы перебрать все из них, используя два вложенных цикла for.

Итак, вы пишете такой код:

Sub Iteration2()
Dim A(99,49) As String, i as integer, j as integer
For i = 0 to 99
  For j = 0 to 99
    A(i,j) = Workbooks("Excel File Name").Worksheets("Sheet Name").Cells(i+1,2*j+1)
  Next j
Next i 
End Sub

Можно также закрыть вашу книгу по коду.Однако вам необходимо назначить книгу для объекта, а затем применить метод, близкий к этому объекту.Но я думаю, что вам это не нужно.

Ваш вопрос был довольно широким.Но я надеюсь, что смогу помочь вам решить вашу проблему.

...