我对VBA比较陌生,我写了一个Sub来解析单个单元格中包含的CSV信息,并将某些数据返回给电子表格中的其他单元格。它是一个相对简单的代码,但我找不到错误。这是一个错误的错误13 Moods = Application.Index(fullArray, 0, 3)
任何帮助将不胜感激。
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 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 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
工作正常。我不知道从哪里开始。
答案 0 :(得分:1)
在为其指定值之前,您正在使用 CSV 。
答案 1 :(得分:0)
我知道了。感谢所有人的帮助,这是一个大脑破坏者。出于某种原因
Moods = Application.Index(fullArray, 0, 3)
Keywords = Application.Index(fullArray, 0, 2)
指定整列时,不会返回值((0,0)= VBA数组中列中的所有行)。我只是将数组引用更改为(1,3)和(1,2)。完整的工作代码如下。这是我在网上发现的最简单的方法,用于解析单元格中的数据并对数组进行切片。感谢所有帮助过这一点的人。
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, 1, 2)
Keywords = Application.Index(fullArray, 1, 3)
ActiveSheet.Range("CE" & i).Value = Moods
ActiveSheet.Range("CD" & i).Value = Keywords
Next i
End Sub