将分隔的条目拆分为Access中的新行

Kev*_*loy 3 sql ms-access vba delimiter access-vba

所以有人给了我一个订单电子表格,每个订单的唯一价值是PO,给我电子表格的人是懒惰的,并决定订单有多个PO,但相同的信息他们只是用"/"分隔它们.所以例如我的表看起来像这样

PO             Vendor   State
123456/234567  Bob      KY
345678         Joe      GA
123432/123456  Sue      CA
234234         Mike     CA
Run Code Online (Sandbox Code Playgroud)

我希望用"/"符号作为分隔符将PO分开,所以它看起来像这样.

    PO         Vendor   State
123456         Bob      KY
234567         Bob      KY
345678         Joe      GA
123432         Sue      CA
123456         Sue      CA
234234         Mike     CA
Run Code Online (Sandbox Code Playgroud)

现在我一直在集思广益,通过几种方式解决这个问题.最终我想要Access中的这些数据.原始格式的数据在Excel中.我想要做的是在Access中编写一个vba函数,我可以将其与SQL语句结合使用来分隔值.我现在正在努力,因为我不知道从哪里开始.

Chr*_*ton 5

关于这个:

1)将源数据导入名为SourceData的新Access表中.

2)创建一个新查询,直接进入SQL视图并添加以下代码:

SELECT * INTO ImportedData
FROM (
  SELECT PO, Vendor, State
  FROM SourceData
  WHERE InStr(PO, '/') = 0
  UNION ALL
  SELECT Left(PO, InStr(PO, '/') - 1), Vendor, State
  FROM SourceData
  WHERE InStr(PO, '/') > 0
  UNION ALL
  SELECT Mid(PO, InStr(PO, '/') + 1), Vendor, State
  FROM SourceData
  WHERE InStr(PO, '/') > 0) AS CleanedUp;
Run Code Online (Sandbox Code Playgroud)

这是Access术语中的'make table'查询(尽管有嵌套的联合查询); 对于'追加'查询,改为将前两行改为

INSERT INTO ImportedData
SELECT * FROM (
Run Code Online (Sandbox Code Playgroud)

(其余部分不会改变.)不同之处在于重新运行make表查询将清除目标表中已有的内容,而追加查询将添加到任何现有数据.

3)运行查询.