Excel如何返回满足一定条件的数组?

2024-02-05

如果我的单元格范围内有数据A1:A6这是:

Apple
Banana
Cherry
Grape
Orange
Watermelon

有没有办法返回一个数组(在单个单元格中,用于较大公式的中间步骤),该数组返回上述数组,除了那些满足特定条件的条目之外?

例如,如果我想要一个公式返回仅包含包含字母的单元格的数组n,它会返回这个:

Banana
Orange
Watermelon

有办法做到这一点吗?

注意我做not想要返回一个相同大小的数组,只是包含空白条目,即我不想要:

""
Banana
""
""
Orange
Watermelon

Yes.

这是数组公式(为了可读性添加了换行符):

= INDEX(A1:A6,N(IF({1},MODE.MULT(IF(ISNUMBER(SEARCH("n",A1:A6)),
  (ROW(A1:A6)-ROW(A1)+1)*{1,1})))))

Note, this is an array formula, meaning you must press Ctrl+Shift+Enter after typing the formula instead of just Enter.


这个公式有一些特别奇怪的事情,所以我想如果你感兴趣的话我会解释下面的内容。我在下面解释的一些内容可能是显而易见的,但我只是说得很彻底。

从基于列表的结果返回single索引,使用这个:

= INDEX(A1:A6,2)

这将返回Banana.

从基于列表的结果返回multiple索引,你会想到使用这样的东西:

= INDEX(A1:A6,{2;5;6})

理想情况下这会返回{Banana;Orange;Watermelon}.

但是,这不会返回数组。基于我最近问的一个问题 https://stackoverflow.com/questions/47187863/can-excels-index-function-return-array,针对这个问题给出了一个非常聪明的解决方法:

= INDEX(A1:A6,N(IF({1},{2;5;6})))

这将返回所需的结果{Banana;Orange;Watermelon}.

我认为这是解释的第 1 部分。


第 2 部分的解释是以下内容如何返回{2;5;6}:

= MODE.MULT(IF(ISNUMBER(SEARCH("n",A1:A6)),(ROW(A1:A6)-ROW(A1)+1)*{1,1}))

MODE.MULT是一个返回集合中出现最频繁的数据的函数。不过,有一些注意事项:

  1. 数据必须至少出现两次才能返回MODE.MULT。如果没有重复数据,则会返回错误。例如,MODE.MULT({1;2;3})会返回错误,因为数组中没有重复数据{1;2;3}。另一个例子:MODE.MULT({1;1;2}会回来1因为1最常出现在数据中。

  2. 如果出现次数最多的数据存在“平局”,MODE.MULT返回所有绑定条目的数组。例如MODE.MULT({1;1;2;2})将返回一个数组{1;2}.

  3. 最重要的是,也可能是最奇特但也是最有用的行为MODE.MULT, MODE.MULT 完全忽略逻辑值(TRUE and FALSE值)确定数据模式时,even if它们比数据中的非逻辑值出现的频率更高。

我们可以利用这些属性MODE.MULT以获得所需的数组。

ISNUMBER(SEARCH("n",A1:A6))返回一个数组TRUE/FALSE数据包含的值n。像这样的事情:

FALSE
TRUE
FALSE
FALSE
TRUE
TRUE

(ROW(A1:A6)-ROW(A1)+1)返回一个从以下位置开始的数组1并增加 1 到原始数组的大小:

1
2
3
4
5
6

(ROW(A1:A6)-ROW(A1)+1)*{1,1}实际上只是复制此列:

1  1
2  2
3  3
4  4
5  5
6  6

The IFif 语句用于返回上面数组中的数字TRUE, and FALSE否则。 (自从IF语句不包含“else”子句,FALSE是给定的默认值。)

在此示例中,IF语句将返回:

FALSE  FALSE
2      2
FALSE  FALSE
FALSE  FALSE
5      5
6      6

Taking MODE.MULT上述公式将返回{2;5;6}因为如前所述,MODE.MULT方便地忽略FALSE考虑模式时上面数组中的值。

需要考虑上面的数组里面MODE.MULT而不是简单地:

FALSE
2
FALSE
FALSE
5
6

因为正如前面提到的,MODE.MULT要求at least数据中的两个条目需要匹配才能返回值。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Excel如何返回满足一定条件的数组? 的相关文章

  • org.apache.poi 中的异常

    我试图编写一个可以读取和写入的程序 xlsx文件中 下面提供的代码旨在能够编写其第一个 Excel 程序 package excel reader import java io FileOutputStream import java io
  • 在 Excel 2016 数据模型中创建计算表

    我在 Excel 2016 数据模型中有多个表 这些表来自其他 Excel 工作表中维护的数据 并通过 Excel 查询导入以填充数据模型 以利用可用的高级数据管理功能 例如 DAX 日期表 关系联接等 但是 我希望能够通过应用过滤器 联合
  • 如何以可读的方式重写Excel公式?

    我有一个 Excel 文件 其中包含以下公式 IF OR ISERROR G16 ISERROR G17 X16 IF OR G16 xxx G16 yyy G16 zzz Y16 IF G16 333 N A IF G17 333 Z16
  • 位图太大 as3

    在AS3中 我从zip文件加载png nochump的zip库通过ByteArray到Loader png 的宽度最大可达 45k 像素 但高度仅为 120 像素 这在 Flash 中产生了一个问题 因为图像的宽度只能约为 8000 像素
  • Excel vba 创建范围的所有可能组合

    我有一个问题 我无法在网络上的任何地方找到它 它可能在那里 但我找不到它 呵呵 我有一个包含 13 列数据的电子表格 每列都包含需要进入整体测试用例的参数的变体 它们都不同 比如 E 101 105 110 120 J Upper S上行L
  • 如何在 Windows Phone 8 应用程序中读写 xls、docs 和 csv 文件 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 询问代码的问题必须对所解决的问题表现出最低限度的了解 包括尝试的解决方案 为什么不起作用以及预期结果 也可以看看 Stack Overfl
  • 字节数组到 Excel 工作簿

    我正在尝试将字节数组转换为 Excel 工作簿 当我这样做时 Response BinaryWrite renderedBytes 它工作正常并且文件符合预期 但是当我尝试用我在网上找到的这个来做到这一点时 private Object B
  • UnicodeDecodeError:“utf-8”编解码器无法解码位置 14 中的字节 0xb9:起始字节无效

    我正在使用 Django REST 进行文件上传测试 Python3 6 2Django1 11djangorest框架 3 6 4Excel OSX 15 38 170902 操作系统 10 12 6 过去使用普通照片文件可以成功完成此操
  • 如何使用波斯日期(Shamsi)? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我想直接使用 Excel 2007 工作表中的波斯日期 Hijri Shamsi 作为计算基础 这怎么可能 我将通过以下方式将波斯日期转换
  • 当我在 PHP 中将 print_r() 应用于数组时,为什么会得到“Resource id #4”? [复制]

    这个问题在这里已经有答案了 可能的重复 我如何从 PHP 中的 MySql 响应中 回显 资源 id 6 https stackoverflow com questions 4290108 how do i echo a resource
  • 现在我们有了 std::array C 风格的数组还有什么用途呢?

    std array远远优于 C 数组 即使我想与遗留代码进行互操作 我也可以使用std array data 我有什么理由想要一个老式的阵列吗 除非我错过了一些东西 我没有太密切地关注标准中的最新变化 C 风格数组的大部分用法仍然保留 st
  • 用xCode制作图表[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 您好 我需要绘制一些数组来分析信号 我有一个可可项目正在进行 谁能告诉我在哪里可以找到简化这项任务的工具 基本上我想像在图形计算器上一样显
  • PHP 数组的最大键大小是多少?

    我正在生成关联数组 键值是 1 n 列的字符串连接 会回来咬我的钥匙有最大长度吗 如果是这样 我可能会停下来并采取不同的做法 它似乎仅受脚本内存限制的限制 快速测试后我得到了 128mb 的密钥 没问题 ini set memory lim
  • 从字符串数组中删除项目

    我有一个包含如下数据的数据库字段 76 60 12 例如 如果我想删除60 我该怎么办 要删除的号码可以是任何地方 如果需要的话 我还需要删除逗号 我正在使用 NET 2 0 我会用逗号分割字符串 删除元素 然后再次连接字符串 希望这一切都
  • VBA改变复杂的公式

    我使用带有单选按钮的代码 请参阅最后一个代码 将新行插入到第 15 行 这会将旧数据向下推 同时将相同的公式复制到之前曾经存在过的第 15 行 在第 15 行中 单击该按钮 单击该按钮后 我可以在 E15 中输入 3 位数据 然后按 Ent
  • Promise.all 返回一个未定义的数组并在完成之前解析

    我在返回数组的函数时遇到问题undefined 这是代码 classMethods getQueries function models dbId dateStart dateEnd return new Promise function
  • 导出 CSV 文件时出现编码问题

    我正在使用 Asp net mvc 生成 CSV 文件 但在处理葡萄牙语中的特殊字符时遇到问题 我使用以下代码返回文件 public FileContentResult RelMatriculas RelRematriculaVM mode
  • 减少 JavaScript 中的对象数组

    我在 javascript 中有一个想要减少的对象数组 请参阅下面的代码 6 位或以上的消息已验证 较少的消息未验证 我将他们按组分组 const myArray group groupA message Text without a nu
  • numpy 中用最少内存对上三角元素求和的最快方法

    我需要进行此类求和i
  • 需要 php pdo 内爆数组并在 mysql 中插入多行

    基于this https stackoverflow com questions 4629022 how to insert an array into a single mysql prepared statement w php and

随机推荐