当前位置:主页 > Office办公

最新发布

INDEX函数,有时可替代数组公式
INDEX函数,有时可替代数组公式

我们知道,数组公式在输入完后必须按Ctrl+Shift+Enter键来强制公式为数组公式。然而,我们已经习惯了在输入完后直接按Enter键,有没有一些技巧能够避免按Ctrl+Shift+Enter键但又能够达到数组公式的效果呢?在上一篇文章中,我们解了通过适当设置参数可以让INDEX函数返回整行或整列,这表明INDEX函数可以强制返回数组来传递给另一个函数。否则,该函数就需要作为数组公式,也就是说在公式输入完后要按Ctrl+Shift+Enter键。下面举一个例子来说明。例如,要求列A中的单元格区域A1:A10中第一个非空单元格的相对位置。如果使用公式:=MATCH(TRUE,A1:A10<>””,0)将返回#N/A,如下所示。(说明:在Office 365中,已增加这种自动转换功能。如果你使用的是Office 365,结果可能与这里的不同)必须采用数组公式输入才能得到正确结果,即输入完后要按Ctrl+Shift+Enter键,如下所示。无需数组公式,使用INDEX函数可以得到相同的结果:

INDEX函数,给公式提供数组
INDEX函数,给公式提供数组

INDEX函数虽然可以生成数组,但如果不用数组公式,似乎只能返回其生成的数组中的第一个元素。然而,可以使用INDEX函数来给公式提供数组。例如:=SUM(INDEX(A1:A10,N(IF(1,{1,4,8}))))将计算单元格A1、A4和A8的和。下面的公式也可以得到相同的结果:=SUM(INDEX(A1:A10,N(INDEX({1,4,8},,))))可以将其扩展到二维单元格区域:=SUM(INDEX(A1:C10,N(IF(1,{1,4,8})),N(IF(1,{1,2,3}))))计算单元格A1、B4和C8的和,即:=SUM(A1, B4, C8)此外,可以采取转置其中一个数组常量的标准技术来生成更多不同的结果:

ROW与ROWS函数,生成连续的整数
ROW与ROWS函数,生成连续的整数

有时候,我们希望公式中有一部分能够在该公式向下复制到连续的行时,生成一系列连续的整数。一个经典的示例是使用INDEX/SMALL组合的公式,例如下面的公式1:=INDEX($B$1:$B$10,SMALL(IF($A$1:$A$10=”A”,ROW($A$1:$A$10)-MIN(ROW($A$1:$A$10))+1),1))查找单元格区域A1:A10中数据为“A”的第一个单元格,并提取单元格B1:B10中对应行的数据,如下所示。实际上,还可以使用一个更简单一点的公式2:=INDEX($B$1:$B$10,SMALL(IF($A$1:$A$10=”A”,ROW($A$1:$A$10)),1))然而,我觉得开头提到的那个长一点的公式1更好一些,因为如果单元格区域不是从A1开始的话,那个公式1更灵活。在公式中,末尾的1代表SMALL函数中的参数k,即第k小的值,上例中我们取出的是找到的第1个值。在中我们可以看到,列A中还有几个单元格中的数据是“A”,如果我们要全部获取这些值,则需要末尾的参数k能够变成2、3,等等。可以使用ROW函数:ROW()或者ROW(A1),如下公式3:

IFERROR函数,从结果中剔除不需要的值
IFERROR函数,从结果中剔除不需要的值

在使用公式时,我们经常遇到将某个值从结果数组中剔除,然后将该数组传递给另一个函数的情形。例如,要获取单元格区域中除0以外的最小值,可以使用数组公式:=MIN(IF(A1:A10<>0,A1:A10))或者对于Excel 2010及以后的版本,使用AGGREGATE函数:=AGGREGATE(15,6,A1:A10/(A1:A10<>0),1)(注意,这里必须指定第1个参数的值为15(SMALL),因为如果指定其值为5(MIN)的话,AGGREGATE函数不接受除实际的工作表单元格区域外的任何值。然而,如果指定该参数的值为14-19,那么可以先操作任何单元格区域,也可以使用来源于AGGREGATE函数里的其他函数生成的数组、或者常量数组,这些都不是指定其值为1-13所能够处理的。)然而,有时包含0的数组不是一个简单的工作表单元格区域而是由函数通过计算生成的数组。在这种情形下,特别是公式相当长时,重复的子句将使公式更长,这使得公式看起来很“笨重”,并且还会使Excel进行一些不必要的计算,例如:=MIN(IF([a_very_long_formula]<>0,[a_very_long_formula],””)下面用一个例子来说明,如下所示:

COUNTIFS函数如何处理以数组方式提供的
COUNTIFS函数如何处理以数组方式提供的

这篇文章将详细解COUNTIFS/SUMIFS函数的运行原理,特别是将包含多个作为条件的元素的数组传递给一个或多个Criteria_Range参数时。先看一个示例,如下所示的数据。现在,想要得到Sex为“Male”,Pet为“Sea lion”的数量,使用公式:=COUNTIFS(B2:B14,”Male”,C2:C14,”Sea lion”)而想要得到Sex为“Female”,Pet为“Sea lion”的数量,可使用公式:=COUNTIFS(B2:B14,”Female”,C2:C14,”Sea lion”)那么,想要得到Sex为“Male”或“Female”,Pet为“Sea lion”的数量,可简单地将上述两个公式相加:=COUNTIFS(B2:B14,”Male”,C2:C14,”Sealion”)+COUNTIFS(B2:B14,”Female”,C2:C14,”Sea lion”)此时,我们可能会想到,使用数组作为参数来简化上面的公式:

TRANSPOSE,非数组版本
TRANSPOSE,非数组版本

有时候,我们想要寻找通常需要数组公式的非数组版本,其理由可能是:1. 认为这样可以提高工作表的性能(有时可以,有时不能)2. 不喜欢必须使用输入数组公式所必需的Ctrl+Shift+Enter组合键3. 从理论上,可能只是感兴趣本文研究数组公式的非数组版本,更多地属于第三类。强迫TRANSPOSE正常运行而不进行数组输入的必要强制措施令人费解且不切实际。这并不是说对它们没有兴趣,但这些强制性的使用并非TRANSPOSE独有。实际上,可以在许多函数中使用它们来生成返回值,否则将需要数组输入。下面是一个示例。假设从单元格A2起其下的单元格相加,想要确定这样的和在哪个单元格等于或超过某个数,例如5。这些单元格依次相加的和显示在列B中,假设我们不希望在解决方案中使用这样的辅助列。并且,假设我们希望返回必须相加才能达到该数的单元格数,如下所示。从中可以清楚地看出,答案是3,因为前3个单元格中1+2+3=6大于我们给定的目标数5。有两种标准的技术可以得到我们想要的结果。一种是使用数组公式:=MATCH(TRUE,MMULT(0+(ROW(A2:A6)>=TRANSPOSE(ROW(A2:A6))),A2:A6)>5,0)

Excel公式技巧之1/17和其他全数字(pandigitals)
Excel公式技巧之1/17和其他全数字(pandigitals)

这篇文章介绍的技巧很有趣,不知道读完后,有没有感兴趣的朋友能再贡献出几个全数字(pandigitals)来。技巧来源于使用公式从由数字字母组成的字符串末尾返回数字,例如在单元格A1中有下面的字符串:ABCDEF123456使用公式:=0+MID(A1,MIN(FIND({0,1,2,3,4,5,6,7,8,9},A1&”0123456789″)),LEN(A1))将返回字符串末尾的数字123456。我们已经知道,在公式中,将字符串“0123456789”与单元格A1中的字符串联接,以避免MIN函数返回错误,因为如果在单元格A1中没有包含从0-9中的所有数字,那么从FIND函数中返回的结果将包含错误值,而MIN函数不能忽略错误值,这样会导致公式的结果是错误值。首先在单元格A1中的字符串末尾添加“0123456789”,确保要查找的字符串中现在至少包含1个0-9中的每个数字(这样,从FIND返回的所有10个值都是非错误值),同时通过将这个由0-9这10个数字组成的字符串放在A1的末尾以确保不会影响MIN函数所需的输出。下面的公式也可以得到相同的结果:=0+MID(A1,MIN(FIND({0,1,2,3,4,5,6,7,8,9},A1&7^18)),LEN(A1))

excel图表怎么将十进制数转换成指定进制的数
excel图表怎么将十进制数转换成指定进制的数

使用公式来解决问题:给定一个十进制的正整数,将其转换成指定进制的数。如下所示,在单元格A2中是给定的十进制正整数值,单元格B2中是指定的进制,示例中是4进制,单元格C2中是转换后的结果,单元格D2中使用公式检验结果是否正确。在单元格C2中的公式是:=SUMPRODUCT(MOD(FLOOR(A2/B2^(ROW(INDIRECT(“1:20”))-1),1),B2)*10^(ROW(INDIRECT(“1:20”))-1))在单元格D2中的公式是:=SUMPRODUCT(B2^(ROW(INDIRECT(“1:” &LEN(C2)))-1),0+MID(C2,1+LEN(C2)-ROW(INDIRECT(“1:” & LEN(C2))),1))下面来详细解释公式是怎么得来的。对于任何进制的数来说,其通用形式为:其中,x代表进制数,a0、a1、a2、…、an是常量。

excel从字符串中提取数字——数字位于字符串开头
excel从字符串中提取数字——数字位于字符串开头

本文主要研究从字符串开头提取数字的技术:1. 这些数字是连续的2. 这些连续的数字位于字符串的开头3. 想要的结果是将这些连续的数字返回到单个单元格对于下面研究的每种解决方案,我们需要在两种不同的情况下测试其健全性:1. 字符串中除开头外其他地方没有数字的情况,例如123ABC。2. 字符串中除开头外其他地方也有数字,要么在末尾,要么在中间,例如123ABC456或123ABC456DEF。无论字符串中除开头外是否还有其他数字,将要研究的某些解决方案都可以很好地工作,但有些解决方案则存在局限性。在分析每种解决方案时,将会明确说明。LOOKUP与LEFT公式1:

excel从字符串中提取数字——数字位于字符串末尾
excel从字符串中提取数字——数字位于字符串末尾

上篇文章解了提取位于字符串开头的数字的公式技术,本文研究从字符串开头提取数字的技术:1. 这些数字是连续的2. 这些连续的数字位于字符串的末尾3. 想要的结果是将这些连续的数字返回到单个单元格与上篇文章一样,对于下面研究的每种解决方案,我们需要在两种不同的情况下测试其健全性:1. 字符串中除末尾外其他地方没有数字的情况,例如ABC456。2. 字符串中除末尾外其他地方也有数字,要么在开头,要么在中间,例如123ABC456或ABC123DEF456。MIN与FIND公式1:=0+MID(A1,MIN(FIND({0,1,2,3,4,5,6,7,8,9},A1& 1/17)),LEN(A1))

共计75934条记录 上一页 1.. 4565 4566 4567 4568 4569 4570 4571 ..7594 下一页