首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将几个Excel公式转换为C#

将几个Excel公式转换为C#
EN

Stack Overflow用户
提问于 2011-09-23 20:05:44
回答 2查看 2K关注 0票数 3

我试着把一些Excel公式转换成C#代码,我有点迷失了.

我有以下几点:

代码语言:javascript
复制
SUMPRODUCT(1*(RIGHT(A1)={"a","e","i","n","y"}))

那到底是什么意思?

以下是我所知道的:

  • RIGHT(A1)返回A1.
  • SUMPRODUCT({1,2,3}, {4,5,6})中文本的最后一个字符1*4 + 2*5 + 3*6 (类似于标量产品,对吗?)

但我不明白的是:

如果文本是Claude,例如.

RIGHT(A1)={"e","a","b","c","d"}返回TRUE

RIGHT(A1)={"a","b","e","c","d"}返回FALSE

我只更改了e字符的索引位置。

那里发生了什么事?

我不明白什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-09-23 20:14:42

基本上,公式是检查单元格A1中的最后一个字符是否为下列字符之一: a、e、i、n或y。SUMPRODUCT部分很重要,因为同时检查整个数组与最后一个字符是一个黑客。当您去掉该部分并只使用RIGHT(A1)={"a","b","e","c","d"}时,Excel实际上只查看数组中的第一个条目,检查是否匹配,并立即返回。所以当'e‘处于第一个位置时,你就得到了True。

SUMPRODUCT允许在整个数组中应用检查。另一种查看这一点的方法是以如下方式手动将其输入到单独的单元格中

代码语言:javascript
复制
       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)

如果任何字符a、e、i、n、y位于A1值的末尾,则右下角单元格将包含一个1;如果没有,则包含一个0。我正在手动执行与SUMPRODUCT相同的逻辑以获得相同的结果。

那么,如何在C#.Net中实现这一点:

代码语言:javascript
复制
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
票数 8
EN

Stack Overflow用户

发布于 2011-09-23 20:36:13

如果您想要一条基于@CoryLarson的建议的行,它适用于任意一组字母:

代码语言:javascript
复制
Func<string, string[], int> LetterCount = (x, y) => y.Contains(x.Substring(x.Length-1, 1)) ? 1 : 0;
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7534235

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档