我必须每天下载媒体文件数据库并修改 csv 文件中的元数据,以便将 B 列中唯一的数字前缀作为后缀添加到 C 列中的单元格中。
有没有办法可以一次性对 C 列单元格名称中尚不包含后缀的所有单元格执行此操作?
目前,我能做到的唯一方法是将 _01 添加到第一个单元格的末尾(从 _01 开始)并将单元格向下拖动,以便它自动按升序填充其余数字(如下面的屏幕截图所示)。
我尝试在 Notepad++ 中打开该文件,看看是否有办法在那里执行此操作,但不幸的是,它不会以列的形式引入数据,而是以典型的记事本样式显示用逗号分隔的所有文本。我需要以 .csv 格式维护该文件,以便我可以将修改后的数据重新导入我们的媒体服务器。
做任何人知道有什么方法可以从 B 列中取出 XX_,并将其作为 _XX 添加到 C 列中没有它的单元格吗?我愿意在 Excel 以外的任何软件中尝试这种方法。我以前曾使用 notepad++ 来做这种事情,但从未用过 csv 文件,而且我不确定之后文档是否会正确格式化。
B 列:
16_9S0816YE556_GOPR0091_0S01
17_9S0816YE556_GOPR0091_1S01
18_9S0816YE556_GOPR0091_2S01
19_9S0816YE556_GOPR0091_3S01
01_9S0803SD006MN_C0001S01
02_9S0803SD006MN_C0002S01
03_9S0813ED095MN_8R7A3425S01
04_9S0813SD007MN_C0001S01
C 列:
9S0815GP174_16
9S0815GP174_17
9S0815GP174_18
9S0815GP174_19
9S0816GP175
9S0816GP175
9S0816GP175
9S0816GP175
C 列的期望最终结果(不影响前四个单元格):
9S0815GP174_16
9S0815GP174_17
9S0815GP174_18
9S0815GP174_19
9S0816GP175_01
9S0816GP175_02
9S0816GP175_03
9S0816GP175_04
谢谢。
答案1
使用 Notepad++,您可以执行以下操作:
- Ctrl+H
- 找什么:
^([^,]*,(\d\d)_[^,]*,[^,]*)(?<!_\d\d),
- 用。。。来代替:
$1_$2,
- 检查环绕
- 检查正则表达式
- Replace all
解释:
^ : beginning of line
( : start group 1
[^,]* : 0 or more non comma character
, : 1 comma
(\d\d) : group 2, 2 digits
_ : underscore
[^,]* : 0 or more non comma character
, : 1 comma
[^,]* : 0 or more non comma character
) : end group 1
(?<! : negative lookbehind, make sure we don't have before the comma
_\d\d : underscore and 2 digits
) : end lookbehind
, : a comma
给定示例的结果:
col_A,16_9S0816YE556_GOPR0091_0S01,9S0815GP174_16,col_D
col_A,17_9S0816YE556_GOPR0091_1S01,9S0815GP174_17,col_D
col_A,18_9S0816YE556_GOPR0091_2S01,9S0815GP174_18,col_D
col_A,19_9S0816YE556_GOPR0091_3S01,9S0815GP174_19,col_D
col_A,01_9S0803SD006MN_C0001S01,9S0816GP175_01,col_D
col_A,02_9S0803SD006MN_C0002S01,9S0816GP175_02,col_D
col_A,03_9S0813ED095MN_8R7A3425S01,9S0816GP175_03,col_D
col_A,04_9S0813SD007MN_C0001S01,9S0816GP175_04,col_D
答案2
如果你有 Excel 2016,请使用 Microsoft 的获取并转换 电动工具要获取具有正确列的新表格,请使用 。
(对于 Excel 2010-2013,请使用免费的 MS 插件Excel 的 Power Query。
您最终可以直接连接到源(csv 文件、数据库、Excel 文件等)并执行类似这样的转换(我保留了使用过的列,可以在将其加载到工作表之前通过额外的步骤将其删除):
这是 UI 生成的 M-Code。
let
Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
#"Changed Type" = Table.TransformColumnTypes(Source,{{"Column1", Int64.Type}, {"Column2", type text}, {"Column3", type text}}),
#"Add Col: Col2 Text before delimiter" = Table.AddColumn(#"Changed Type", "Col2 TextBeforeDelimiter", each Text.BeforeDelimiter([Column2], "_"), type text),
#"Add Col: Col3 Text after delimiter" = Table.AddColumn(#"Add Col: Col2 Text before delimiter", "Col3 TextAfterDelimiter", each Text.AfterDelimiter([Column3], "_"), type text),
#"Added Custom" = Table.AddColumn(#"Add Col: Col3 Text after delimiter", "Check Number", each [Col2 TextBeforeDelimiter] = [Col3 TextAfterDelimiter]),
#"Added Custom1" = Table.AddColumn(#"Added Custom", "Col3 Transformed", each if [Check Number] = true then [Column3] else [Column3] & "_" & [Col2 TextBeforeDelimiter])
in
#"Added Custom1"