gpt4 book ai didi

c# - 将一些 Excel 公式转换为 C#

转载 作者:行者123 更新时间:2023-11-30 13:50:05 24 4
gpt4 key购买 nike

我正在尝试将一些 Excel 公式转换为 C# 代码,但我有点迷路了...

我有以下内容:

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 字符的索引位置。

那里发生了什么?
我不明白什么?

最佳答案

基本上,该公式检查单元格 A1 中的最后一个字符是否为以下任何字符:a、e、i、n 或 y。 SUMPRODUCT 部分很重要,因为根据最后一个字符一次检查整个数组是一种 hack。当您剥离该部分并仅使用 RIGHT(A1)={"a","b","e","c","d"} 时,Excel 实际上只会查看第一个数组中的条目,检查它是否匹配,并立即返回。因此,当“e”位于第一个位置时,您会得到 True。

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)

如果字符 a、e、i、n、y 中的任何一个位于 A1 中值的末尾,则右下角的单元格将包含 1,否则将包含 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

关于c# - 将一些 Excel 公式转换为 C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7534235/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com