VBA의 배열과 EXCEL의 range 상호 전도 데이터

2978 단어 VBA

 

1 VBA에서 배열을 정의한 후 EXCEL로 가져오기


Rem 배열 가져오기 excelREM이 1차원 데이터로 가져오면 1차원 그룹이 가로인 것을 주의해야 한다
REM에서 2차원 데이터를 가져오면 문제가 없습니다.
Rem 만약에 1차원 그룹을 세로 EXCEL 칸으로 가져오려면 1차원 그룹에 대해transpose를 해야 한다
Rem 주의해야 할 것은, 고정수 그룹arr(3)는 사실 기본적으로arr(0 to 3)는 4개의 원소이다
 
Sub test003()

Dim arr1(3)   ' , 4 , 1  
arr1(1) = 1
arr1(2) = 2
arr1(3) = 3


Range("a7:c7") = arr1    ' 1 , 1 
Debug.Print "a7=" & Range("a7")
Debug.Print "b7=" & Range("b7")
Debug.Print "c7=" & Range("c7")
Debug.Print vbCrLf


Range("b8:b11") = arr1   ' , 
Debug.Print "b8=" & Range("b8")
Debug.Print "b9=" & Range("b9")
Debug.Print "b10=" & Range("b10")
Debug.Print "b11=" & Range("b11")
Debug.Print vbCrLf


Range("a8:a11") = Application.Transpose(arr1)
Debug.Print "a8=" & Range("a8")
Debug.Print "a9=" & Range("a9")
Debug.Print "a10=" & Range("a10")
Debug.Print "a11=" & Range("a11")

End Sub

 

2 EXCEL에서 배열로 가져오기


일반적으로 excel에서 직접 꺼낸 수조는 모두 2차원 수조이고,
특열 만약에 단열 데이터가transpose에 의해 전치된 후 차원 1 줄 뒤에 1차원 그룹으로
 
Sub test002()
arr1 = Range("a1:c3")
arr2 = Range("a1:a3")
arr3 = Application.Transpose(Range("a1:a3"))


Rem  EXCEL 1 2 
For i = 1 To 3
   Debug.Print "arr1(" & "1," & i & ")=" & arr1(1, i)
Next i


Rem  EXCEL 1 2 
For i = 1 To 3
   Debug.Print "arr2(" & i & ",1" & ")=" & arr2(i, 1)
Next i

Rem  EXCEL + , 1 
For i = 1 To 3
   Debug.Print "arr3(" & i & ")=" & arr3(i)
Next i



 

3 EXCEL의 진짜 1차원 데이터와 2차원 데이터,transpose와 결합된 테스트

  • 2차원 수조 전치 또는 2차원
  • 1행 또는 1열range 데이터가transpose가 1차원 그룹일 수 있음
  • Sub test4()
    arr1 = Range("a1:c3")
    arr2 = Application.Transpose(arr1)
    arr3 = Range("a1:a3")
    arr4 = Application.Transpose(arr3)
    arr5 = Range("a1:c1")
    arr6 = Application.Transpose(arr5)
    
    
    Rem EXCEL 
    Rem EXCEL 1 , 1 1 
    Rem EXCEL 1 , 1 , 1 1 。 2 
    
    
    For i = 1 To 3
       For j = 1 To 3
          Debug.Print arr1(i, j)
       Next j
    Next i
    Debug.Print vbCrLf
    
    For i = 1 To 3
       For j = 1 To 3
          Debug.Print arr2(i, j)
       Next j
    Next i
    Debug.Print vbCrLf
    
    For i = 1 To 3
       Debug.Print (arr3(i, 1))
    Next i
    Debug.Print vbCrLf
    
    For i = 1 To 3
       Debug.Print (arr4(i))
    Next i
    Debug.Print vbCrLf
    
    
    For i = 1 To 3
       Debug.Print (arr5(1, i))
    Next i
    Debug.Print vbCrLf
    
    For i = 1 To 3
       Debug.Print (arr6(i, 1))
    Next i
    Debug.Print vbCrLf
    
    End Sub
    
    
    

     

    4 1행이나 1열 EXCEL의range 데이터를 1차원 그룹으로 바꾸고 싶다면?1회 또는 2회 전환


    application.transpose
     
     

    좋은 웹페이지 즐겨찾기