当前位置:文档之家› 6---PHP数组函数

6---PHP数组函数

6---PHP数组函数
6---PHP数组函数

(1)数组的概念与分类

定义:数组是php中最重要的数据类型之一,在php中的应用非常的广泛。因为php 是弱类型的编程语言,所以php中的数组变量可以存储任意多个、任意类型的数据。使用数组的目的,就是将多个相互关联的数据组织到一起,形成一个集合,作为一个单元使用达到批量数据处理的目的。

Php中数组的根据索引来分为关联数组和数字索引数组。如果一个数组中的索引全部为数字,那么数组就称为数字索引数组。如果数组中有一个索引为字符串那么数组就称为关联数组。

(2)Php中数组的定义

A.定义方式

(1)使用array()声明

可以用array()语言结构来新建一个数组。它接受任意数量用逗号分隔的键(key) => 值(value) 对,例如:

$arr = array("foo" => "bar", 12 => true);

echo $arr["foo"]; // bar

echo $arr[12]; // 1

?>

其中键可以为整型或字符串型,值可以为任何类型。如果对给出的值

没有指定键名,则取当前最大的整数索引值,而新的键名将是该值加

一。如果指定的键名已经有了值,则该值会被覆盖。

(2)使用[]声明

我们可以使用[]来定义和修改数组元素

$arr[] = 56;

Echo $arr[0];//56

?>

B.对数组元素的操作

(1)追加数组元素(就是在数组的末尾添加数组元素)

$数组名[键名]=值;

(2)更新数组元素

$数组名[键名]=新值;

(3)删除数组元素

Unset($数组名[键名])

(4)在数组头部添加数组元素

Array_unshift($arr, $value),在数组的开头插入一个元素。

(5)在数组的尾部添加数组元素

Array_push($arr, $value1, $value2..),将一个或多个元素压入数组栈的末尾(入栈),返回入栈元素个数。

(6)在数组头部删除元素

Array_shift($arr),将数组的第一个元素移出,并返回此元素

(7)在数组的尾部删除元素

Array_pop($arr);

(3)访问数组的内容

A、使用下标访问

Echo $数组名[键名]

B、使用for循环访问(本方法只适用于数字索引数组)

For($i=0;$i

Echo $arr[$i];

}

?>

C、适用foreach循环访问(适用于所有数组)

Foreach(数组名as $key=>$value){

Echo $key."=>".$value;//$key存储当前元素索引,$value存储当前元素}

(4)字符串与数组之间的转换

A.将数组转换为字符串

Implode($separator, $arr)将数组用$separator连接成一个字符串。

B.Explode($separator,$str)将字符串用$separator分割成一个数组。如果在$str中没有找到$separator,那么将会把整个字符串当成一个数组元素。

(5)多维数组的声明与遍历

A、PHP中可以定义多维数组。

$arr = array(

…key1?=> array("foo" => "bar", 12 => true);

);

Var_dump($arr[“key1”]);//输出数组array("foo" => "bar", 12 => true);

Echo $arr[“key1”][“foo”];//输出bar;

?>

B、

$arr=array(

array("香蕉","橘子","苹果"),

"白菜","萝卜"

);

foreach($arr as $value){

if(is_array($value)){

foreach($value as $value1){

echo $value1;

}

}else{

echo $value;

}

}

?>

C、九种系统预定义数组

$GLOBALS —引用全局作用域中可用的全部变量

$_SERVER —服务器和执行环境信息

$_GET — HTTP GET 变量

$_POST — HTTP POST 变量

$_FILES — HTTP 文件上传变量

$_REQUEST — HTTP Request 变量

$_SESSION — Session 变量

$_ENV —环境变量

$_COOKIE — HTTP Cookies

(6)数组相关处理函数

A、数组的键/值操作函数

Array_keys($arr),获得数组的键名。

Array_values($arr),获得数组的值。

In_array($value, $arr),检索$value是否在$arr中,返回布尔值。

Array_key_exists($key, $arr),检索数组$arr中,是否有$key这个键名。

Array_search($value, $arr), 检索$value是否在$arr中,若存在返回键名。

Array_reverse($arr, true),将一个数组逆向排序,如果第二个参数为true,则保持键名。

Array_flip($arr)交换数组的键和值

B、统计数组元素个数和唯一性

Count($arr)统计数组元素的个数

Array_count_values($arr)统计数组中所有值的出现次数

Array_unique($arr)移除数组中的重复值

C、数组的排序

通过值排序

Sort($arr),由小到大排序。

Rsort($arr),由大到小排序。

Usort($arr, function),使用用户自定义的比较函数排序。

通过键排序

Ksort($arr),由小到大排序

Rksort($arr),由大到小排序。

Uksort($arr, function),使用用户自定义的比较函数排序。

D、其他常用的函数

Array_rand($arr, $num),随机从数组中取得$num个元素。

Shuffle($arr),将数组的顺序打乱。

Array_sum($arr),对数组的所有元素求和。

extract() 将键名变量键值

c语言数组、函数主要内容

数组,顾名思义就是一组同类型的数。 一、数组的声明 声明数组的语法为在数组名后加上用方括号括起来的维数说明。本接仅介绍一维数组。下面是一个整型数组的例子: int array[10]; 这条语句定义了一个具有10个整型元素的名为array的数组。这些整数在内存中是连续存储的。数组的大小等于每个元素的大小乘上数组元素的个数。方括号中的维数表达式可以包含运算符,但其计算结果必须是一个长整型值。这个数组是一维的。 下面这些声明是合法的: int offset[5+3]; float count[5*2+3]; 下面是不合法的: int n=10; int offset[n]; /*在声明时,变量不能作为数组的维数*/ 二、用下标访问数组元素 int offset[10]; 表明该数组是一维数组,里面有10个数,它们分别为offset[0],offset[1],……offset[9];千万注意,数组的第一个元素下标从0开始。一些刚学编程的人员经常在这儿犯一些错误。offset[3]=25; 上面的例子是把25赋值给整型数组offset的第四个元素。 在赋值的时候,可以使用变量作为数组下标。 main() { int i,offset[10]; for(i=0;i<10;i++) scanf(%d,&offset[i]); for(i=9;i>=0;i--) printf(%d ,offset[i]); printf(\n); } 题目的意思是先输入10个整数,存入到数组中,然后反序输出。 三、数组的初始化 前面说了,变量可以在定义的时候初始化,数组也可以。 int array[5]={1,2,3,4,5}; 在定义数组时,可以用放在一对大括号中的初始化表对其进行初始化。初始化值的个数可以和数组元素个数一样多。 如果初始化的个数多于元素个数,将产生编译错误;如果少于元素个数,其余的元素被初始化为0。 如果维数表达式为空时,那么将用初始化值的个数来隐式地指定数组元素的个数,如下所式:int array[]={1,2,3,4,5}; 这也表明数组array元素个数为5。 main() {

第九节 数组函数英文

Array functions ArrayBsearch() ArrayCopy() ArrayCopyRates() ArrayCopySeries() rrayDimension() ArrayGetAsSeries() ArrayInitialize() rayIsSeries() ayMaximum() ayMinimum() Range() yResize() ArraySetAsSeries() ize() ort() int ArrayBsearch( double array[], double value, int count=WHOLE_ARRAY, int start=0, int direction=MODE_ASCEND) Returns a index to the first occurrence of value in the first dimension of specified array if found or nearest if it isn't. The function can't be used with string arrays and serial numeric arrays. Note: Binary search processes sorted arrays only. To sort numeric arrays use ort() functions. Parameters array[]- The numeric array to search. value- The value to search for. count- Elements count to search. By default search in the whole array. start- Starting index to search. By default search starts from first element. direction- Search direction. It can be any one of the following values: MODE_ASCEND searching in forward direction, MODE_DESCEND searching in backward direction. Sample datetime daytimes[]; int shift=10,dayshift; // All the Time[] timeseries are sorted in descendant mode ArrayCopySeries(daytimes,MODE_TIME,Symbol(),PERIOD_D1); if(Time[shift]>=daytimes[0]) dayshift=0; else

10个示例让你的VLOOKUP函数应用从入门到精通

10个示例让你的VLOOKUP函数应用从入门到精通 VLOOKUP函数是众多的Excel用户最喜欢和最常用的函数之一,因此介绍VLOOKUP 函数使用技巧的文章也特别多。在《Excel函数学习4:VLOOKUP函数》中,我们学习了VLOOKUP函数的语法及应用,在Excel公式与函数之美前面的系列文章中,我们又详细探讨了VLOOKUP函数的4个参数。 熟练掌握VLOOKUP函数的使用,是Excel必备技能之一。下面我们通过10个示例,进一步巩固VLOOKUP函数的使用技能。 一键直达>> Excel函数学习4:VLOOKUP函数 一键直达>> Excel公式与函数之美15:VLOOKUP函数的秘密 一键直达>> Excel公式与函数之美19:理解VLOOKUP函数第4个参数的真实含义 一键直达>> Excel公式与函数之美20:MATCH函数使VLOOKUP函数更灵活高效 一键直达>> Excel公式与函数之美21:INDIRECT函数使VLOOKUP函数实现多表查询 一键直达>>Excel公式与函数之美22:VLOOKUP函数查找技巧 概述 VLOOKUP函数最擅长在列中查找相匹配的数据,若找到匹配的数据,则在找到的数据所在行的右边从指定的列中获取数据。 示例1:查找郭靖的数学成绩 如图1所示,在最左边的列中是学生的姓名,在列B至列E中是不同科目的成绩。

图1 现在,我需要从上面的数据中找到郭靖的数学成绩。公式为: =VLOOKUP("郭靖",$A$3:$E$10,2,0) 公式有4个参数: ?“郭靖”——要查找的值。 ?$A$3:$E$10——查找的单元格区域。注意,Excel在最左列搜索要查找的值,本例中在A3:A10中查找姓名郭靖。 ?2——一旦找到了郭靖,将定位到区域的第2列,返回郭靖所在行相同行的值。数值2指定从区域中的第2列查找成绩。 ?0——告诉VLOOKUP函数仅查找完全匹配的值。 以上面的示例来演示VLOOKUP函数是如何工作的。 首先,在区域的最左列查找郭靖,从顶部到底部查找并发现在单元格A7中存储着这个值。

indirect函数的使用方法(间接引用)

indirect函数的使用方法 含义 此函数立即对引用进行计算,并显示其内容。当需要更改公式中单元格的引用,而不更改公式本身,请使用此函数,INDIRECT为间接引用。 语法 INDIRECT(ref_text,[a1]) Ref_text 为对单元格的引用,此单元格可以包含A1-样式的引用、R1C1-样式的引用、定义为引用的名称或对文本字符串单元格的引用。如果ref_text 不是合法的单元格的引用,函数INDIRECT 返回错误值#REF!或#NAME?。 如果ref_text 是对另一个工作簿的引用(外部引用),则工作簿必须被打开。如果源工作簿没有打开,函数INDIRECT 返回错误值#REF!。 a1 为一逻辑值,指明包含在单元格ref_text 中的引用的类型。 如果a1 为TRUE 或省略,ref_text 被解释为A1-样式的引用。 如果a1 为FALSE,ref_text 被解释为R1C1-样式的引用。 案例如下:

(案例一)工作簿内引用第一步 第二步

第三步 第四步

第五步 最终效果 (案例二)工作簿外引用 (1)步骤同案例一,只是引用在不同的sheet表里面 indirect(工作簿内).xlsx indirect(工作簿 外).xlsx indirect.xlsx

(2)老版excel用法 不同excel文件之间的引用案例 实例1 1:启动excel。 2:在Book1的Sheet1的单元格A1中键入“这是测试数据”。 在2003版及较早版的excel中,单击“文件”菜单上的“新建”,单击“工作簿”,然后点击“确定”。 3:在2007版中,单击按钮,单击“新建”,然后单击“创建”。 4:在Book2中,在Sheet1的单元格A1中键入Book1。 5:在Book2的Sheet1的单元格A2中键入Sheet1。 6:在Book2中,在Sheet1的单元格A3中键入A1。 7:保存这两个工作簿。 8:在2003版及较早版本的Excel中,在Book2的Sheet1的单元格B1中键入下面的公式:=INDIRECT(”’[“&A1&”.xls]”&A2&”’!”&A3) 在Excel 2007中,键入下面的公式: =INDIRECT(”’[“&A1&”.xls]”&A2&”’!”&A3) 该公式会返回“这是测试数据”。

Excel中数组函数的运用(excel函数)

Excel中数组公式非常有用,尤其在不能使用工作表函数直接得到结果时,数组公式显得特别重要,它可建立产生多值或对一组值而不是单个值进行操作的公式。 输入数组公式首先必须选择用来存放结果的单元格区域(可以是一个单元格),在编辑栏输入公式,然后按Ctrl+Shift+Enter组合键锁定数组公式,Excel将在公式两边自动加上花括号“{}”。注意:不要自己键入花括号,否则,Excel认为输入的是一个正文标签。 编辑或删除数组公式编辑数组公式时,须选取数组区域并且激活编辑栏,公式两边的花括号将消失,然后编辑公式,最后按Ctrl+Shift+Enter键。选取数组公式所占有的区域后,按Delete键即可删除数组公式。 下面介绍几个使用数组公式的例子。 1、有如图所示的工作表,需分别计算出两个班的男女生人数。 单元格B22中的公式为:=SUM((A2:A20="一1班")*(D2:D20="男")),再按Ctrl+Shift+Enter键。这个数组公式创建了一个条件求和,若在A2:A20中出现值“一1班”,则返回一个逻辑值“true”,值为“1”,若D2:D20中出现值“男”,也返回一个逻辑值“true”,值为“1”,则数组公式将与其相对

应的值相乘并累加,若是1*1=1,则加1,若是其他就返回1*0=0或是0*1=0,则累加零。(虽然数组A2:A20和D2:D20均在工作表中,但其相乘的数组A2:A20和D2:D20不在工作表中,因此必须使用数组公式)。 求女生一1班的女生人数也是一样,把公式改为:=SUM((A2:A20="一1班")*(D2:D20="女")),当然,要是求一2班或是其它班级的男女生数也是一样的道理,请大家自己领会。 2、在统计考试成绩的时候,有可能要统计出90—100分、80—89分、70—79分等各分数段的人数,并计算出占班级人数的百分比,这时也要利用数组公式更方便。同样以下面的工作表作为例子:要求出分数在70—80分之间的人数。 在B24中输入一个数组公式:=SUM((E2:E20>=70)*(E2:E20<=80)) ,再按Ctrl+Shift+Enter键。这个数组公式也创建一个条件求和,若是E2:E20当中的成绩>=70并且E2:E20当中的成绩<=80,返回1*1=1,sum就累加1,反之1*0=0或是0*1=0,就累加0。如图:

数组的常用函数

数组中常用的函数 Print_r() var_dump() 可以输出数组的下标和值。 Mysql_fetch_row() 取得一行作为枚举数组返回。 Count函数,进行数组中元素个数的采集。 函数的遍历: For语句循环遍历 Foreach语句遍历数组 foreach(array_expression as $value); 联合使用list each 和while循环进行遍历数组; Each函数,返回当前数组的键和值,返回四个值。0、1、key、value。 List函数 把数组中的一些值赋给一些变量。 List仅能用于数字索引的数组并假定数字索引是从0开始的。 Reset()将目前指针无条件的移至第一个索引位置。 Array array_values(array $a);返回数组中所有的值并且建立新的数字索引。 Array_keys() 返回键值 In_array() 返回值bool Array_search()如果成功则返回相应的键名 Isset()判断值是否存在 Array_key_exists()检查键名和索引是否存在于数组中。 Array_flip()反转数组中的键名和值 Array_reverse()将数组元素的顺序进行颠倒 Array_count_values()函数用于统计数组中所有值出现的次数 Array_unique函数用于删除数组中所有值得出现的次数。 使用回调函数处理数组的函数

Array_filter()用回调函数过滤数组中的元素。 Array_walk()对数组中的每个元素应用回调函数处理 Array_map()比上面的更加灵活,可以处理多个函数 数组的排序函数: Sort()按照值的大小进行从小到大的排序 Resort()按照值得大小进行从大到小的排序 Ksort()按照键名对数组进行从小到大的排序 Krsort()按照键名对数组进行从大到小的排序。这两个函数保留原数组的键值。 Asort()和arsort()是按照值的大小进行排序,和sort与rsort的功能差不多,但 是唯一的不同在于这个可以保留原来的键值。 自然排序法对数组排序 Natsort()按照数字和字母的顺序前后进行排序,会忽略键名。 Natcasesort()对数组进行不区分大小写的字母的排序。按照ASCII码的大小进行排序。 自定义的比较函数,使用回调函数进行大小的比较。 Usort() uksort()和uasort()这三个函数 Array_multisort()进行多维数组的排序。 拆分、合并、分解和接合数组。 Array_slice()函数,作用是在数组中根据条件取出一段值并返回。如果数组有字符串键,所返回的数组将保留键名。索引数组不会,除非第四个参数设置成true。 Array_splice()函数,选择数组中的一系列元素,但是不返回,而是删除它们并用其他的值来代替他们。如果提供四个参数,则之前选中的哪些元素将会被第四个参数指定 的数组进行取代。最后生成的数组将会返回。 Array_combine()函数,作用是通过合并两个数组来创建一个新的数组,其中一个数组是键名,另一个数组是键值。如果其中的一个数组为空,或者两个数组的元素个数不同,则该函数返回false。

EXCEL中数组函数

EXCEL中数组函数 Excel中数组公式非常有用,尤其在不能使用工作表函数直接得到结果时,数组公式显得特别重要,它可建立产生多值或对一组值而不是单个值进行操作的公式。 输入数组公式首先必须选择用来存放结果的单元格区域(可以是一个单元格),在编辑栏输入公式,然后按Ctrl+Shift+Enter组合键锁定数组公式,Excel将在公式两边自动加上花括号“{}”。注意:不要自己键入花括号,否则,Excel认为输入的是一个正文标签。 编辑或删除数组公式编辑数组公式时,须选取数组区域并且激活编辑栏,公式两边的花括号将消失,然后编辑公式,最后按Ctrl+Shift+Enter键。选取数组公式所占有的区域后,按Delete键即可删除数组公式。下面介绍几个使用数组公式的例子。 1、有如图所示的工作表,需分别计算出两个班的男女生人数。 单元格B22中的公式为:=SUM((A2:A20="一1班")*(D2:D20="男")),再按Ctrl+Shift+Enter键。这个数组公式创建了一个条件求和,若在A2:A20中出现值“一1班”,则返回一个逻辑值“true”,值为“1”,若D2:D20中出现值“男”,也返回一个逻辑值“true”,值为“1”,则数组公式将与其相对应的值相乘并累加,若是1*1=1,则加1,若是其他就返回1*0=0或是0*1=0,则累加零。(虽然数组A2:A20和D2:D20均在工作表中,但其相乘的数组A2:A20和D2:D20不在工作表中,因此必须使用数组公式)。 求女生一1班的女生人数也是一样,把公式改为:=SUM((A2:A20="一1班")*(D2:D20="女")),当然,要是求一2班或是其它班级的男女生数也是一样的道理,请大家自己领会。

php常用数组函数整理

'windows','server'=>'apache','language'=>'PHP'); // foreach ($arr as $key => $value) { // echo $key.":".$value."
"; //循环输出多维数组 // $arr=array( // '公关部'=>array( // array('包子','经理','1500'), // array('佳佳','职员','0') // ), // '广告部'=>array( // array('包子','经理','1500'), // array('佳佳','职员','0') // ), // '设计部'=>array( // array('包子','经理','1500'), // array('佳佳','职员','0') // ) // ); // foreach ($arr as $key => $value) { // echo "

// // // "; // foreach ($value as $key => $value) { // echo ""; // foreach ($value as $key => $value) { // echo ""; // } // echo ""; // } // echo "

".$key."的10月工资

姓名职务工资
".$value."

"; // } // each函数list函数 // $arr=array('1','2','3','4','5','6'); // $arr2=array('1'=>'包子','2'=>'2B','3'=>'逗比','4'=>'包子佳佳','5'=>'佳佳包子','6'=>'佳佳'); // $arr2=each($arr); // print_r($arr2); // list($key,$value)=$arr2; // echo $key.":".$value;

c语言学习笔记(数组、函数)

数组 2010-3-29 22:40 一维数组的定义和一维数组的引用 内存中一串连续的存储单元(变量),叫数组。指针移动和比较只有在一串连续的数组中才有意义。 当数组中每个变量只带一个下标时,为一维数组。 定义一个一维数组: 类型名数组名【常量表达式】如:int a[8]; 说明:①定义一个一维整型名为a的数组。 ②方括号中规定此数组有8个元素,(a【0】-a【7】),不存在a【8】这个元素。 ③a数组中每个元素均为整型,且每个元素只能存放整型。 ④每个元素只有一个下标,且第一个元素的下标总为0。 ⑤c编译程序,为a数组开辟8个连续存储单元。 3)在定义数组语句中,可以有多个数组说明符;它们用逗号隔开。 例:double a【22】,v【100】,u【5】,a,b,c;注:双精度型每个单元占用8个字节的存储空间。另外,也可以和普通变量一起定义。 用逗号分隔开。 2010-3-23 10:29 一维数组元素的引用2 1) 引用形式:数组名【下标表达式】可以是:常量,变量,表达式。 如:double x【8】则x【0】x【j】x【i+k】均合法 2) (1)一个数组元素实际上就是一个变量名,代表内存中的一个存储单元。我们可以把数组元素看做一个变量名来处理。 (2)一个数组不能整体引用,数组名中存放的是一个地址常量,它代表整个数组的首地址。当学习指针时,引用的变量的地址,就是变量中第一个字节的地址。数组的首地址也是它的第一个元素的第一个字节的地址,即它的首地址。 数组的首地址存放在数组名中。所以说,数组名就代表一个地址。数组名是一个地址值。 (3)在引用数组元素时,数组元素下标表达式必须是整数,下标表达式下限为0.系统并不自动检验数组元素下标是否越界,因此编程时要注意。 如:double a,b; int c[10]; a=2.0;b=3.0; 则a[i]; 是不合法的。 给数组赋初值时,如果所赋初值少于元素个数时,后面的元素补为0,字符补为’\0’可以通过赋初值来定义一个数组的大小。如:int a[]={0,0,0,0,0}; 相当于:a[5]={0};

用函数在Excel中从文本字符串提取数字

用函数在Excel中从文本字符串提取数字 Excel输入数据过程中,经常出现在单元格中输入这样的字符串:GH0012JI、ACVB908、华升12-58JK、五香12.56元、0001#、010258等。在进行数据处理时,又需要把其中的数字0012、908、12-58、12.56、0001提取出来。 如何通过使用Excel的工作表函数,提取出字符串中的数字? 一、问题分析 对于已经输入单元格中的字符串,每一个字符在字符串中都有自己固定的位置,这个固定位置都可以用序列数(1、2、3、……)来表示,用这些序列数可以构成一个可用的常数数组。 以字符串“五香12.56元”为例:序列数1、2、3、4、5、6、7、8分别对应着字符串“五香12.56元”中字符“五”、“香”、“1”、“2”、“.”、“5”、“6”、“元”。由序列数组成一个保存在内存中的新数组{1;2;3;4;5;6;7;8}(用列的形式保存),对应字符串中的字符构成的数组{“五”;“香”;“1”;“2”;“.”;“5”;“6”;“元”}。因此解决问题可以从数组着手思考。 二、思路框架 问题的关键是,如何用序列数重点描述出字符串中的数字部分的起始位置和终止位置,从而用MID函数从指定位置开始提取出指定个数的字符(数字)。 不难看出,两个保存在内存中的新数组: {“五”;“香”;“ 1”;“2”;“.”;“5”;“6”;“元”} {1;2;3;4;5;6;7;8} 数组具有相同大小的数据范围,而后一个数组中的每一个数值可以准确地描述出字符串中字符位置。 字符与序列数的对应关系如下表所示: 字符字符位置

五—— 1 香—— 2 1 —— 3 2 —— 4 . —— 5 5 —— 6 6 —— 7 元—— 8 所以解决问题的基本框架是: 用MID函数从字符串的第一个数字位置起提取到最后一个数字止的字符个数。即{=MID(字符串,第一个数字位置,最后一个字符位置-第一个字符位置+1}。其中“+1”是补上最后一个数字位置减去第一个数字位置而减少的一个数字位。 三、解决方案及步骤 假定字符串输入在A2单元格。 ⑴确定A2中字符串的长度。 即用LEN函数计算出A2中字符串中字符的个数,这个字符个数值就是字符串中最后一个字符在字符串中的位置:=LEN(A2)。 ⑵确认字符串中的每一个字符位置序列数组成的新数组。 用INDIRECT函数返回一个由文本字符串指定的引用:

Excel函数公式使用心得

Excel函数公式使用心得 excel表格的基本操作在论坛学习已有时日,常见新手求助后兴奋地拿着答案回往了,可是题目解决了,却由于不能明白公式的含义,碰到类苏光目自己还难以举一反三应用甚至连一点小改动都需要再次求助;对函数公式略知一二者因不明公式含义不易拓展思路……等等现象,虽大多数都能在原帖得到热心版主、坛友的解答,屡见妙答,但没见到的人又重新发帖问及类苏光目,不利于各种题目的综合汇总,遂发此帖作为公式解释使用!一、怎样学习函数公式这是很多新手最想知道的事,函数那么多,要从哪儿学起呢。我个人谈点小体会:1、“学以致用”,用才是目的——就是你要和将要用到的东西先学。比如你根本用不上财务、工程函数,没必要一下子就往看那些专业性很强的东西(嘿嘿,那些我基本不会),这样就轻易进门了。基本上函数用得最多的逻辑判定和查找和引用这2类函数了。先不要急于学会“数组”,自己常用函数的普通用法有个大致的用法了解之后再往看它的数组用法。2、善于搜索,搜一下,能找到更多的解答;善于求助发帖求助要描述清楚附上必要的图文并茂的附件,轻易得到解答,而且锻炼了自己的表述能力。3、除了“求助”式学习,还要“助人”式的学习,相信这一点是众多论坛高手们都经历过的。只要有时间,

少看一会儿电视少聊一会儿QQ少跟同事吹一会儿牛,到论坛上看看有没有别人不懂而你懂的,别怕出糗,是驴是马牵出来遛遛,相信你热心帮人不会被嘲笑的,况窃冬抛砖引玉,说不定你抛的对别人甚至对高手来说也是块宝玉呢。而,助人助己,有了越来越多的“求助”者给你免费提供了练习的机会,练得多了再综合各种思路的比较,自己就有了一些想法,你的水平肯定与日俱增。4、一口气吃不成胖子,多记一些学习的体会,日积月累,你就是高手了。二、如何解读公式我也谈点小体会吧:1、多看函数帮助。各个函数帮助里面有函数的基本用法和一些“要点”,以及对数据排序、引用类型等等的要求。当然,函数帮助并不囊括所有函数的细微之处,不然,也就不会有那么多求“解释”的帖了。2、庖丁解牛——函数的参数之间用逗号隔开。(别笑话,这是最最基本的基本功,单个函数没啥,组合多个函数的公式就是靠它了),这些逗号就是“牛”的关节,先把长公式大卸八块之后逐个看明白了再拼凑起来读就轻易多了。3、独孤九剑——开个玩笑啦,这里是取谐音“F9键”。F9键用来“抹黑”公式对解读尤其是数组公式有非常强的作用,不过假如公式所含数据区域太大(比如上百行)你可以改变一下区域。具体方法比如下面这个简单数组公式 =sum(if(A1:A3>0,B1:B3)),用鼠标在编辑栏(或F2)把把A1:A3>0部分“抹黑”,按下F9键,就看到

Excel VBA 中 Indirect 函数的使用

了解Indirect 函数 返回由文本字符串指定的引用。此函数立即对引用进行计算,并显示其内容。当需要更改公式中单元格的引用,而不更改公式本身,请使用函数 INDIRECT。 前半句还好理解,后半句有点儿拗口了,其实大可不必在此深究这一句话的意思。个人觉得下面其他内容更重要。 语法 INDIRECT(ref_text,a1) Ref_text为对单元格的引用,此单元格可以包含 A1-样式的引用、R1C1-样式的引用、定义为引用的名称或对文本字符串单元格的引用。如果 ref_text 不是合法的单元格的引用,函数 INDIRECT 返回错误值 #REF!。 ?如果 ref_text 是对另一个工作簿的引用(外部引用),则那个工作簿必须被打开。如果源工作簿没有打开,函数 INDIRECT 返回错误值 #REF!。 ?如果 ref_text 引用的单元格区域超出行限制 1,048,576 或列限制 16,384 (XFD),则 INDIRECT 返回 #REF! 错误。注释此行为不同于 Microsoft Office Excel 2007 之前的 Excel 版本,早期的版本会忽略超出的限制并返 回一个值。 A1为一逻辑值,指明包含在单元格 ref_text 中的引用的类型。 ?如果 a1 为 TRUE 或省略,ref_text 被解释为 A1-样式的引用。 ?如果 a1 为 FALSE,ref_text 被解释为 R1C1-样式的引用。 ?第1参数要求 【示例文件】 通读完毕,其实看来INDIRECT很简单,就两个参数,一个是代表引用的字符串,一个是选择引用样式。 首先,我们选择熟悉的A1引用样式来解读,即默认使用一个参数或者第2参数为TRUE或非0数值: Ref_text为对单元格的引用,此单元格可以包含 A1-样式的引用、R1C1-样式的引用、定义为引用的名称或对文本字符串单元格的引用。如果 ref_text 不是合法的单元格的引用,函数 INDIRECT 返回错误值 #REF!。

查找与引用函数使用详解

查找与引用函数使用详解 1.ADDRESS 用途:以文字形式返回对工作簿中某一单元格的引用。 语法:ADDRESS(row_num,column_num,abs_num,a1,sheet_text) 参数:Row_num是单元格引用中使用的行号;Column_num是单元格引用中使用的列标;Abs_num指明返回的引用类型(1或省略为绝对引用,2绝对行号、相对列标,3相对行号、绝对列标,4是相对引用);A1是一个逻辑值,它用来指明是以A1或R1C1返回引用样式。如果A1为TRUE或省略,函数ADDRESS返回A1样式的引用;如果A1为FALSE,函数ADDRESS返回R1C1样式的引用。Sheet_text为一文本,指明作为外部引用的工作表的名称,如果省略sheet_text,则不使用任何工作表的名称。 实例:公式“=ADDRESS(1,4,4,1)”返回D1。 2.AREAS 用途:返回引用中包含的区域个数。 语法:AREAS(reference)。 参数:Reference是对某一单元格或单元格区域的引用,也可以引用多个区域。 注意:如果需要将几个引用指定为一个参数,则必须用括号括起来,以免Excel 将逗号作为参数间的分隔符。 实例:公式“=AREAS(a2:b4)”返回1,=AREAS((A1:A3,A4:A6,B4:B7,A16:A18))返回4。 3.CHOOSE 用途:可以根据给定的索引值,从多达29个待选参数中选出相应的值或操作。 语法:CHOOSE(index_num,value1,value2,...)。 参数:Index_num是用来指明待选参数序号的值,它必须是1到29之间的数字、或者是包含数字1到29的公式或单元格引用;value1,value2,...为1到29个数值参数,可以是数字、单元格,已定义的名称、公式、函数或文本。 实例:公式“=CHOOSE(2,"电脑","爱好者")返回“爱好者”。公式“=SUM(A1:CHOOSE(3,A10,A20,A30))”与公式“=SUM(A1:A30)”等价(因为CHOOSE(3,A10,A20,A30)返回A30)。 4.COLUMN

EXCEL函数数组

{ ,IF((Sheet2!B1:B100)>10,ROW(Sheet2!B1:B100)," ")),ROW( )),1)), "",INDEX(Sheet2!$A:$B,SMALL(IF((Sheet2!B1:B100)<-10,ROW(Sheet2!B1:B100),IF((Sheet2!B1:B100)>10,ROW(Sheet2!B1:B100)," ")),ROW( )),1))} 作用:用于将其中将一个表格中符合一定条件下的数值自动统计到另一个表格中。上述函数数组是将表Sheet2中B列数值大于10或小于-10的数据列到函数所在表格当中。 ①ROW函数函数公式:ROW(reference) 解释:Reference 为需要得到其行号的单元格或单元格区域。上述函数中的ROW(Sheet2!$B$1:$B$100),即列出表Sheet2中B1到B100的行号,若单是该函数的数组(先选定一列的100个单元格,输入函数,按Ctrl+Shift+Enter),得到的一列结果就是1 2 3 4 …100.若是ROW(Sheet2!$B$3:$B$100),结果就是3~100 ②IF函数函数公式:IF(logical_test,value_if_true,value_if_false) 解释:logical_test是判定的条件,value_if_true是判定条件为正确时所返回的值,value_if_false是判定条件为错误时所返回的值。上述函数中的IF((Sheet2!B1:B100)<-10,ROW(Sheet2!B1:B100),IF((Sheet2!B1:B100)>10,ROW(Sheet2!B1:B100)," "),即若表Sheet2中B1到B100中有单元格的数值大于10或小于-10,就列出该单元格的行号,否则为空格。该IF函数中有个子IF函数,按函数顺序来解释就是判定Sheet2中B1到B100的值是不是小于-10,若是则列出它的行号,若不是再进行第二次判定Sheet2中B1到B100的值是不是大于10,是则列出它的行号,若不是就为空格。

Indirect 函数失效分析

INDIRECT函数应用失败的实例分析及解决问题:INDIRECT("'"&$A2&"'!B2")这个公式是什么意思?为什么我同事的一个Excel表格用了INDIRECT的这个公式是可以的,我套用了却不行? 答复:INDIRECT函数 1、引用 B2=预先输入的内容!B2 很明显,该公式引用了工作表“预先输入的内容”中B2单元格的内容。本工作表B2单元格的值与预先输入的内容!B2的值相同。 2、地址 “A1”、“B2”分别表示一个单元格的地址,“预先输入的内容!B2”也表示一个单元格地址,是一个指定工作表的单元格地址。 如果预先知道单元格地址,在公式中使用该地址可以引用它的值。 3、文本 天安门广场是一个地址,把“天安门广场”写在纸片上,写在手心,它是一串文本,根据这个文本,向导可以把你带到天安门广场。文本和地址是两回事,不容易把它说清楚,但聪明的你可能已经心领神会了,OK。 4、转换 有了文本,需要向导才能到达,也一定能到达指定的地址。工作表中单元格地址也一样,“A1”与A1是两回事,“Sheet2!F7”与Sheet2!F7是两回事,知道地址文本,你要引用这个单元格的值,需要一个向导,它就INDIRECT()函数。 5、要点 要点之一:INDIRECT()函数的第一个参数为一个文本,一个表示单元格地址的文本。

要点之二:Excel对单元格有两种引用样式,一种为A1引用样式,一种为R1C1引用样式。当使用A1引用样式时,INDIRECT()函数第二个参数须指定为TRUE或省略它。当使用R1C1引用样式时,INDIRECT()的第二个参数须指定为FALSE。 INDIECT("F5"),与INDIRECT("F5",TRUE),与INDIRECT("R5C6",FALSE)返回同一个单元格的引用。 有朋友问,什么时候要用INDIRECT()?为什么要用INDIRECT()? 举个简单的例子: 如果B2:B10单元格分别要引用Sheet2:Sheet10工作表的F6单元格,则公式分别为:B2=Sheet2!F6 B3=Sheet3!F6 …… B10=Sheet10!F6 这些公式不能使用填充的办法输入,只能手工一个一个编辑修改。用什么办法可以快速填充?首行写入公式: B2="Sheet"&Row(2:2)&"!F6" 拖动填充柄把公式向下填充,依次得到结果: Sheet2!F6 Sheet3!F6 …… Sheet10!F6 但它显示的只是单元格地址,不是单元格引用。如果引用这些单元格的值? 在上面公式中,加入INDIRECT()函数就是: B2=INDIRECT("Sheet"&Row(2:2)&"!F6")

excel函数Excel中高级讲义函数应用

Excel中高级讲义 目录 一.公式基础 (2) 二.统计、文本基本函数 (4) 三.日期、信息基本函数 (4) 四.逻辑函数 (4) 五.数据查阅函数 (4) 六.常用快捷键 (5) 七.常用编辑命令 (5) 八.格式(format)··················································错误!未定义书签。 九.关于打印及其他 ·············································错误!未定义书签。 十.财务函数 ......................................................错误!未定义书签。十一.数据库操作 ...................................................错误!未定义书签。十二.数据引用 (6) 十三.选择性粘贴(paste special) (7) 十四.数据的有效性(validation) (8) 十五.数据的保护(protection)................................错误!未定义书签。十六.图表基础 ......................................................错误!未定义书签。十七.双轴图表 ......................................................错误!未定义书签。十八.保存自定义图表类型( custom chart type) ............错误!未定义书签。十九.分类汇总与合并计算 .......................................错误!未定义书签。二十.数据透视表 ...................................................错误!未定义书签。二十一.高级函数 (8) 二十二.高级筛选与数据库函数 ....................................错误!未定义书签。二十三.自定义格式 ...................................................错误!未定义书签。二十四.列表功能 (9) 二十五.导入外部数据(import extenal data) (9) 二十六.使用窗体控件(forms)···································错误!未定义书签。二十七.方案、单变量求解 ··········································错误!未定义书签。二十八.创建模拟运算表(table)·································错误!未定义书签。二十九.使用规划求解(solver) ····································错误!未定义书签。三十.数据的统计分析 ·············································错误!未定义书签。三十一.宏代码的录制与学习 ·······································错误!未定义书签。

JAVA数组常用函数介绍及实例

JAVA 数组常用函数介绍及实例 import java.util.Arrays; public class TestArray {public static void main(String[]args){int i,j;int []a=new int []{1,3,5,7,9};System.out .print("arrays a are :"); for (i=0;i<5;i++)System.out .print(a[i]+"," );System.out .print("\n");

int key; key=Arrays.binarySearch(a,7);/*查找关键字序号*/ System.out.print("the index of7is a"+key);/*数字7在a[?]*/ System.out.print("\n"); int[]b; b=Arrays.copyOf(a,8);/*将数组a的值付给b,数组b长度为8,不足补0*/ System.out.print("arrays b are:"); for(i=0;i<8;i++) System.out.print(b[i]+","); System.out.print("\n"); System.out.print("a equals to b is"+Arrays.equals(a,b)); /*数组a与b是否相等?*/ System.out.print("\n"); int[]c=new int[5]; Arrays.fill(c,1);/*用1将数组c填满*/ System.out.print("arrays c are:"); for(i=0;i<5;i++) System.out.print(c[i]+","); System.out.print("\n"); int[]d=new int[]{1,8,2,7,3,6,4,5}; Arrays.sort(d);/*对数组d进行排序*/ System.out.print("arrays d after sorting:"); for(i=0;i<8;i++) System.out.print(d[i]+","); System.out.print("\n"); System.out.print("arrays d in strings:"+Arrays.toString(d)); /*对数组d以字符串形式输出*/ System.out.print("\n"); int[]e=new int[5]; System.arraycopy(d,3,e,0,5); /*将数组d复制给数组e,从d的第3个元素开始,复制至e的第0个元素,复制长度为5;d的第3个元素为4,复制长度为5,所以复制元素为:4,5,6,7,8,复制到e的第0个到第4个元素*/ System.out.print("arrays e copied by d([3]-[7]):"+Arrays.toString(e)); } }

INDIRECT函数的语法及使用实例

INDIRECT 函数的语法及使用实例 INDIRECT 函数返回由文本字符串指定的引用。 什么情况下使用INDIRECT 函数? INDIRECT 函数返回由文本字符串指定的引用,可以用于:创建开始部分固定的引用;创建对静态命名区域的引用;从工作表、行、列信息创建引用;创建固定的数值组。 INDIRECT 函数语法 INDIRECT 函数函数的语法如下: INDIRECT(ref_text,a1) ref_text 是代表引用的文本字符串 如果a1为TRUE 或者忽略,使用A1引用样式;如果为FALSE ,使用R1C1引用样式 INDIRECT 陷阱 INDIRECT 函数 函数是易失的,因此如果在许多公式中使用,它会使工作簿变慢。 如果INDIRECT 函数 函数创建对另一个工作簿的引用,那么该工作簿必须打开,否则公式的结果为#REF!错误。 如果INDIRECT 函数创建所限制的行和列之外的区域的引用,公式将出现#REF!错误。(Excel 2007和Excel 2010) INDIRECT 函数不能对动态命名区域进行引用 2007 如果显示200V的话,这里v是7的意思,下面也一样

示例1:创建开始部分固定的引用 在第一个示例中,列C和列E有相同的数字,使用SUM函数求得的和也是相同的。然而,所使用的公式稍微有点不同。在单元格C8中,公式为:=SUM(C2:C7) 在单元格E8中,INDIRECT函数创建对开始单元格E2的引用: =SUM(INDIRECT(“E2″):E7) 如果在列表的顶部插入一行,例如输入January的数量,列C中的和不会改变,但公式发生了变化,根据被插入的行进行了调整: =SUM(C3:C8) 然而,INDIRECT函数锁定开始单元格为E2,因此January的数量被自动包括在E列的汇总单元格中。结束单元格改变,但是开始单元格没有受影响。 =SUM(INDIRECT(“E2″):E8)

相关主题
文本预览
相关文档 最新文档