查找文本并复制其他单元格

问题描述 投票:0回答:1

我又回来了。我需要你的帮助。

我有一个 Google 表格,其中复制了所有玩命运轮盘的用户。 例如,在 E 列中,这些值是从数据库复制的: "a:1:{i:0;s:12:"半价";}"

我希望脚本只提取同一行 H 列中赢得的“半价”奖品。 如果没有获胜(如 E7)我可以写“NO WIN”

为了清晰起见,我附上图片

enter image description here

感谢大家的宝贵帮助。 毛罗

google-sheets google-apps-script
1个回答
0
投票

尝试这个方法

使用Apps脚本

对于这一部分,循环遍历每一行以提取奖品文本或“NO WIN”

const results = data.map(row => {
        const prizeData = row[0];
        if (prizeData === 'a:0:{}') {
          return ['NO WIN'];
        }

这个正则表达式从模式 a:1:

{i:0;s:12:"Metà Prezzo";}

中提取奖品文本
    const match = prizeData.match(/s:\d+:\"([^\"]+)\"/);
    const prize = match ? match[1] : null;

使用的脚本

function myFunction() {
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  const dataRange = sheet.getRange(2, 5, sheet.getLastRow() - 1);
  const prizeColumn = sheet.getRange(2, 8, sheet.getLastRow() - 1);
  const data = dataRange.getValues();

  const results = data.map(row => {
    const prizeData = row[0];
    if (prizeData === 'a:0:{}') {
      return ['NO WIN'];
    }

    const match = prizeData.match(/s:\d+:\"([^\"]+)\"/);
    const prize = match ? match[1] : null;

    if (prize === "Metà Prezzo" || prize === "NO WIN") {
      return [prize];
    } else {
      return [''];
    }
  });

  prizeColumn.setValues(results);
}

示例输出

Sample1

使用 Google Sheet Formula 的替代方法

BYROW函数LAMBDAIFFIND结合使用,处理从

E2
E8
的单元格范围内的每个值,检查特定条件,并根据条件返回相应值那些条件。

=BYROW(E2:E8, LAMBDA(r, IF(r = "a:0:{}", "No Win", IFERROR(IF(FIND("Metà Prezzo",r)>0,r,""),""))))

Sample2

参考文献

© www.soinside.com 2019 - 2024. All rights reserved.