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
Excel 如何分割逗号分隔的值?_Excel_Vba_Csv_Text Files_Delimiter Separated Values - Fatal编程技术网

Excel 如何分割逗号分隔的值?

Excel 如何分割逗号分隔的值?,excel,vba,csv,text-files,delimiter-separated-values,Excel,Vba,Csv,Text Files,Delimiter Separated Values,我有代码将多个文本文件导入Excel,每个文件位于一个新列中 每列中导入的值都是逗号分隔的,我想修改代码,将逗号分隔的值分隔到相邻的列中 Sub-LoopThroughTextFiles() '定义变量 将myPath设置为字符串 将myFile设置为字符串 Dim myExtension作为字符串 将文本变暗为字符串 将文本行变暗为字符串 Dim Result()作为字符串 将文本显示为字符串 暗淡如长 暗行数与长行数相同 '优化宏速度 Application.ScreenUpdating=F

我有代码将多个文本文件导入Excel,每个文件位于一个新列中

每列中导入的值都是逗号分隔的,我想修改代码,将逗号分隔的值分隔到相邻的列中

Sub-LoopThroughTextFiles()
'定义变量
将myPath设置为字符串
将myFile设置为字符串
Dim myExtension作为字符串
将文本变暗为字符串
将文本行变暗为字符串
Dim Result()作为字符串
将文本显示为字符串
暗淡如长
暗行数与长行数相同
'优化宏速度
Application.ScreenUpdating=False
Application.EnableEvents=False
'将LastCol定义为基于第1行的最后一列数据
LastCol=ActiveSheet.Cells(1,Columns.Count).End(xlToLeft).Column
'设置包含文本文件的文件夹
myPath=“C:\Users\ashra\u ua\OneDrive-Stichting Deltares\Desktop\Excel2”和“\”
'目标文件扩展名(必须包含通配符“*”)
myExtension=“*.txt”
'具有结束扩展名的目标路径
myFile=Dir(myPath&myExtension)
'循环浏览文件夹中的每个文本文件
当我的文件“”时执行此操作
'将变量“RowCount”设置为1
行数=1
'将变量“文本”设置为空
Text=“”
'将变量设置为等于打开的文本文件
打开myPath&myFile以作为#1输入
'直到文本文件的最后一行
直到EOF(1)为止
'将文本文件的每一行添加到变量“text”
行输入#1,文本行
Text=Textline
'使用变量“Text”的内容更新当前最后一列的RowCount行'
单元格(行数,最后一列)。值=文本
'将行数增加1
RowCount=RowCount+1
环
'关闭文本文件
关闭#1
"分裂结果",
结果=拆分(文本,“,”)
对于i=LBound(Result())到UBound(Result())
DisplayText=DisplayText&结果(i)
接下来我
'将LastCol增加1以说明新数据
LastCol=LastCol+2
'获取下一个文本文件名
myFile=Dir
环
重置设置:
'重置宏优化设置
Application.EnableEvents=True
Application.ScreenUpdating=True
'任务完成时的消息框
MsgBox“任务完成!”
端接头
这段代码导入所有文本文件,然后在我要用于分隔值的每一列旁边添加一个空白列


此外,在分离值之后,我想删除所有奇数列。

请尝试下一个简化循环。它应该执行您需要的操作,而无需删除任何列。循环后的任何内容都不能保留在代码中:

Do While myFile <> ""
    RowCount = 1
    Open myPath & myFile For Input As #1
        ' Do until the last line of the text file
        Do Until EOF(1)
            Line Input #1, Textline
            If UBound(Split(Textline, ",")) = 0 Then
                cells(RowCount, LastCol).Value = Textline
            Else
                cells(RowCount, LastCol).Value = Split(Textline, ",")(1)
            End If
            RowCount = RowCount + 1
        Loop
    Close #1

    LastCol = LastCol + 1
    myFile = Dir
Loop
Do While myFile“”
行数=1
打开myPath&myFile以作为#1输入
'直到文本文件的最后一行
直到EOF(1)为止
行输入#1,文本行
如果UBound(拆分(文本行,“,”))=0,则
单元格(RowCount,LastCol).Value=Textline
其他的
单元格(RowCount,LastCol).Value=Split(文本行,“,”)(1)
如果结束
RowCount=RowCount+1
环
关闭#1
LastCol=LastCol+1
myFile=Dir
环

您的文本文件是否只有一行?否则,
Result=Split(Text,”)
after
Close#1
将只处理最后一行文本。是否只针对学习范围?我看不出在您的代码中有任何用处。
DisplayText
)…没有。我的文本文件有很多行。您可以在第一个循环中看到一个RowCount=RowCount+1,它逐个读取并写入所有行。我想分离每列中的所有值。这不仅仅是为了学习。我只能从文本文件中提取特定数据。为此,我必须将它们全部导入excel,因为默认情况下,值是逗号分隔的,所以我希望将它们放入单独的列中,然后删除奇数列,因为它们在每个文本文件中都是相同的。我不需要它们。我可以看到
行数
,但它只能用于下一个要处理的文本文件。。。然后,必须在循环中拆分文本,并将结果数组直接放入
RowCount
行的单元格中。我不会将每个文本文件导入新行。每个文本文件都将导入到一个新列中。为此,正在使用LastCol=LastCol+2的循环。我理解这一点,但我认为您这样做是错误的。。。然后,如果您将每个文件导入到一个新列中,您最终想要完成什么?实际上,您要求支持删除一半或导入的文件(奇数列…)。每行中有多少项以逗号分隔?它在行单元格(RowCount,LastCol)中给出了一个错误。Value=Split(Textline,“,”)(1)我已向您发送了一个包含电子邮件中文本文件的文件夹。请您在自己的电脑上检查一下,并告诉我它是否适合您。你也可以看看我试图处理的文件。@Muhammad Usama Ashraf:最好的办法是你了解它的内容。。。因此,请尝试在有问题的行前面插入下一行:
Debug.print IsArray(Split(Textline,”)
。如果返回
True
,请尝试放置另一行:
Debug.print Split(Textline,”)(1)
。您的文本文件可能有空行(至少在末尾一行)如果是这样,我们必须修改代码来处理这种情况…@Muhammad Usama Ashraf:第一个文本文件(按字母顺序排列-'conc_1.000000_1.000000_10.txt')在前两行中有366后跟2。这种类型的记录会被保留吗?当然,对于这样一行,代码不能用逗号分割任何内容并返回一个错误。但好消息是,如果我们知道我们想要什么,我们可以跳过它…那么,该如何处理这些记录。如果