从工作簿中读取单元格值和整行并遍历多行

时间:2019-03-02 10:37:55

标签: excel vba ms-access access-vba

1。我希望能够从一个封闭的工作簿中的一个单元中读取一个值,并将其放置在一个变量中,每个单元中的变量具有不同的类型(即整数或字符等)。也可以读取一个将整个行一次拍摄并放置在数组中并在程序中使用它?

算法:

  1. 从已关闭的excel文件中读取->我想知道如何打开文件并读取单元格数据;

  2. 需要从Frist行的第1列到第200列读取整行,并需要以以下方式将其分配给变量,但要确保保持数据类型(即string应该保持string&integer保持不变作为整数)

    变量1等于(A1)的像元值,其中A1是字符串 变量2等于(B1)的像元值,其中B1是整数 变量3等于(c1)的像元值,其中C1是字符串 :: :: 变量200等于(第1行200列)的单元格值,其中值是字符串

    执行此操作的最佳方法是什么。

  3. 我应该能够遍历100行,并且每次都对相应的行和列执行步骤2。

能否请您告知

1 个答案:

答案 0 :(得分:0)

第1步

要打开工作簿,您只需提供工作簿的地址并将其分配给新变量,然后对对象 Workbooks 应用 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

我认为将这三个步骤结合起来可以解决您的问题。

如果列安排中存在逻辑,则可以定义多维数组,并将具有相似数据类型的列的所有值分配给该数组。

假设奇数列(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

也可以通过代码关闭工作簿。但是,您需要将工作簿分配给一个对象,然后在该对象附近应用该方法。但我认为您不需要它。

您的问题有点广泛。但我希望我能帮助您解决问题。