Я новичок в VBA и пытаюсь написать код VBA в Excel, который импортирует выходные данные CSV из моделирования в таблицу Excel и отображает данные в обычной XY-диаграмме разброса Excel.Я справился со всем, кроме конечного результата, т. Е. Данные были правильно импортированы из csv в excel, точки заменены запятыми в качестве десятичного разделителя, но он строит прямую горизонтальную линию с координатами 0 y ( Результирующий график ).Когда код запускается, я заметил, что значения в Excel хранятся в виде текстов, хотя я указал формат числового содержимого csv в виде чисел, как показано ниже:
DataSheet.Cells(Row, col).NumberFormat = "0.E+00"
Когда я тестирую Isnumeric(cell.value)
, этооказывается положительным.Но конечные значения в Excel все еще текстовые, и я не могу получить правильные графики.Что мне здесь не хватает?И советы / помощь очень ценится.Большое спасибо.
Вот мой полный код:
CsvFile = Application.GetOpenFilename()
Set DataSheet = Worksheets("CSV_Plot")
nrow = 10 'data starts at 10th row
Open CsvFile For Input As #1
Do Until EOF(1)
Line Input #1, CsvLine
CsvItem = Split(CsvLine, ",")
If Not CsvItem(0) <> "" Then GoTo 10 'ignores first line
ncol = UBound(CsvItem) 'ncol = number of data columns
If IsNumeric(CsvItem(0)) Then
For i = 0 To ncol
CsvItem(i) = Replace(CsvItem(i), ".", ",") 'replace point with comma in 'numerical values
Next i
End If
Add1 = DataSheet.Cells(nrow, LBound(CsvItem) + 1).Address
Add2 = DataSheet.Cells(nrow, ncol + 1).Address
DataSheet.Range(Add1 & ":" & Add2) = CsvItem
nrow = nrow + 1
10:
Loop
nrowlast = nrow
Close #1
For Row = 11 To nrowlast
For col = 1 To ncol
DataSheet.Cells(Row, col).Select
DataSheet.Cells(Row, col).NumberFormat = "0.E+00"
Next col
Next Row
Set ChtObj = DataSheet.ChartObjects.Add(50, 50, 500, 300)
Set Cht = ChtObj.Chart
With Cht
.ChartType = xlXYScatterLines
.SeriesCollection.NewSeries
.SeriesCollection(1).XValues = DataSheet.Range("A11:A35")
.SeriesCollection(1).Values = DataSheet.Range("N11:N35")
End With