回答
假设的值是在单元格A1,使用以下公式:
这是一个阵列式,并且必须以Ctrl键 + 移位来确认 + 输入。
=1=SUM(--(MID(A1,ROW(OFFSET($A$1,,,LEN(A1))),1)="0"))
现在复制公式指向其他四个单元格。
就是这样。
这里是如何工作的...
假设A1单元格的值是11101111
所以,这是一个总的八个字符。我们可以看到其中有7个是1,1个是0.
但是我们如何让Excel看到同样的东西?
该公式的核心是MID()函数。我们用它来将这个值分成八个独立的字符。
在正常使用情况下,MID()函数只是从较大的字符串中返回一个文本的子字符串。您可以将它提供给较大文本中的开始位置以及您想要的子字符串的长度,并返回该子字符串。
例如:=MID(A1,3,3)
在参考我们的A1时将返回101
。
如果我们将其更改为:=MID(A1,4,1)
我们将得到0
。
但是,我们如何让MID()函数完全将A1中的值分解为谨慎的单字符子串。请记住,MID()通常只返回一个子字符串。但在我们的例子中,我们希望它返回八个子字符串。
这是数组公式出现的位置。请记住MID()的第二个参数是我们想要返回的子串的起始位置。如果我们将第二个参数传递给数组而不是单个数字,那么MID()将为数组中的每个值执行一次函数。
在Excel中指定数组的一种方法是使用数组常量。因此,我们可以将MID()例如改成这样:
=MID(A1,{1;2;3;4;5;6;7;8},1)
而结果是这样的:{"1";"1";"1";"0";"1";"1";"1";"1"}
。
现在,如果您只在一个单元格中输入上述公式,则只会看到第一个元素,它是一个元素。但是,如果你选择的八个垂直单元格区域,然后点击在工作表上的公式栏和输入公式,然后证实按Ctrl + Shift键的排列方式 + 输入
...你会看到这八个不同的值出现在选定的范围内。
即使从一个单元格看完整结果的另一种方法是在“公式栏”中选择完整公式,然后按键盘上的012键。该公式将替换为公式栏中的结果。您可以使用此技术来评估公式或较大公式的谨慎部分。如果您按输入结果将保留在配方栏中。如果您想要公式,请按Esc。
使用数组常量的问题是,它仅在单元格A1中的文本长度小于或等于8个字符时才能正常工作。如果我们想要处理更长的文本,那么我们需要一个具有更多值的数组常量。解决这个问题的一种方法是使用公式来创建一个即时数组,在评估时看起来像我们的数组常量。我们将这个公式设计成与单元格A1中文本中的字符具有完全相同数量的增量元素。
这正是这个结构在我们的公式中的作用:
ROW(OFFSET($A$1,,,LEN(A1))
回想一下,当MID()函数完成后,我们留下了这阵结果:{"1";"1";"1";"0";"1";"1";"1";"1"}
现在我们对每个元素应用逻辑测试,问这些测试是否等于0
?
这里是如何将看:
{"1";"1";"1";"0";"1";"1";"1";"1"}=0
返回一个新数组,结果是这样的:
{FALSE;FALSE;FALSE;TRUE;FALSE;FALSE;FALSE;FALSE}
注意,只有第4单元为TRUE,这当然是完全对。
所以这是进步。
现在我们要计算有多少元素是TRUE。我们知道答案是一个。但Excel如何解决这个问题呢?
如果我们的数组是数字而不是这些布尔值TRUE和FALSE,那将会很不错。将布尔数组转换为数字的简单方法是在数组前面使用两个减号。当TRUE值变为负数时,它变成一个数字;它变成-1
。当我们用第二个减号命中它时,-1
变成+1
。当然,FALSE变成0
。
所以这样做应该是这样的:
--({FALSE;FALSE;FALSE;TRUE;FALSE;FALSE;FALSE;FALSE}=0)
而结果是这样的:
{0;0;0;1;0;0;0;0}
注意,阵列现在由数字组成。当我们首先查看MID()函数的结果时,它看起来像这样:{"1";"1";"1";"0";"1";"1";"1";"1"}
而那些不是数字;他们是文字。注意所有的引号。
如果您密切关注,您可能会想知道为什么我们不能直接在MID()函数的输出中使用这两个减号来将这些文本数字转换为实数。那么,事实上我们可以有。但是我们需要一个数组,其中1表示源零,0表示源1。换句话说,我们需要反过来。采取这些额外的步骤给了我们。
我们现在可以在数组上使用SUM()。
=SUM{0;0;0;1;0;0;0;0})
由于它仅求和1和0和1秒表示原始源零,结果是源零的计数。
我们进行最后一个测试,看看结果是等于一个,因为你要知道,如果在单元格A1值有且仅有一个零吧:
=1=SUM{0;0;0;1;0;0;0;0})
结果为真。
- 1. 检查是否已arralist包含Excel的单元格的值
- 2. 检查一个单元格是否只包含元音或辅音Vba
- 3. 检查arraylist是否只包含空值
- 4. Excel VBA - 检查单元格是否包含一段文字
- 5. 检查表格的单元格是否包含某种形式
- 6. 宏来检查一个特定范围的单元格是否包含值
- 7. Excel:找出单元格是否包含/包含单元格范围内的值
- 8. 检查单元格是否包含Excel中的非Alpha字符
- 9. 检查数值是否只包含一种数字
- 10. 检查数组是否只包含一个键/值
- 11. 检查行是否包含ANY值*不止一次*
- 12. Excel中 - 检查是否行包含值*不止一次*
- 13. 如何包含条件以检查列中的单元格值是否为空?
- 14. 动态检查单元格值是否存在多次
- 15. SQL:检查行是否包含另一个单元格的内容
- 16. Excel 2010数据验证,以检查单元格是否包含逗号值
- 17. 检查元素是否包含#shadow-root
- 18. 检查元素是否包含内容
- 19. 检查VecDeque是否包含元素
- 20. 删除单元格只包含一个单一空格的行
- 21. 如何检查一个单元格是否包含多个搜索词
- 22. 检查元素是否包含jQuery中的另一个元素
- 23. 检查文件是否只包含空格C++
- 24. 检查行是否包含单词
- 25. 检查网址是否包含单词
- 26. 检查arraytype列是否包含空值
- 27. PHP检查MySQL表是否包含值
- 28. 如何检查HashSet是否包含值?
- 29. php - 检查结果是否包含值
- 30. 检查NSMutableArray是否包含给定值
@KjubE这个为你工作 ? –