В основном формула проверяет, является ли последний символ в ячейке A1
одним из следующих символов: a, e, i, n или y. Часть SUMPRODUCT
важна, потому что это взломать проверку всего массива сразу по последнему символу. Когда вы удаляете эту часть и просто используете RIGHT(A1)={"a","b","e","c","d"}
, Excel фактически просматривает только первую запись в массиве, проверяет, соответствует ли она, и сразу же возвращает результат. Поэтому, когда «е» находится на первой позиции, вы получаете Истину.
SUMPRODUCT
позволяет применять проверку ко всему массиву. Еще один способ увидеть это - вручную ввести его в отдельные ячейки в виде сетки, как это
A | B | C | D
1 | Claude | =RIGHT(A1,1) | 'a' | =1*(B1=C1)
2 | | =RIGHT(A1,1) | 'e' | =1*(B2=C2)
3 | | =RIGHT(A1,1) | 'i' | =1*(B3=C3)
4 | | =RIGHT(A1,1) | 'n' | =1*(B4=C4)
5 | | =RIGHT(A1,1) | 'y' | =1*(B5=C5)
6 | | | | =SUM(D1:D5)
Нижняя правая ячейка будет содержать 1, если любой из символов a, e, i, n, y находится в конце значения в A1, или 0, если нет. Я вручную выполняю ту же логику, что и SUMPRODUCT
, чтобы получить тот же результат.
Итак, как это будет сделано в C # .Net:
var checkValue = "Claude";
var letters = {"a", "e", "i", "n", "y"};
var found = 0;
foreach (var theLetter in letters)
if (checkValue.EndsWith(theLetter))
found = 1;
return found; // returns same value as Excel function