excel - 如何绘制从 csv 导入的数据?
问题描述
我正在尝试将模拟中的 CSV 输出数据导入 Excel 工作表,以在常规 XY 散点图中绘制数据。
除了最终结果,我管理了一切。数据从 csv 导入 Excel,点被逗号替换为小数分隔符。
我注意到 Excel 中的值存储为文本,尽管我将 csv 的数字内容的格式指定为如下数字:
DataSheet.Cells(Row, col).NumberFormat = "0.E+00"
当我测试Isnumeric(cell.value)
时,结果是正面的。
我的完整代码:
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
解决方案
经过一番努力,我找到了问题的根源:我已经定义CsvItem()
为字符串,这就是为什么当我执行语句时DataSheet.Range(Add1 & ":" & Add2) = CsvItem
,excel中的值始终是文本,而与格式无关。
解决方案是定义一个变量来保存 CsvItem 的数值并将该值分配给 excel 单元格:
Dim CsvVal() As Double
CsvVal(i) = CDbl(CsvItem(i))
DataSheet.Range(Add1 & ":" & Add2).Value = CsvVal
这最终产生了我想要的结果。
推荐阅读
- mobile - 如何发出经过身份验证的 http 请求并返回带有 dart 的对象流?
- amazon-sagemaker - 在 sagemaker 中查看目录和文件夹
- javascript - ExtJs 中网格中的动态列
- azure - 如何在 2 个 U-SQL 脚本之间传递变量
- python - 检查文件是否已存在于特定文件夹中
- postgresql - postgreSQL 中不存在函数.. 为什么?
- asp.net - InvalidOperationException:无法解析类型“Microsoft.EntityFrameworkCore.DbContextOptions`1 的服务”
- tensorflow - 使用经过训练的 cnn 作为测试数据
- android - 内存分析器 - 高级分析不可用
- php - Softaculous Ampps 3.8 Apache not starting if i change PHP version to 7.1