Excel 读取单元格值&;工作簿中的整行&;循环多行

Excel 读取单元格值&;工作簿中的整行&;循环多行,excel,ms-access,vba,Excel,Ms Access,Vba,1.我希望能够从封闭工作簿中的单元格中读取值,并将其放入变量中,其中每个单元格的类型不同(即整数或字符等)。是否可以一次性读取整行,将其放入数组中,并在程序中使用 算法: 从关闭的excel文件读取->我想知道如何打开文件并读取单元格数据 需要从第一行的第1列到第200列读取整行,并需要按以下方式将其分配给变量,但要确保数据类型保持不变(即字符串应保持为字符串,整数保持为整数) 变量1等于(A1)的单元格值,其中A1是字符串 变量2等于(B1)的单元格值,其中B1为整数 变量3等于(c1)的单元

1.我希望能够从封闭工作簿中的单元格中读取值,并将其放入变量中,其中每个单元格的类型不同(即整数或字符等)。是否可以一次性读取整行,将其放入数组中,并在程序中使用

算法:

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

  • 需要从第一行的第1列到第200列读取整行,并需要按以下方式将其分配给变量,但要确保数据类型保持不变(即字符串应保持为字符串,整数保持为整数)

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

    最好的方法是什么

  • 我应该能够通过100行,并为相应的行和列执行步骤2


  • 你能建议第一步吗

    要打开工作簿,只需给出工作簿的地址并将其分配给一个新变量,然后对对象工作簿应用打开方法即可打开它:

    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行中进行迭代

    因此,您需要定义一个类似(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
    
    也可以通过代码关闭工作簿。但是,您需要将工作簿分配给一个对象,然后在该对象附近应用该方法。但我认为你不需要它


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

    步骤1

    要打开工作簿,只需给出工作簿的地址并将其分配给一个新变量,然后对对象工作簿应用打开方法即可打开它:

    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行中进行迭代

    因此,您需要定义一个类似(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
    
    也可以通过代码关闭工作簿。但是,您需要将工作簿分配给一个对象,然后在该对象附近应用该方法。但我认为你不需要它


    你的问题有点宽泛。但我希望我能帮你解决你的问题。

    嘿,基兰,非常感谢你提出的宝贵建议。这当然非常有用。我想缩小我的需求范围并使其更具体,基本上我只需要读取一行200个单元格,我想将每个单元格的值存储在一个唯一的变量中(每个单元格可能具有不同的数据类型)。我想对99行重复同样的事情。我将用于分配一行中的单元格1到200的变量将保持不变,只是这200个变量的值可以不断变化,即在循环中,变量的值将从第二行开始,依此类推,直到第99行。实现这一点的最佳方法是什么?基本上,一旦填充了变量1到变量200,我将进行一些计算&然后我不再需要这些值,我准备用下一组行填充这些变量1到变量200。不可能在一个数组中放入不同的数据类型。您可以这样做,但它会将所有数据视为变量类型,因此不能对数据进行计算。如果你知道你的专栏的顺序以及它们是如何排列的,你就有可能做点什么。但是你想做什么计算呢?对于200个不同数据类型的列,我能想象的唯一可能的计算是与字符串相关的东西。例如,连接所有200列。特里福