请问我如何对列进行分组并在Emeditor中总结它们的相应值?类似于 Power Query 或 PowerBi 中的“分组依据”。例如:
文件
NAME COST
John 5
Mike 3
Dan 5
John 2
Dan 8
John 5
预期结果
NAME COST
John 12
Mike 3
Dan 13
在这种情况下,我在文件的“名称列”下获得每个值的总成本
假设两列由制表符分隔,您可以使用 EmEditor 对第一列进行排序,合并行,然后使用带有 JavaScript 的正则表达式替换第二列。如果您想快速完成,可以跳到使用宏部分。
打开你的文件。
单击CSV/排序工具栏上的Tab按钮以切换到 Tab 分隔的 CSV 模式。
单击CSV/排序工具栏上的标题按钮,然后选择标题 1。
选择第一列,然后单击CSV/排序工具栏上的从A 到 Z排序按钮对第一列进行排序。
右键单击标题的第 1 列(或选择编辑菜单上的CSV子菜单),然后选择组合行。
确保检查重复1: COST
的列中的复选框已设置,并且要组合的列中的复选框已设置。输入要插入的字符串文本框。单击确定。2: NAME
+
[\d\+]+\d
到查找文本框,然后\J eval("\0");
到替换为文本框,设置在仅选择和正则表达式选项中,然后单击全部替换。使用宏
如果要使用宏,可以在打开文件后运行以下宏。
editor.ExecuteCommandByID(22529); // TSV
editor.ExecuteCommandByID(3894); // Heading 1
document.selection.StartOfDocument(false);
document.Sort("1>A+",eeSortBinaryComparison,"");
document.CombineLines("1","2","+","",0,"");
document.selection.SetActivePoint( eePosCellLogical, 2, 1 );
editor.ExecuteCommandByID(4461); // Select Column
document.selection.Replace("[\\d\\+]+\\d","\\J eval(\"\\0\");",eeFindReplaceSelOnly | eeReplaceAll | eeFindReplaceRegExp,0);
document.selection.Collapse();
要运行它,请将此代码另存为,例如,GroupCol.jsee
然后从宏菜单中的选择...中选择此文件。最后,打开要转换的文件,并在要转换的文件处于活动状态时选择宏菜单中的运行 GroupCol.jsee 。