Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 从CSV组织数据_Excel_Vba - Fatal编程技术网

Excel 从CSV组织数据

Excel 从CSV组织数据,excel,vba,Excel,Vba,我有这个csv文件,我想组织成一个结构。我正在测量一些表面,每个表面下都有部分,每个部分下都有一些管路。我想从第一个曲面提取每个元素,直到下一个曲面,依此类推,直到数据根据数据中出现的曲面数进行分组。我想写一个通用代码来解析将要进行的测量的数据。现在,我的曲面代码只能存储每个曲面下的最后一个元素,并告诉我“下标超出范围。我正在堆叠,需要帮助。以下是到目前为止的数据和代码。谢谢 SURFACE SECTION RUN -0.07764007 0.07762 42 0.07801 -0.077478

我有这个csv文件,我想组织成一个结构。我正在测量一些表面,每个表面下都有部分,每个部分下都有一些管路。我想从第一个曲面提取每个元素,直到下一个曲面,依此类推,直到数据根据数据中出现的曲面数进行分组。我想写一个通用代码来解析将要进行的测量的数据。现在,我的曲面代码只能存储每个曲面下的最后一个元素,并告诉我“下标超出范围。我正在堆叠,需要帮助。以下是到目前为止的数据和代码。谢谢

SURFACE
SECTION
RUN
-0.07764007
0.07762
42
0.07801
-0.07747896
0.07744
-0.07753022
0.07759
-0.07729586
0.07747
-0.07753753
0.07741
-0.07742768
RUN
-0.077435
0.07747
-0.07757416
0.07726
-0.07761077
0.07756
-0.07750092
-57
-0.07712009
0.07771
-0.07769133
0.07769
-0.07713472
0.07733
-0.07726657
0.0774
-0.07731783
0.07743
-0.07754486
0.07752
-0.07755219
0.07745
-0.07723726
SECTION
RUN
-0.07785247
0.07765
-0.07742036
-0.0776
-0.07742036
0.07747
-0.07729586
0.07741
-0.07744966
0.07724
-0.07753753
0.0773
-0.07747896
0.07759
-0.07746429
0.07771
SURFACE
SECTION
RUN
-0.07753753
0.07786
-0.07729586
0.07743
-0.07762542
0.07763
-0.07723726
0.07735
-0.077955
-71
-0.07681249
0.07727
-0.0775229
0.07733
-0.07747896
0.07738
-0.07714205
0.07746
-0.07737642
0.07744
-0.07761809
0.07727
-0.07755951
0.07754
-0.07792571
代码

子报告()
将文件路径设置为字符串,将LineFromFile设置为变量,将LineItems设置为变量
Dim SURF()作为变量
将曲面变暗为字符串、截面变暗为字符串、梯段变暗为字符串
Dim DATA()作为变量,counter_surf作为Long,counter_sect作为Long
Dim Snumbs()作为变量,j作为长,S作为整数,i作为长,q作为长
暗n长,m长,计数器长
Dim Endoffileflag为布尔值,errorflag为布尔值
surface=“surface”
Section=“Section”
run=“run”
计数器=0
计数器\u surf=0
计数器_sect=0
计数器运行=0
Endoffileflag=False
errorflag=False
FilePath=Application.GetOpenFilename(“Cvv文件(*.csv),*.csv”)
将输入文件路径打开为#1
直到EOF(1)为止
行输入#1,LineFromFile
LineItems=Split(LineFromFile,“”)
对于i=LBound(行项目)到UBound(行项目)
ReDim保留数据(i)
数据(i)=Mid(行项目(i)、2、Len(行项目(i))-2)
如果数据(i)曲面和数据(i)截面以及数据(i)运行,则
数据(i)=CDbl(数据(i))
如果结束
ActiveCell.Offset(i).Value=DATA(i)
接下来我
环
'对于j=LBound(数据)到UBound(数据)
做
如果数据(计数器)=曲面,则
ReDim保留冲浪(反冲浪)
'如果数据(j+1)曲面,则
做
冲浪(计数器)=数据(计数器)
计数器=计数器+1
循环直到数据(计数器)=曲面,计数器=UBound(数据)
“下一个j
关闭#1
端接头

错误发生在哪里?错误发生在第一个do-until循环的末尾。我想分析从第一个到在数据中找到另一个曲面的数据。谢谢
 Sub report()

 Dim FilePath As String, LineFromFile As Variant, LineItems As Variant
 Dim SURF() As Variant

 Dim surface As String, Section As String, run As String
 Dim DATA() As Variant, counter_surf  As Long, counter_sect As Long   
 Dim Snumbs() As Variant, j As Long, S As Integer, i As Long, q As Long
 Dim n As Long, m As Long, counter As Long
 Dim Endoffileflag As Boolean, errorflag As Boolean



surface = "SURFACE"
Section = "SECTION"
run = "RUN"
counter = 0
counter_surf = 0
counter_sect = 0
counter_run = 0
Endoffileflag = False
errorflag = False

FilePath = Application.GetOpenFilename("Cvv Files (*.csv), *.csv")


Open FilePath For Input As #1

Do Until EOF(1)
Line Input #1, LineFromFile

LineItems = Split(LineFromFile, ",")




For i = LBound(LineItems) To UBound(LineItems)


ReDim Preserve DATA(i)

DATA(i) = Mid(LineItems(i), 2, Len(LineItems(i)) - 2)

If DATA(i) <> surface And DATA(i) <> Section And DATA(i) <> run Then
DATA(i) = CDbl(DATA(i))
End If
ActiveCell.Offset(i).Value = DATA(i)
Next i

Loop

'For j = LBound(DATA) To UBound(DATA)
 Do

If DATA(counter) = surface Then
ReDim Preserve SURF(counter_surf)
'If DATA(j + 1) <> surface Then
 Do

  SURF(counter_surf) = DATA(counter)
  counter = counter + 1
 Loop Until DATA(counter) = surface And counter <= UBound(DATA)
 'End If
    'counter = counter + 1

 End If
 counter_surf = counter_surf + 1
Loop Until counter >= UBound(DATA)
'Next j
Close #1
End Sub