查找功能自动永久突出显示不同的列
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) { }
})
}
我正在尝试使用 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) { }
})
}