Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/24.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
Vba 使用修改后的数据从列表转换为平面CSV_Vba_Excel_Excel Formula - Fatal编程技术网

Vba 使用修改后的数据从列表转换为平面CSV

Vba 使用修改后的数据从列表转换为平面CSV,vba,excel,excel-formula,Vba,Excel,Excel Formula,我有爱尔兰/苏格兰氏族的名字列表,我需要将其转换为搜索模块使用的格式。问题是: O'Quinn Antrim Quillan Antrim Quin Antrim Quinn Antrim Alinden Armagh Baron Armagh Barron Armagh Branagan Armagh Calan Armagh 我有一个名称列表(15个文件中有100k+个,有2-10k行),我想将其转换

我有爱尔兰/苏格兰氏族的名字列表,我需要将其转换为搜索模块使用的格式。问题是:

O'Quinn     Antrim
Quillan     Antrim
Quin        Antrim
Quinn       Antrim
Alinden     Armagh
Baron       Armagh
Barron      Armagh
Branagan    Armagh
Calan       Armagh
我有一个名称列表(15个文件中有100k+个,有2-10k行),我想将其转换为一种可行的样式。我希望看到他们这样:

Antrim:O'Quinn, Quillan, Quin, Quinn, 
Armagh:Alinden, Baron, Barron, Branagan, Calan

有人知道如何在没有大量人工干预的情况下实现这一目标吗?

分为三部分,假设
O'Quinn
在A2中:

创建字符串

在C2中:

=IF(B1<>B2,B2&": "&A2,C1&", "&A2)  
=IF(B1B2,B2&“:”&A2,C1&“,”&A2)
识别相关的

在D2中:

=B2<>B3  
=B2B3
整理

将C2:D2复制到合适的位置。
选择工作表、复制、粘贴特殊值。
筛选列D以选择
FALSE
并删除所有可见的列D和A。

对其他14个文件重复上述操作。

我在另一个回答中使用了类似的内容:(编辑:修复了一些小错误和更新的语法)测试正常

前代码:

Sub-RemoveDups()
Dim CurRow为长、LastRow为长、LastCol为长、DestLast为长、DestRng为范围、ws为工作表
设置ws=ActiveSheet
LastRow=ws.Range(“A”&Rows.Count).End(xlUp).Row
对于CurRow=LastRow至3步骤-1
设置destng=ws.Range(“B1:B”和CurRow-1)。查找(ws.Range(“B”和CurRow)。值,LookIn:=xlValues,LookAt:=xlother,SearchDirection:=xlNext)
如果destrong什么都不是,那么
“什么也不做
其他的
DestLast=ws.Cells(destng.Row,Columns.Count)。End(xlToLeft)。Column+1
ws.Cells(destng.Row,DestLast).Value=ws.Cells(CurRow,1).Value
ws.Cells(CurRow,1).EntireRow.Delete xlShiftUp
如果结束
下个星期
ws.Columns(“B:B”).Cut
ws.Columns(“A:A”)。插入移位:=xlToRight
Application.CutCopyMode=False
端接头
代码后:

这需要某种脚本。就我个人而言,我会在node.js中编写一个脚本来处理这些文件。我不知道如何在Excel中直接执行此操作。我尝试使用=subsuite并尝试使用,我还尝试在一行中执行“A1”、“A2”、“A3”。问题是有这么多,我希望有一个更简单的方法来解决这个问题,而不必做很多手工,因为有这么多。我不知道excel的脚本编写。另一个Q在寻找一个不同的解决方案(),我用上面的VBA部分解决了这个问题。这意味着O.P.是剽窃还是我剽窃?你能剽窃自己吗-他工作得像个冠军!非常感谢。对于非代码解决方案,再加上一个。在谈到Excel时经常被忽略。是的。我是说这里。任何程序员的下意识反应都是最终破坏IDE。。。