书签 分享 收藏 举报 版权申诉 / 18
上传文档赚钱

类型内存数组之构建数组应用-ByGdliyy.xls

  • 上传人(卖家):Ronald
  • 文档编号:455737
  • 上传时间:2020-04-11
  • 格式:XLS
  • 页数:18
  • 大小:82.50KB
  • 【下载声明】
    1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
    2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
    3. 本页资料《内存数组之构建数组应用-ByGdliyy.xls》由用户(Ronald)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
    4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
    5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
    配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    内存 数组 构建 应用 _ByGdliyy
    资源描述:

    1、内内存存数数组组之之重重新新构构建建数数组组应应用用 通常情况下,用户在内存数组的中级应用中时常需要通过数组公式来构造内存数组,如:生成110的自然数序号应用。 由于此类应用在数组公式中运用特别广泛,而且许多初级用户对这类应用都非常熟悉,但在实际工作中如何去运用,则是必须面对 的一个问题。所以,在这里将由浅入深地对以下几种情况的数组构建进行分析和总结。 如果您是Excel初级用户,那么对INDIRECT函数、ROW函数、COLUMN函数应该不陌生,这几个函数都是用户常用于生成内存数组的函数。 如果您是常用数组公式的中级用户,那对LOOKUP函数、MMULT函数可能比较熟悉,因为这两个函数在生成

    2、内存数组方面有很重要的作用。 初初级级一一:生生成成自自然然数数序序号号的的垂垂直直(水水平平)数数组组。 初初级级二二:根根据据源源数数组组生生成成对对应应的的数数据据序序号号。 初初级级三三:构构造造一一维维等等差差数数列列。 中中级级一一:一一维维数数组组取取得得子子数数组组。 中中级级二二:等等长长度度变变换换一一维维数数组组。 中中级级三三:等等比比例例构构造造一一维维循循环环数数组组。 中中级级四四:一一维维数数据据转转换换为为二二维维数数组组。 高高级级一一:数数值值区区域域数数据据逐逐项项累累加加。 高高级级二二:一一维维数数组组数数值值累累加加。 高高级级三三:不不固固定定长

    3、长度度扩扩展展一一维维数数组组。 高高级级四四:不不定定长长使使用用循循环环序序列列扩扩展展数数组组。 如如果果大大家家对对后后续续的的解解法法公公式式看看不不明明白白,建建议议使使用用“工工具具公公式式审审核核公公式式求求值值”来来查查看看公公式式的的内内部部运运算算过过程程,以以了了解解各各技技巧巧中中的的解解法法思思路路。 By Gdliyy E 通常情况下,用户在内存数组的中级应用中时常需要通过数组公式来构造内存数组,如:生成110的自然数序号应用。 由于此类应用在数组公式中运用特别广泛,而且许多初级用户对这类应用都非常熟悉,但在实际工作中如何去运用,则是必须面对 如果您是Excel初

    4、级用户,那么对INDIRECT函数、ROW函数、COLUMN函数应该不陌生,这几个函数都是用户常用于生成内存数组的函数。 如果您是常用数组公式的中级用户,那对LOOKUP函数、MMULT函数可能比较熟悉,因为这两个函数在生成内存数组方面有很重要的作用。 如如果果大大家家对对后后续续的的解解法法公公式式看看不不明明白白,建建议议使使用用“工工具具公公式式审审核核公公式式求求值值”来来查查看看公公式式的的内内部部运运算算过过程程,以以了了解解各各技技巧巧中中的的解解法法思思路路。 如果您是Excel初级用户,那么对INDIRECT函数、ROW函数、COLUMN函数应该不陌生,这几个函数都是用户常用

    5、于生成内存数组的函数。 初初级级一一:生生成成自自然然数数序序号号的的垂垂直直(水水平平)数数组组。 该应用在数组公式中经常使用,如:生成1N的自然数序列、SMALL函数的第2个参数的自然数序列等等。 例:下面公式将生成自然数110的垂直数组。 公式:=ROW(INDIRECT(“1:10“) 有些用户可能会使用ROW(1:10)来生成数组,但如果用户在110行区域插入或删除行,将影响该结果的变化,因此建议用户最好使用ROW(INDIRECT(“1:10“)来产生固定引用。 求和验证:5555其中:INDIRECT(“1:10“)用于产生110行的引用,使用ROW函数来生成该区域的行号的垂直数

    6、组。 同理,下面的公式将生成110的水平数组。 公式:=COLUMN(INDIRECT(“C1:C10“,0)或=TRANSPOSE(ROW(INDIRECT(“1:10“) 求和验证:5555123456 注意:使用INDIRECT函数来生成R1C1引用时,第2个参数必须为FALSE(或0),否则公式返回错误。 初初级级二二:根根据据源源数数组组生生成成对对应应的的数数据据序序号号。 前面介绍的是直接生成数组,这个应用中主要介绍通过数据的具体数量来动态生成序号数组。 例:根据右侧数据区域生成动态序号的垂直数组。 公式:=ROW(INDIRECT(“1:“3;5;7;9 求和验证:2525 这

    7、里主要为了阐述如何通过公式去构建新数组,而对于此问题,另外一种方法更为灵活。 公式:=SUMPRODUCT(MOD($K$22:$K$31,2),$K$22:$K$31)求和验证:2525 此解利用了奇数对2求余数为1的特性,将偶数进行过滤,最后进行求和得结果。 78910 数据验证 A1 1 B2 2 C3 3 D4 4 E5 5 数据奇数验证 11 23 35 47 59 6#N/A 7#N/A 8 9 10 如果您是Excel初级用户,那么对INDIRECT函数、ROW函数、COLUMN函数应该不陌生,这几个函数都是用户常用于生成内存数组的函数。 有些用户可能会使用ROW(1:10)来生

    8、成数组,但如果用户在110行区域插入或删除行,将影响该结果的变化,因此建议用户最好使用ROW(INDIRECT(“1:10“)来产生固定引用。 其中:INDIRECT(“1:10“)用于产生110行的引用,使用ROW函数来生成该区域的行号的垂直数组。 该公式主要根据最大值来重新构建数组,由于INDIRECT函数生成引用时,行号不能包含小数,所以必须用舍入函数进行处理。 注注意意:通常情况下,如果数据源为引用,可以使用OFFSET函数来生成数组;如果数据源为数组,则不能使用OFFSET函数,但可以通过LOOKUP函数来实现, 而且LOOKUP函数使用更为灵活,在论坛中Gvntw和Guoweica

    9、o78两位版主的论帖更加详细地进行过介绍,这里不再赘述。 链接一: 公式:=LOOKUP(COLUMN(INDIRECT(“C1:C“1;1;2;2;2;3;3;3;4;4;4N;N;N这样的数组。 下而将介绍利用公式来生成此类变换数组的用法: 例:下面的公式将按指定的数据重复次数来动态变换行号数据。得结果:1;1;1;2;2;2;3;3;3 公式:=ROUNDUP($K$21:$K$29/$J$21,0) 该公式比较简单,主要利用舍入运算,按要求构建等长度重复的序列,在生成工资条应用中很常用。 例:下面的公式将源数组中每个元素按指定要求进行扩展,得结果:“A“;“A“;“A“;“B“;“B“

    10、;“B“;“C“;“C“;“C“ 源数组:Data02=“A“;“B“;“C“ 构建序列:=ROW(INDIRECT(“1:“A“;“A“;“B“;“B“;“B“;“C“;“C“;“C“ 中中级级三三:等等比比例例构构造造一一维维循循环环数数组组。 在有些应用中,要求用户对现有的数据序列进行转换,构造新的序列供其他函数使用,循环数组就是其中之一。 例:如在生成工资条的应用中,每隔3行重复取得表头字段,因此要求用户根据自然数来重新构建循环数组。 公式:=MOD($K$35:$K$43-1,$J$35)+1 此类公式比较简单,关键是利用MOD函数的原理,对原数据进行取余数运算,由于当值为MOD函数

    11、整数倍时,取余结果为0, 因此,就必须采用先(1)后(1)的方式来实现。 上面的公式是直接引用数据区域来生成的循环数组,在实际运用中通常无数据源引用,则会让用户自己来进行构建源数据。 将上面数组利用前面初级的方法,公式如下: 源数组:DATA02=“A“;“B“;“C“ 公式:=LOOKUP(MOD(ROW(INDIRECT(“1:“B“;“C“;“D“;“E“;“F“;“G“;“H“;“I“ 转换后的二维内存数组(3行N列): =“A“,“B“,“C“;“D“,“E“,“F“;“G“,“H“,“I“ 二维数组行方向数组:=(ROW(INDIRECT(“1:3“)-1)*ROWS(DATA03

    12、)/3 二维数组列方向数组:=COLUMN(INDIRECT(“C1:C“3;6+1,2,3=1,2,3;4,5,6;7,8,9 通过LOOKUP函数进行查找,最终将一维数组按要求转换为二维数组。 1楼 12楼 数据数据验证 10#VALUE! 15#VALUE! 20#VALUE! 25#VALUE! 30#VALUE! 35#VALUE! 40#VALUE! 重复个数行号数据数据验证 311 21 31 42 52 62 73 83 93 重复个数行号数据验证1验证2 311A 22B 33C 41A 52B 63C 71A 82B 93C 数组结果 ABC 注注意意:通常情况下,如果数据

    13、源为引用,可以使用OFFSET函数来生成数组;如果数据源为数组,则不能使用OFFSET函数,但可以通过LOOKUP函数来实现, =LOOKUP(COLUMN(INDIRECT(“C1:C“3;2,下面的公式将实现将各个数值进行逐项累加得出新数组:2;5;7。 内存数组:Data04=COUNTIF(OFFSET($I$8:$K$8,ROW(INDIRECT(“1:“2;3与数组1,2,3逐个比较),再将比较结果转换为数值后, 提供给MMULT矩阵函数将“二维数组”和DATA04生成的“一维数组”进行矩阵运算后,横向加总得出累计结果。 此项技术在对数组中的数值进行累加中应用非常广泛,论坛中的sh

    14、uyee朋友对此深有体会,请见以下链接。 链接:制作特殊矩阵 内存数组:Data04=COUNTIF(OFFSET($I$8:$K$8,ROW(INDIRECT(“1:“2;3;1;2;3;1;2;3这样的序列?是的,本技巧即是对高级三的一种思路扩展解法介绍,以便让读者循序渐进地了解。 本技巧沿用高级二的两个内存数组名称进行实例介绍。 例:下面的公式将DATA04中的数值,按其中各个元素值个数使用循环序列进行排列,从而实现不定长扩展该一维数组,结果为:1;2;1;2;3;1;2。 内存数组:Data04=COUNTIF(OFFSET($I$8:$K$8,ROW(INDIRECT(“1:“3;6

    15、以外,如果再构造出从分界点起从1开始得出循环序列,则是问题的关键所在。 分界点名称:Data05=MMULT(-(ROW(INDIRECT(“1:“3;2,下面的公式将实现将各个数值进行逐项累加得出新数组:2;5;7。 此解法主要利用了行序号与列序号的比较判断法(数组1;2;3与数组1,2,3逐个比较),再将比较结果转换为数值后, 注意:对单元格的累加,主要是利用COUNTIF函数和SUMIF函数的三维引用来进行;数组的累加,主要是利用MMULT根据行列号大小比较法来实现累加结果。 想必大家还记得“中级二”的等长度变换一维数组吧?这里主要介绍在实际应用中,如何根据不同的重复个数值来构建内存数组

    16、。 例:下面的公式将DATA04中的数值,按其中各个元素值个数进行重复排列,从而实现不定长扩展该一维数组,结果为:2;2;3;3;3;2;2。 如果读者仔细观察结果数组,不难发现,该数组的分界点为1、3、6,那么如何来得出这个分界点的数组,就是本技巧的关键。 =MMULT(-(ROW(INDIRECT(“1:“2;3;1;2;3;1;2;3这样的序列?是的,本技巧即是对高级三的一种思路扩展解法介绍,以便让读者循序渐进地了解。 例:下面的公式将DATA04中的数值,按其中各个元素值个数使用循环序列进行排列,从而实现不定长扩展该一维数组,结果为:1;2;1;2;3;1;2。 即然此技巧是上一技巧的

    17、扩展,那么除了得到分界点1;3;6以外,如果再构造出从分界点起从1开始得出循环序列,则是问题的关键所在。 =MMULT(-(ROW(INDIRECT(“1:“2;32;3。 RowNo=ROW(INDIRECT(“1:“2;3;4;5;6;7;8;9;10。 RecNum=MMULT(N(ROW(INDIRECT(“1:“5;7。 方方法法一一:自然序号累计数 公式解法:10 =T(OFFSET(INDIRECT(“sheet“0;0;0;0;5;5;7;7;731 COLUMN函数主要利用“初级二”技巧,用于根据各表数据最大值生成水平数组。41 公式结果:=1,2,3,4,551 上述两个数

    18、组相加(注意方向不同),则得到10行5列的新数组。66 根据比较判断法,左、右两个公式结果对应比较,得出逻辑值数组。76 最后,根据MMULT函数的运算法则,将比较结果横向汇总得到D48:D57的循环序列。88 MMULT运算结果作为OFFSET函数的行偏移参数,最后得出要求的结果。98 108 最最后后特特别别提提醒醒:由由于于原原始始数数据据涉涉及及到到多多个个分分表表,因因此此无无法法使使用用LOOKUPLOOKUP函函数数来来取取得得结结果果,只只能能通通过过OFFSETOFFSET函函数数来来实实现现。 自然序号累计数最终序列公公式式结结果果数数据据验验证证 101A10 202B

    19、303C 404D 50两者比较汇总5E 651F 752G 871H 972I 1073J #N/A 最终序列公公式式结结果果数数据据验验证证 1A10 2B 3C 4D 两者相减5E 1F 2G 1H 2I 3J #N/A 2345 2345 2345 2345 2345 78910 78910 9101112 9101112 9101112 =T(OFFSET(INDIRECT(“sheet“&MATCH(RowNo,RecNum+1)&“!A1“),MMULT(N(RowNo=LOOKUP(RowNo-1,RecNum)+COLUMN(INDIRECT(“c1:c“&MAX(SData),0),ROW(INDIRECT(“1:“&MAX(SData)0),) MMULT(N(RowNo=LOOKUP(RowNo-1,RecNum)+COLUMN(INDIRECT(“c1:c“&MAX(SData),0),ROW(INDIRECT(“1:“&MAX(SData)0) LOOKUP函数段+COLUMN函数段结果 人人员员姓姓名名 A B C D E 人人员员姓姓名名 F G 人人员员姓姓名名 H I J

    展开阅读全文
    提示  163文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:内存数组之构建数组应用-ByGdliyy.xls
    链接地址:https://www.163wenku.com/p-455737.html

    Copyright@ 2017-2037 Www.163WenKu.Com  网站版权所有  |  资源地图   
    IPC备案号:蜀ICP备2021032737号  | 川公网安备 51099002000191号


    侵权投诉QQ:3464097650  资料上传QQ:3464097650
       


    【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。

    163文库