我编写了以下代码来搜索电子表格中的值。出于某种原因,当我尝试垂直搜索时,它会水平搜索。
我认为将valores[cc][0]
更改为valores[0][cc]
可以做到这一点,但它无效。
知道我做错了吗?
function onEdit(e){
var a = e.source.getActiveSheet();
var SearchText = "4"
//x = mainSearch( a, 3, 1, "horizontal", SearchText);
x = mainSearch( a, 1, 1, "vertical", SearchText);
}
//mainSearch( targetSheet, row, column, alignment, searchText)
function mainSearch( folha, linha, coluna, procTipo, procTexto) {
if ( procTipo = "horizontal" ) {
var alcance = folha.getRange( linha, coluna, folha.getLastRow(), 1);
}
else if ( procTipo = "vertical" ) {
var alcance = folha.getRange( linha, coluna, 1, folha.getLastColumn());
}
else {
Browser.msgBox("mainSerch com procTipo errado");
}
var valores = alcance.getValues();
for(cc=0;cc<valores.length;++cc) {
if ( procTipo = "horizontal" ) {
Browser.msgBox("Horizontal --> " + valores[cc][0]);
if ( valores[cc][0] == procTexto ) {
return (cc + linha);
}
}
else if ( procTipo = "vertical" ) {
Browser.msgBox("Vertical --> " + valores[0][cc]);
if ( valores[0][cc] == procTexto ) {
return (cc + coluna);
}
}
}
return 0;
}
答案 0 :(得分:1)
问题在于:
if ( procTipo = "horizontal" ) {
执行procTipo = "horizontal"
时,您将"horizontal"
分配给procTipo
。你应该只测试它的值:
if ( procTipo == "horizontal" ) {
还有三个地方您需要将=
更改为==
。
有些人更喜欢使用===
,因为it doesn't do any type coercion,但在这种情况下==
同样有效。
您必须调整迭代限制才能在垂直情况下正确搜索valores
。目前你有这个:
for(cc=0;cc<valores.length;++cc) {
用以下两行代替:
var limit = (procTipo == 'horizontal' ? valores.length : valores[0].length);
for (var cc = 0; cc < limit; ++cc) {