VBA에 비교적 익숙하지 않아서 단일 셀에 포함 된 CSV 정보를 구문 분석하여 특정 데이터를 스프레드 시트의 다른 셀로 반환하는 Sub를 작성했습니다. 그 비교적 간단한 코드지만 오류를 찾을 수 없습니다. 그것의 오류 13 불일치 라인에 Moods = Application.Index(fullArray, 0, 3)
어떤 도움을 주시면 대단히 감사하겠습니다.VBA 일치하지 않는 오류 13
Private Sub parseCSVTest()
'Parse "Notes" column and return Moods/Keywords to their apropriate cells
Dim CSV As String
CSV = ActiveSheet.Range("BL5")
Dim fullArray As Variant
fullArray = Split(CSV, Chr(10))
Dim Moods As Variant
Moods = Application.Index(fullArray, 0, 3)
Dim Keywords As Variant
Keywords = Application.Index(fullArray, 0, 2)
ActiveSheet.Range("CD5").Value = Moods
ActiveSheet.Range("CE5").Value = Keywords
End Sub
가 잘 작동 :
Private Sub parseCSV()
'Parse "Notes" column and return Moods/Keywords to their apropriate cells
Dim CSV As String
Dim fullArray As Variant
Dim lRow As Long
Dim Keywords As Variant
Dim Moods As Variant
Dim i As Long
lRow = ActiveSheet().Range("BL" & ActiveSheet().Rows.Count).End(xlUp).Row
For i = 3 To lRow
CSV = ActiveSheet.Range("BL" & i)
fullArray = Split(CSV, Chr(10))
Moods = Application.Index(fullArray, 0, 3)
Keywords = Application.Index(fullArray, 0, 2)
ActiveSheet.Range("CD" & i).Value = Moods
ActiveSheet.Range("CE" & i).Value = Keywords
Next i
End Sub
나는 아래의 구문 분석 기능을 테스트했다. 그래서 루프를 테스트했습니다.
Private Sub loopTest()
Dim i As Long
Dim lRow As Long
lRow = ActiveSheet().Range("BL" & ActiveSheet().Rows.Count).End(xlUp).Row
For i = 3 To lRow
ActiveSheet.Range("CD" & i).Value = "testing"
Next i
End Sub
잘 작동합니다. 나는 여기서 어디로 가야할지 모르겠다.
이 게임을 너무 빨리 호출합니다. 이 기능은 내 PC의 Excel 2007에서는 작동하지만 내 Mac의 Excel 2011에서는 작동하지 않습니다. 이것에 대한 아이디어. Excell 2011에서 'fullArray = Split (CSV, Chr (10))'문이 내 데이터를 파싱하지 않고 배열로 전달하는 것처럼 보입니다. 셀의 데이터가 "A (줄 바꿈) B (줄 바꿈) C"인 경우에만 A 배열이 내 배열로 전달되는 것 같습니다 . –
Mac/Office 2011에서 해결 된 유일한 줄 바꿈 참조 FullArray = Split (CSV, Chr (10))'을 fullArray ='Split (CSV, vbNewLine)'으로 변경하면 효과적입니다. –