查找功能自动永久突出显示不同的列

Find function automatical highlight different column permanantly

我正在尝试使用 Google sheet 来模拟收货流程。 我试过条件格式的乘法选项,但我实际上认为,这是不可能的。

我想要达到的目标: 我在 sheet 顶部的“查找”框中扫描条形码。 sheet 自动标记具有该编号的行。

现在是棘手的部分。 我现在需要在 A 行中 - 自动标记为“已收到”的字段,对于找到条形码编号的所有行。

在这里您可以找到我正在使用的 sheet。 https://docs.google.com/spreadsheets/d/1txDg_azE6ew87ljDo6IwkmSWEehGHWo6yTlMRjZCQVU/edit?usp=sharing

列:PkgID (C) & BOL (R) 大部分是我必须扫描的数字

有什么方法可以将它与查找选项集成在一起吗? 谢谢

只是一个想法...

而不是简单的查找框,使用 CTRL + H,您可以在括号中搜索它,例如:

你将把它替换为:

 

特别注意</code></p>后面的不可见字符 <p>可以通过运行这个公式从中间复制(输入单元格后)</p> <pre><code>={"", "﹀﹀﹀﹀﹀﹀﹀", ""; ">>>>>>>>>>>>", CHAR(32), "<<<<<<<<<<<<"; "", "︿︿︿︿︿︿︿", ""}

接下来,您可以转到条件格式并使用:

=REGEXMATCH(C1, CHAR(32))

要将字段标记为已接收,您可以使用此脚本。你会得到一个新的菜单。然后扫描输入框内的数字...

function onOpen() {
  SpreadsheetApp.getUi().createMenu('⇩ M E N U ⇩')
    .addItem(' Find a number ...', 'displayPrompt')
    .addToUi();
}

function displayPrompt() {
  var ui = SpreadsheetApp.getUi();
  var result = ui.prompt("Please scan the number");
  var button = result.getSelectedButton();
  if (button === ui.Button.OK) {
    check(result.getResponseText());
  } 
}

function check(searchText) {
  var sheet = SpreadsheetApp.getActive().getSheetByName('Original');
  var rangeList = sheet
    .getRange('C2:C')
    .createTextFinder(searchText)
    .matchEntireCell(true)
    .findAll()
    .map((r) => r.offset(0, -2).setValue('Received'));
  var rangeList = sheet
    .getRange('R2:R')
    .createTextFinder(searchText)
    .matchEntireCell(true)
    .findAll()
    .map((r) => r.offset(0, -17).setValue('Received'));
}

扩展到所有列和所有选项卡

function check(searchText) {
  SpreadsheetApp.getActiveSpreadsheet().getSheets().forEach(function (sheet) {
    sheet
      .getRange('B2:AT')
      .createTextFinder(searchText)
      .matchEntireCell(true)
      .findAll()
      .map((r) => sheet.getRange(r.getRow(), 1).setValue('Received'));
  })
}

扩展到所有列、所有选项卡(某些选项卡除外)并激活每个选项卡的最后一行

function checkAndActivate(searchText) {
  const excl = ['Sheet1','Sheet2'];//excluded sheets
  SpreadsheetApp.getActiveSpreadsheet().getSheets().filter(sh => !~excl.indexOf(sh.getName())).forEach(function (sheet){
    sheet.activate()
    var rows = sheet
      .getRange('B2:AT')
      .createTextFinder(searchText)
      .matchEntireCell(true)
      .findAll()
      .map((r) =>
        r.getRow()
      );

    try {
      rows.forEach(function(row) {
        sheet.getRange(row, 1).setValue('Received')
      })
      sheet.getRange(rows[rows.length - 1],1).activate()
      SpreadsheetApp.flush();
    } catch (e) { }

  })
}