Google 脚本 - 重新替换、转置和拆分数据
Google Scripts - Regreplace, Transpose and split Data
我有一个 google sheet 用来记录销售数据。我将我的原始数据粘贴到SheetA!A1
中,原始数据包含文本、数字和'unusable'字符,它们在拆分公式中用于定义列。
然后我使用转置脚本将此数据拉到 sheet B,水平粘贴数据 +1 最后一行。
我的问题是,拆分数据时,我的定义字符是 ]
或 [
-
这很有效,但是,销售中记录的项目不会从数量中拆分 - 它仍然如下 Item xQuantity#
。如果我将分隔符更改为 #x
,这会导致脚本拆分包含字母 x 的文本,并执行将 "Item xQuantity" 拆分为 "Item, Quantity"
的所需功能
任何建议都会有所帮助!
需要将数据提炼成只读的值,然后归档到二级sheet
应要求,这里是一些数据样本:
这被粘贴到 SheetA!A1:
Total price ,864,910. Breakdown per item: [Bag of Chocolate Kisses x200 @ 450 = 90,000] [Box of Tissues x1 @ 300 = 300] [Jacket x66 @ 200 = 13,200]
上述数据可以是单个单元格中的 1 行文本到 100 多行文本。
然后我使用下面的公式来删除不需要的字符,并分成所需的列:
=SPLIT( REGEXREPLACE(Front!A3,"^A-Za-z+]. Breakdown per item:, x#"," "),"[]@=")
我目前正在使用它来将数据拉入存档 sheet,完善后:
function CaptureData() {
var ss = SpreadsheetApp.getActiveSpreadsheet ();
var source = ss.getRange ("Back!8:8");
var destSheet = ss.getSheetByName("Data");
var destRange = destSheet.getRange(destSheet.getLastRow()+1,1);
source.copyTo (destRange, {contentsOnly: true});
}
下图是存档 Sheet,具有所需的输出 - 请注意,屏幕截图当前显示的是我遇到的问题。
Archive Sheet
解决方案
由于您的项目数量指标是小写字母 x
在空白 space 之后并且您始终以大写开头每个项目命名 X
您可以嵌套另一个REGREPLACE
将 [blank space] x
替换为您设置为拆分字符串的字符之一。以下公式按照您的意图执行:
=SPLIT( REGEXREPLACE(REGEXREPLACE(A1,"Breakdown per item:"," "), " x", "@"),"[]@=")
希望对您有所帮助。让我知道您是否需要其他任何东西或者您不明白什么。 :)
我有一个 google sheet 用来记录销售数据。我将我的原始数据粘贴到SheetA!A1
中,原始数据包含文本、数字和'unusable'字符,它们在拆分公式中用于定义列。
然后我使用转置脚本将此数据拉到 sheet B,水平粘贴数据 +1 最后一行。
我的问题是,拆分数据时,我的定义字符是 ]
或 [
-
这很有效,但是,销售中记录的项目不会从数量中拆分 - 它仍然如下 Item xQuantity#
。如果我将分隔符更改为 #x
,这会导致脚本拆分包含字母 x 的文本,并执行将 "Item xQuantity" 拆分为 "Item, Quantity"
任何建议都会有所帮助!
需要将数据提炼成只读的值,然后归档到二级sheet
应要求,这里是一些数据样本:
这被粘贴到 SheetA!A1:
Total price ,864,910. Breakdown per item: [Bag of Chocolate Kisses x200 @ 450 = 90,000] [Box of Tissues x1 @ 300 = 300] [Jacket x66 @ 200 = 13,200]
上述数据可以是单个单元格中的 1 行文本到 100 多行文本。
然后我使用下面的公式来删除不需要的字符,并分成所需的列:
=SPLIT( REGEXREPLACE(Front!A3,"^A-Za-z+]. Breakdown per item:, x#"," "),"[]@=")
我目前正在使用它来将数据拉入存档 sheet,完善后:
function CaptureData() {
var ss = SpreadsheetApp.getActiveSpreadsheet ();
var source = ss.getRange ("Back!8:8");
var destSheet = ss.getSheetByName("Data");
var destRange = destSheet.getRange(destSheet.getLastRow()+1,1);
source.copyTo (destRange, {contentsOnly: true});
}
下图是存档 Sheet,具有所需的输出 - 请注意,屏幕截图当前显示的是我遇到的问题。
Archive Sheet
解决方案
由于您的项目数量指标是小写字母 x
在空白 space 之后并且您始终以大写开头每个项目命名 X
您可以嵌套另一个REGREPLACE
将 [blank space] x
替换为您设置为拆分字符串的字符之一。以下公式按照您的意图执行:
=SPLIT( REGEXREPLACE(REGEXREPLACE(A1,"Breakdown per item:"," "), " x", "@"),"[]@=")
希望对您有所帮助。让我知道您是否需要其他任何东西或者您不明白什么。 :)