Jak mogę uzyskać liczbę wystąpień dla pewnego zakresu oparciu oLiczba zdarzeń na podstawie 2 warunków lub regexp
1) wyrażenie regularne
2) 2+ warunki (powiedzmy komórki zawierające "Tak" i/lub "nie")
Co mam w tej chwili:
COUNTIF(B5:O5; "*yes*")
Próbuję użyć COUNTIF(B5:O5; {"*yes*", "*no*"})
lub COUNTIF(B5:O5; "(*yes*)|(*no*)")
, ale żadna z m pracował.
Lub jak zliczyć komórki zawierające niektóre nazwy domen - yahoo.com hotmail.com i gmail.com za pomocą regexp? np:
(\W|^)[\w.+\-]{0,25}@(yahoo|hotmail|gmail)\.com(\W|$)
UPDATE:
Najprostszym sposobem znalazłem jest utworzyć funkcję niestandardową dla tych celów, dodałem 2, który działa idealnie dla mnie i mam nadzieję, że to pomoże komuś też:
/**
* Count if cell value matches any condition (supports regexp also)
*/
function countCustomMatchOr(data){
var count = 0;
for(var i=0; i < data.length; i++){
for(var j=0; j<data[i].length; j++){
var cell = data[i][j];
for(var k=1;k<arguments.length;k++){
if(typeof arguments[k] == "number"){
if(arguments[k] == cell) count++;
} else if(cell.toString().match(arguments[k])) count++;
}
}
}
return count;
}
I
/**
* Counts value in data range if matches regular expression
*/
function countCustomRegExp(data, reg, flag){
var rows = data.length, count = 0, re = flag?new RegExp(reg, flag):new RegExp(reg);
for(var i = 0; i < rows; i++){
for(var j = 0; j < data[i].length; j++){
if(data[i][j] != "" && data[i][j].toString().match(re)){
count++;
}
}
}
return count;
}
W celu wykorzystywać je tylko zastosować countCustomRegExp(A2:G3;"yes.*")
lub countCustomMatchOr(A2:G3;"yes";"no")
Wiem, że to stare pytanie, ale lepszym rozwiązaniem może być dodanie rozwiązania zamiast odpowiedzi. –