首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Vbscript将excel中的excel列数据拆分为2列

Vbscript将excel中的excel列数据拆分为2列
EN

Stack Overflow用户
提问于 2015-07-01 11:54:30
回答 3查看 1.6K关注 0票数 0

我试图将excel表中的数据拆分,如下所示:

代码语言:javascript
复制
|a a    1|
|b b    2|
|c c    3|
|d d d  4|

代码语言:javascript
复制
|a a| 1|
|b b| 2|
|c c| 3|
|d d d| 4|

我观察到一种模式,例如,如果在任何特定单元格(或行)的字符之间有多个空格,则应该将它们分割为单独的列。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-07-01 18:48:39

我将使用正则表达式将连续两个或更多空格的序列替换为制表符,然后使用TextToColumns方法将列拆分为两部分:

代码语言:javascript
复制
Set xl = CreateObject("Excel.Application")
xl.Visible = True

Set wb = xl.Workbooks.Open("C:\path\to\your.xlsx")
Set ws = wb.Sheets(1)

Set re = New RegExp
re.Pattern = "  +"

For Each cell In ws.UsedRange
  cell.Value = re.Replace(cell.Value, vbTab)
Next

ws.UsedRange.TextToColumns
票数 1
EN

Stack Overflow用户

发布于 2015-07-01 12:15:17

使用查找的RegExp

  1. 一个非贪婪的序列
  2. 在非空的空格序列之前
  3. 后面跟着数字

如:

代码语言:javascript
复制
Option Explicit

Function qq(s) : qq = """" & s & """" : End Function

Dim r : Set r = New RegExp
r.Pattern = "^(.+?)\s+(\d+)$"
Dim s, m
For Each s In Split("a a    1|d d d  4", "|")
    Set m = r.Execute(s)(0)
    WScript.Echo qq(m.Submatches(0)), qq(m.Submatches(1))
Next

产出:

代码语言:javascript
复制
cscript 31160562.vbs
"a a" "1"
"d d d" "4"
票数 1
EN

Stack Overflow用户

发布于 2015-07-01 14:46:21

您可以编写一个基于空格使用拆分函数的函数,

下面是代码片段,它感觉对你很有用。

代码语言:javascript
复制
    Dim arrVar
    strCelldata = Worksheets("Sheet1").Cells(1, 1)
    arrVar = Split(strCelldata, "  ")
    j = 2
    For Each arrVal In arrVar
        If Trim(arrVal) <> "" Then
            Worksheets("Sheet1").Cells(1, j) = arrVal
            j = j + 1
        End If
    Next

您可能需要再添加一个for循环,以遍历excel表上的所有可用数据。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31160562

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档