if mid mod hour minute secondiserror vlookup是什么函数

您当前所在位置: >
最全的excel函数的使用方法
大家知道excel函数的使用方法吗?下面我们就给大家详细介绍一下吧!我们积累了一些经验,在此拿出来与大家分享下,请大家互相指正。
公式是单个或多个函数的结合运用。
AND &与&运算,返回逻辑值,仅当有参数的结果均为逻辑&真(TRUE)&时返回逻辑&真(TRUE)&,反之返回逻辑&假(FALSE)&。 条件判断
AVERAGE 求出所有参数的算术平均值。 数据计算
COLUMN 显示所引用单元格的列标号值。 显示位置
CONCATENATE 将多个字符文本或单元格中的数据连接在一起,显示在一个单元格中。 字符合并
COUNTIF 统计某个单元格区域中符合指定条件的单元格数目。 条件统计
DATE 给出指定数值的日期。 显示日期
DATEDIF 计算返回两个日期参数的差值。 计算天数
DAY 计算参数中指定日期或引用单元格中的日期天数。 计算天数
DCOUNT 返回数据库或列表的列中满足指定条件并且包含数字的单元格数目。 条件统计
FREQUENCY 以一列垂直数组返回某个区域中数据的频率分布。 概率计算
IF 根据对指定条件的逻辑判断的真假结果,返回相对应条件触发的计算结果。 条件计算
INDEX 返回列表或数组中的元素值,此元素由行序号和列序号的索引值进行确定。 数据定位
INT 将数值向下取整为最接近的整数。 数据计算
ISERROR 用于测试函数式返回的数值是否有错。如果有错,该函数返回TRUE,反之返回FALSE。 逻辑判断
LEFT 从一个文本字符串的第一个字符开始,截取指定数目的字符。 截取数据
LEN 统计文本字符串中字符数目。 字符统计
MATCH 返回在指定方式下与指定数值匹配的数组中元素的相应位置。 匹配位置
MAX 求出一组数中的最大值。 数据计算
MID 从一个文本字符串的指定位置开始,截取指定数目的字符。 字符截取
MIN 求出一组数中的最小值。 数据计算
MOD 求出两数相除的余数。 数据计算
MONTH 求出指定日期或引用单元格中的日期的月份。 日期计算
NOW 给出当前系统日期和时间。 显示日期时间
OR 仅当所有参数值均为逻辑&假(FALSE)&时返回结果逻辑&假(FALSE)&,否则都返回逻辑&真(TRUE)&。 逻辑判断
RANK 返回某一数值在一列数值中的相对于其他数值的排位。 数据排序
RIGHT 从一个文本字符串的最后一个字符开始,截取指定数目的字符。 字符截取
SUBTOTAL 返回列表或数据库中的分类汇总。 分类汇总
SUM 求出一组数值的和。 数据计算
SUMIF 计算符合指定条件的单元格区域内的数值和。 条件数据计算
TEXT 根据指定的数值格式将相应的数字转换为文本形式 数值文本转换
TODAY 给出系统日期 显示日期
VALUE 将一个代表数值的文本型字符串转换为数值型。 文本数值转换
VLOOKUP 在数据表的首列查找指定的数值,并由此返回数据表当前行中指定列处的数值 条件定位
WEEKDAY 给出指定日期的对应的星期数。 星期计算
Excel 部分函数列表.
函数的步骤:①选中存放结果的单元格
②单击&=&(编辑公式)
③找函数(单击&三角形&形状按钮。或者直接输入函数名
⑤CTRL+回车键
①求和函数SUM()
②平均函数AVERAGE()
③排位函数RANK ()
例: Rank(A1:$A$1:$A$15)
行号和列号前面加上&$&符号 A叫行号。1或者15叫列号,表示单元格所在的位置 数据单元格在A列1号或者是A列15号
④最大值函数MAX ()
⑤最小值函数MIN ()
⑥统计函数 COUNTIF( )
计算满足给定单元格的数目
例:Countif ( A1:B5,&&60&)
统计分数大于60分的人数,注意,条件要加双引号,在英文状态下输入。
⑦单元格内容合并CONCTENATE()
将若干文字串合并到一个字符串中
⑧ RIGHT(A1,4)
提取字符串最右边的若干字符,长度为4位
⑨LEFT ( )
返回字符串最左边的若干字符
自文字的指定位置开始向右提取指定长度的字符串
11、重复函数 REPT()
单元格重量出现的次数。
返回电脑内部的系统日期与时间
13、MONTH( )
将序列数转换为对应的月份数
编者语:Excel是办公室自动化中非常重要的一款软件,很多巨型国际企业都是依靠Excel进行数据管理。它不仅仅能够方便的处理表格和进行图形分析,其更强大的功能体现在对数据的自动处理和计算,然而很多缺少理工科背景或是对Excel强大数据处理功能不了解的人却难以进一步深入。编者以为,对Excel函数应用的不了解正是阻挡普通用户完全掌握Excel的拦路虎,然而目前这一部份内容的教学文章却又很少见,所以特别组织了这一个《Excel函数应用》系列,希望能够对Excel进阶者有所帮助。《Excel函数应用》系列,将每周更新,逐步系统的介绍Excel各类函数及其应用,敬请关注!
----------------------------------
什么是参数?参数可以是数字、文本、形如 TRUE 或 FALSE 的逻辑值、数组、形如 #N/A 的错误值或单元格引用。给定的参数必须能产生有效的值。参数也可以是常量、公式或其它函数。
参数不仅仅是常量、公式或函数,还可以是数组、单元格引用等:
1.数组--用于建立可产生多个结果或可对存放在行和列中的一组参数进行运算的单个公式。在 Microsoft Excel有两类数组:区域数组和常量数组。区域数组是一个矩形的单元格区域,该区域中的单元格共用一个公式;常量数组将一组给定的常量用作某个公式中的参数。
2.单元格引用--用于表示单元格在工作表所处位置的坐标值。例如,显示在第 B 列和第 3 行交叉处的单元格,其引用形式为&B3&。
3.常量--常量是直接键入到单元格或公式中的数字或文本值,或由名称所代表的数字或文本值。例如,日期 10/9/96、数字 210 和文本&Quarterly Earnings&都是常量。公式或由公式得出的数值都不是常量。
---------------------------------------------
Excel的数据处理功能在现有的文字处理软件中可以说是独占鳌头,几乎没有什么软件能够与它匹敌。在您学会了Excel的基本操作后,是不是觉得自己一直局限在Excel的操作界面中,而对于Excel的函数功能却始终停留在求和、求平均值等简单的函数应用上呢?难道Excel只能做这些简单的工作吗?其实不然,函数作为Excel处理数据的一个最重要手段,功能是十分强大的,在生活和工作实践中可以有多种应用,您甚至可以用Excel来设计复杂的统计管理表格或者小型的数据库系统。
请跟随笔者开始Excel的函数之旅。这里,笔者先假设您已经对于Excel的基本操作有了一定的认识。首先我们先来了解一些与函数有关的知识。
一、什么是函数
Excel中所提的函数其实是一些预定义的公式,它们使用一些称为参数的特定数值按特定的顺序或结构进行计算。用户可以直接用它们对某个区域内的数值进行一系列运算,如分析和处理日期值和时间值、确定贷款的支付额、确定单元格中的数据类型、计算平均值、排序显示和运算文本数据等等。例如,SUM 函数对单元格或单元格区域进行加法运算。
函数是否可以是多重的呢?也就是说一个函数是否可以是另一个函数的参数呢?当然可以,这就是嵌套函数的含义。所谓嵌套函数,就是指在某些情况下,您可能需要将某函数作为另一函数的参数使用。例如图1中所示的公式使用了嵌套的 AVERAGE 函数,并将结果与 50 相比较。这个公式的含义是:如果单元格F2到F5的平均值大于50,则求F2到F5的和,否则显示数值0。
在学习Excel函数之前,我们需要对于函数的结构做以必要的了解。如图2所示,函数的结构以函数名称开始,后面是左圆括号、以逗号分隔的参数和右圆括号。如果函数以公式的形式出现,请在函数名称前面键入等号(=)。在创建包含函数的公式时,公式选项板将提供相关的帮助。
公式选项板--帮助创建或编辑公式的工具,还可提供有关函数及其参数的信息。单击编辑栏中的&编辑公式&按钮,或是单击&常用&工具栏中的&粘贴函数& 按钮之后,就会在编辑栏下面出现公式选项板。整个过程如图3所示。
二、使用函数的步骤
在Excel中如何使用函数呢?
1.单击需要输入函数的单元格,如图4所示,单击单元格C1,出现编辑栏
图4 单元格编辑
2.单击编辑栏中&编辑公式&按钮 ,将会在编辑栏下面出现一个&公式选项板&,此时&名称&框将变成&函数&按钮,如图3所示。
3.单击&函数&按钮右端的箭头,打开函数列表框,从中选择所需的函数;
图5 函数列表框
4.当选中所需的函数后,Excel 2000将打开&公式选项板&。用户可以在这个选项板中输入函数的参数,当输入完参数后,在&公式选项板&中还将显示函数计算的结果;
5.单击&确定&按钮,即可完成函数的输入;
6.如果列表中没有所需的函数,可以单击&其它函数&选项,打开&粘贴函数&对话框,用户可以从中选择所需的函数,然后单击&确定&按钮返回到&公式选项板&对话框。
在了解了函数的基本知识及使用方法后,请跟随笔者一起寻找Excel提供的各种函数。您可以通过单击插入栏中的&函数&看到所有的函数。
三、函数的种类
Excel函数一共有11类,分别是数据库函数、日期与时间函数、工程函数、财务函数、信息函数、逻辑函数、查询和引用函数、数学和三角函数、统计函数、文本函数以及用户自定义函数。
1.数据库函数--当需要分析数据清单中的数值是否符合特定条件时,可以使用数据库工作表函数。例如,在一个包含销售信息的数据清单中,可以计算出所有销售数值大于 1,000 且小于 2,500 的行或记录的总数。Microsoft Excel 共有 12 个工作表函数用于对存储在数据清单或数据库中的数据进行分析,这些函数的统一名称为 Dfunctions,也称为 D 函数,每个函数均有三个相同的参数:database、field 和 criteria。这些参数指向数据库函数所使用的工作表区域。其中参数 database 为工作表上包含数据清单的区域。参数 field 为需要汇总的列的标志。参数 criteria 为工作表上包含指定条件的区域。
2.日期与时间函数--通过日期与时间函数,可以在公式中分析和处理日期值和时间值。
3.工程函数--工程工作表函数用于工程分析。这类函数中的大多数可分为三种类型:对复数进行处理的函数、在不同的数字系统(如十进制系统、十六进制系统、八进制系统和二进制系统)间进行数值转换的函数、在不同的度量系统中进行数值转换的函数。
4.财务函数--财务函数可以进行一般的财务计算,如确定贷款的支付额、投资的未来值或净现值,以及债券或息票的价值。财务函数中常见的参数:
未来值 (fv)--在所有付款发生后的投资或贷款的价值。
期间数 (nper)--投资的总支付期间数。
付款 (pmt)--对于一项投资或贷款的定期支付数额。
现值 (pv)--在投资期初的投资或贷款的价值。例如,贷款的现值为所借入的本金数额。
利率 (rate)--投资或贷款的利率或贴现率。
类型 (type)--付款期间内进行支付的间隔,如在月初或月末。
5.信息函数--可以使用信息工作表函数确定存储在单元格中的数据的类型。信息函数包含一组称为 IS 的工作表函数,在单元格满足条件时返回 TRUE。例如,如果单元格包含一个偶数值,ISEVEN 工作表函数返回 TRUE。如果需要确定某个单元格区域中是否存在空白单元格,可以使用 COUNTBLANK 工作表函数对单元格区域中的空白单元格进行计数,或者使用 ISBLANK 工作表函数确定区域中的某个单元格是否为空。
6.逻辑函数--使用逻辑函数可以进行真假值判断,或者进行复合检验。例如,可以使用 IF 函数确定条件为真还是假,并由此返回不同的数值。
7.查询和引用函数--当需要在数据清单或表格中查找特定数值,或者需要查找某一单元格的引用时,可以使用查询和引用工作表函数。例如,如果需要在表格中查找与第一列中的值相匹配的数值,可以使用 VLOOKUP 工作表函数。如果需要确定数据清单中数值的位置,可以使用 MATCH 工作表函数。
8.数学和三角函数--通过数学和三角函数,可以处理简单的计算,例如对数字取整、计算单元格区域中的数值总和或复杂计算。
9.统计函数--统计工作表函数用于对数据区域进行统计分析。例如,统计工作表函数可以提供由一组给定值绘制出的直线的相关信息,如直线的斜率和 y 轴截距,或构成直线的实际点数值。
10.文本函数--通过文本函数,可以在公式中处理文字串。例如,可以改变大小写或确定文字串的长度。可以将日期插入文字串或连接在文字串上。下面的公式为一个示例,借以说明如何使用函数 TODAY 和函数 TEXT 来创建一条信息,该信息包含着当前日期并将日期以&dd-mm-yy&的格式表示。
11.用户自定义函数--如果要在公式或计算中使用特别复杂的计算,而工作表函数又无法满足需要,则需要创建用户自定义函数。这些函数,称为用户自定义函数,可以通过使用 Visual Basic for Applications 来创建。
以上对Excel函数及有关知识做了简要的介绍,在以后的文章中笔者将逐一介绍每一类函数的使用方法及应用技巧。但是由于Excel的函数相当多,因此也可能仅介绍几种比较常用的函数使用方法,其他更多的函数您可以从Excel的在线帮助功能中了解更详细的资讯。
Excel是办公应用中的常用软件,它不光有统计功能,在进行查找、计算时,Excel也有诸多的函数可以简化我们的操作。需要注意的是对中英文的处理是不大相同的,中文的一个字是按两个字节计算的,稍不注意就可能忽略这一点,造成错误。其实Excel函数中有专门针对双字节字符的函数。
让我们先来看看函数FIND与函数FINDB的区别。
FIND(find_text,within_text,start_num)
FINDB(find_text,within_text,start_num)
两个函数的参数相同。
作用:FIND函数用于查找文本(within_text)中的字符串(find_text),并从within_text的首字符开始返回find_text的起始位置编号。也可使用SEARCH查找字符串,但是,FIND和SEARCH不同,FIND区分大小写并且不允许使用通配符。
FINDB函数用于查找文本(within_text)中的字符串(find_text),并基于字节数从within_text的首字符开始返回find_text的起始位置编号。此函数用于双字节字符。
示例:在图1中,单元B2中的公式为&=FIND(&雨&,A2)&
单元格B3中的公式为&=FINDB(&雨&,A2)&
两个函数公式得出的结果不一样,这是因为在FIND函数中,&雨&位于&吴雨峰&串中的第二个位置,故返回&2&;而在FINDB函数中,每个汉字按2个字节算,所以&雨&是从第三个字节开始的,返回&3&。
同理:LEFT与LEFTB、RIGHT与RIGHTB、LEN与LENB、MID与MIDB、REPLACE与REPLACEB、SEARCH与SEARCHB的关系也如是。即不带字母B的函数是按字符操作的,而带字母B的函数是按字节进行操作的。
我们在编辑、修改、计算工作簿数据时,经常会用到许多汉字字符,如果使用以上带字母B的函数对汉字字符进行操作,就会很方便。
学习Excel函数,我们还是从&数学与三角函数&开始。毕竟这是我们非常熟悉的函数,这些正弦函数、余弦函数、取整函数等等从中学开始,就一直陪伴着我们。
首先,让我们一起看看Excel提供了哪些数学和三角函数。笔者在这里以列表的形式列出Excel提供的所有数学和三角函数,详细请看附注的表格。
从表中我们不难发现,Excel提供的数学和三角函数已基本囊括了我们通常所用得到的各种数学公式与三角函数。这些函数的详细用法,笔者不在这里一一赘述,下面从应用的角度为大家演示一下这些函数的使用方法。
一、与求和有关的函数的应用
SUM函数是Excel中使用最多的函数,利用它进行求和运算可以忽略存有文本、空格等数据的单元格,语法简单、使用方便。相信这也是大家最先学会使用的Excel函数之一。但是实际上,Excel所提供的求和函数不仅仅只有SUM一种,还包括SUBTOTAL、SUM、SUMIF、SUMPRODUCT、SUMSQ、SUMX2MY2、SUMX2PY2、SUMXMY2几种函数。
这里笔者将以某单位工资表为例重点介绍SUM(计算一组参数之和)、SUMIF(对满足某一条件的单元格区域求和)的使用。(说明:为力求简单,示例中忽略税金的计算。)
1、行或列求和
以最常见的工资表(如上图)为例,它的特点是需要对行或列内的若干单元格求和。
比如,求该单位2001年5月的实际发放工资总额,就可以在H13中输入公式:
=SUM(H3:H12)
2、区域求和
区域求和常用于对一张工作表中的所有数据求总计。此时你可以让单元格指针停留在存放结果的单元格,然后在Excel编辑栏输入公式&=SUM()&,用鼠标在括号中间单击,最后拖过需要求和的所有单元格。若这些单元格是不连续的,可以按住Ctrl键分别拖过它们。对于需要减去的单元格,则可以按住Ctrl键逐个选中它们,然后用手工在公式引用的单元格前加上负号。当然你也可以用公式选项板完成上述工作,不过对于SUM函数来说手工还是来的快一些。比如,H13的公式还可以写成:
=SUM(D3:D12,F3:F12)-SUM(G3:G12)
SUM函数中的参数,即被求和的单元格或单元格区域不能超过30个。换句话说,SUM函数括号中出现的分隔符(逗号)不能多于29个,否则Excel就会提示参数太多。对需要参与求和的某个常数,可用&=SUM(单元格区域,常数)&的形式直接引用,一般不必绝对引用存放该常数的单元格。
SUMIF函数可对满足某一条件的单元格区域求和,该条件可以是数值、文本或表达式,可以应用在人事、工资和成绩统计中。
仍以上图为例,在工资表中需要分别计算各个科室的工资发放情况。
要计算销售部2001年5月加班费情况。则在F15种输入公式为
=SUMIF($C$3:$C$12,&销售部&,$F$3:$F$12)
其中&$C$3:$C$12&为提供逻辑判断依据的单元格区域,&销售部&为判断条件即只统计$C$3:$C$12区域中部门为&销售部&的单元格,$F$3:$F$12为实际求和的单元格区域。
二、与函数图像有关的函数应用
我想大家一定还记得我们在学中学数学时,常常需要画各种函数图像。那个时候是用坐标纸一点点描绘,常常因为计算的疏忽,描不出平滑的函数曲线。现在,我们已经知道Excel几乎囊括了我们需要的各种数学和三角函数,那是否可以利用Excel函数与Excel图表功能描绘函数图像呢?当然可以。
三、常见数学函数使用技巧--四舍五入
在实际工作的数学运算中,特别是财务计算中常常遇到四舍五入的问题。虽然,excel的单元格格式中允许你定义小数位数,但是在实际操作中,我们发现,其实数字本身并没有真正的四舍五入,只是显示结果似乎四舍五入了。如果采用这种四舍五入方法的话,在财务运算中常常会出现几分钱的误差,而这是财务运算不允许的。那是否有简单可行的方法来进行真正的四舍五入呢?其实,Excel已经提供这方面的函数了,这就是ROUND函数,它可以返回某个数字按指定位数舍入后的数字。
在Excel提供的&数学与三角函数&中提供了一个名为ROUND(number,num_digits)的函数,它的功能就是根据指定的位数,将数字四舍五入。这个函数有两个参数,分别是number和num_digits。其中number就是将要进行四舍五入的数字;num_digits则是希望得到的数字的小数点后的位数。如图3所示:
单元格B2中为初始数据0.123456,B3的初始数据为0.234567,将要对它们进行四舍五入。在单元格C2中输入&=ROUND(B2,2)&,小数点后保留两位有效数字,得到0.12、0.23。在单元格D2中输入&=ROUND(B2,4)&,则小数点保留四位有效数字,得到0.6。
附注:Excel的数学和三角函数一览表
ABS 工作表函数 返回参数的绝对值
ACOS 工作表函数 返回数字的反余弦值
ACOSH 工作表函数 返回参数的反双曲余弦值
ASIN 工作表函数 返回参数的反正弦值
ASINH 工作表函数 返回参数的反双曲正弦值
ATAN 工作表函数 返回参数的反正切值
ATAN2 工作表函数 返回给定的 X 及 Y 坐标值的反正切值
ATANH 工作表函数 返回参数的反双曲正切值
CEILING 工作表函数 将参数 Number 沿绝对值增大的方向,舍入为最接近的整数或基数
COMBIN 工作表函数 计算从给定数目的对象集合中提取若干对象的组合数
COS 工作表函数 返回给定角度的余弦值
COSH 工作表函数 返回参数的双曲余弦值
COUNTIF 工作表函数 计算给定区域内满足特定条件的单元格的数目
DEGREES 工作表函数 将弧度转换为度
EVEN 工作表函数 返回沿绝对值增大方向取整后最接近的偶数
EXP 工作表函数 返回 e 的 n 次幂常数 e 等于 2.04,是自然对数的底数
FACT 工作表函数 返回数的阶乘,一个数的阶乘等于 1*2*3*...*该数
FACTDOUBLE 工作表函数 返回参数 Number 的半阶乘
FLOOR 工作表函数 将参数 Number 沿绝对值减小的方向去尾舍入,使其等于最接近的 significance 的倍数
GCD 工作表函数 返回两个或多个整数的最大公约数
INT 工作表函数 返回实数舍入后的整数值
LCM 工作表函数 返回整数的最小公倍数
LN 工作表函数 返回一个数的自然对数自然对数以常数项 e(2.04)为底
LOG 工作表函数 按所指定的底数,返回一个数的对数
LOG10 工作表函数 返回以 10 为底的对数
MDETERM 工作表函数 返回一个数组的矩阵行列式的值
MINVERSE 工作表函数 返回数组矩阵的逆距阵
MMULT 工作表函数 返回两数组的矩阵乘积结果
MOD 工作表函数 返回两数相除的余数结果的正负号与除数相同
MROUND 工作表函数 返回参数按指定基数舍入后的数值
MULTINOMIAL 工作表函数 返回参数和的阶乘与各参数阶乘乘积的比值
ODD 工作表函数 返回对指定数值进行舍入后的奇数
PI 工作表函数 返回数字 3.79,即数学常数 pi,精确到小数点后 15 位
POWER 工作表函数 返回给定数字的乘幂
PRODUCT 工作表函数 将所有以参数形式给出的数字相乘,并返回乘积值
QUOTIENT 工作表函数 回商的整数部分,该函数可用于舍掉商的小数部分
RADIANS 工作表函数 将角度转换为弧度
RAND 工作表函数 返回大于等于 0 小于 1 的均匀分布随机数
RANDBETWEEN 工作表函数 返回位于两个指定数之间的一个随机数
ROMAN 工作表函数 将阿拉伯数字转换为文本形式的罗马数字
ROUND 工作表函数 返回某个数字按指定位数舍入后的数字
ROUNDDOWN 工作表函数 靠近零值,向下(绝对值减小的方向)舍入数字
ROUNDUP 工作表函数 远离零值,向上(绝对值增大的方向)舍入数字
SERIESSUM 工作表函数 返回基于以下公式的幂级数之和:
SIGN 工作表函数 返回数字的符号当数字为正数时返回 1,为零时返回 0,为负数时返回 -1
相信大家已经学会excel函数的使用方法了吧!感谢大家对我们网站的支持!
相关推荐:
上一篇:下一篇:
本文相关阅读
高校查询分数线
考生所在地
北京天津辽宁吉林黑龙江上海江苏浙江安徽福建山东湖北湖南广东重庆四川陕西甘肃河北山西内蒙古河南海南广西贵州云南西藏青海宁夏新疆江西香港澳门台湾
<option value="
<option value="
<option value="
<option value="
<option value="
<option value="
<option value="
<option value="
<option value="
<option value="
<option value="
地区批次线查询
考生所在地
北京天津辽宁吉林黑龙江上海江苏浙江安徽福建山东湖北湖南广东重庆四川陕西甘肃河北山西内蒙古河南海南广西贵州云南西藏青海宁夏新疆江西香港澳门台湾
科目理科文科综合其他
<option value="
<option value="
<option value="
<option value="
<option value="
<option value="
<option value="
<option value="
<option value="
<option value="
<option value="
院校所在地北京天津辽宁吉林黑龙江上海江苏浙江安徽福建山东湖北湖南广东重庆四川陕西甘肃河北山西内蒙古河南海南广西贵州云南西藏青海宁夏新疆江西香港澳门台湾
其它中央部委
类型工科农业师范民族
层次本科高职(专科)
高考志愿③部曲
频道热门推荐
栏目最新更新001。用命令按扭打印一个sheet1中B2:M30区域中的内容?我想在Sheet2中制件一个命令按扭, 打印表Sheet1中的[B2:M30] 区域中的内容?解答:可以将打印区域设为b2:m30,然后打印,如:sheets("sheet1").printarea="b2:m30"sheets("sheet1").printout随手写的,你可以试试看。最简单的方法是:你先 录制宏,在录制宏过程中, 跑到页面设置里面, 把打印范围设置到你想要的范围。然后退出,停止录制宏, 你就可以得到一些代码!002。能否对一列中的文字统一去掉最后一个字?这些文字不统一,有些字数多,有些字数少。如何处理?我用{"&-}不行解答:=REPLACE(A1,LEN(A1),1," ")(在过渡列进行)003.能否根据单元格数值自动标记序号?各位大佬,一工作表有两列,&序号&及&金额&,能否将金额不等于0的行自动标上序号呢?如无现成的函数,应怎样设置?解答:Dim xuhao As Integerxuhao = 1Range("b2").SelectDo While Selection && ""
If Selection && 0 Then
ActiveCell.Previous.Value = xuhao
xuhao = xuhao + 1
ActiveCell.Offset(1, 0).Range("a1").SelectLoop004.求教自定义函数查询了一些自定义函数的例子都是单变量的。自定义函数能否建立&(As Range) As Interger&的函数,应该可以的,请各位大师赐教!请以&&x2&为例,万分感谢!(该用"For Each ...Next",就是还不知道如何引用Range中的每个值,请高手指点。)解答:参数使用Range而函数值为Integer是可以的用for each next循环思路也是对的,应该这样作:dim rg as rangedim ivalue as integerfor each rg in 参数区域ivalue=ivalue+rg.valuenext函数=ivalue大概意思如此,但没有加入防错处理,你自己先试试看,有问题在问。又问:试了一天,还是不行。Public Function x2(rng As Range) As IntegerDim rng As RangeDim ivalue As IntegerFor Each rng In rng.Rangeivalue = ivalue + rng.value ^ 2Nextx2 = ivalueEnd Function还望您的帮助。解答:Public Function SUMX2(rng As Range) As Integer
'你的错误有几项:
'1.函数名不能使用单元格位址的形式,否则在工作表中引用函数产生歧义,excel以为你引用单元格
'2.参数名与内部变量名冲突,rng本来是定义参数,在过程中不应出现重名变量
'3.rng已被定义为range对象变量,实际意义是一range引用,不能再用rng.Range引用,range的range属性是什么呢,没有吧
'函数我已经给你改了,基本能用
Dim rg As Range
Dim ivalue As Integer
For Each rg In rng
ivalue = ivalue + rg.value ^ 2
SUMX2 = ivalueEnd Function结果:调试成功!,非常感谢!005.判斷字符串的包含性用什么命 令&abcdefg&是否包含&abc&?解答:If VBA.InStr(1, "abcdefg", "abc") && 0 Then MsgBox "包含"006.利用背景实现套打的解决方案利用背景套打主要在于数据打印位置的确定,关键就是要使图片和实物之间的尺寸保持一致,这里我引入一个中间参照物&空白表(只有表格线的表)。具体操作以套打支票为例说明:
(1)将支票扫描成图片。
(2)打印一个空白表,使其与支票尺寸一致(需反复调整打印,也可行、列分别打印)。
(3)用&画图&的缩放功能调整图片大小,导入excel作背景,并使其与空白表大小一致(亦需反复调整导入,每次均用原图缩放,再另存为一个文件)。
(4)根据图片背景调整好单元格,填入数据后套打支票,效果是匹配度达99%。
(5)由于每次都是用原图缩放,故可取得缩放比例作为参数,再套打其他表格时,即可直接依参数缩放图片。
思路:因为空白表=支票,图片=空白表,所以图片=支票。
该方案已证实可行。007.宏放在worksheet和sheet及模块中各有什么区别?解答:放在thisworkbook或sheet中的宏与模块中的宏的主要区别是book或sheet中的过程函数只能是对象所专有的,不能在对象之外的任何地方调用(很显然不能声明Public过程,否则编译报错),而模块中声明Public过程函数可以在任何地方使用。008.关于excel问题在excel中如何用公式实现单元格内容递增?如:
AB100条件是无法确定储存格中的内容的前面有多少个字符,也就是,可能是2个,也可能是3个,或者更多。解答:為什麼要用公式呢?如 A1 = AB12 ,只要你向下拉的複制就可以。公式可參考 (條件是 AB12 不可以是 AB02, 處理 0 為首的數字 有困難,亦不可以只有英文字)A1 = AB12A2 = LEFT(A1,LEN(A1)-SUM(LEN(A1)-LEN(SUBSTITUTE(A1,{"0","1","2","3","4","5","6","7","8","9"},"")))) & RIGHT(A1,SUM(LEN(A1)-LEN(SUBSTITUTE(A1,{"0","1","2","3","4","5","6","7","8","9"},""))))+1(A1 = AB12公式=LEN(SUBSTITUTE(A1,{"0","1","2","3","4","5","6","7","8","9"},""))答案看到的是 4 ,但其實它回傳一個數組 {4,3,3,4,4,4,4,4,4,4}公式=LEN(A1)-LEN(SUBSTITUTE(A1,{"0","1","2","3","4","5","6","7","8","9"},""))答案看到的是 0 ,但其實它回傳一個數組 {0,1,1,0,0,0,0,0,0,0}公式=SUM(LEN(A1)-LEN(SUBSTITUTE(A1,{"0","1","2","3","4","5","6","7","8","9"},""))) 是將 {0,1,1,0,0,0,0,0,0,0} 加總= 2)009.给数组公式、VBA爱好者泼点冷水。数组公式、VBA威力巨大,在某些情形下提高效率非常明显,但各有其弱点。数组公式在大数据的时候,运行速度慢得无法忍受。比如,我日常需要编制得几个报表,原始数据有4-8万行,20&&30列,用数组根本无法操作。倒是利用数据透视表及其他一些组合功能,可谓神速。而VBA主要适用与日常比较固定的一些工作,对于一些临时性工作而言,缺乏灵活性,有杀鸡用牛刀之嫌疑。因此,根据我个人多年工作经验的体会,能熟练地灵活运用EXCEL基本功能和常用函数,就可以高效地完成大部分日常工作。我比较常用地东西有:数据透视表,数据&&有效性,ctrl+enter,index ,match,indirect,offset,if,vlookup,下拉列表框,绝对引用与相对引用,编辑&&选择性粘贴(数值、乘除、转置等),图表,条件格式,定义名称,分列,填充等。相反观点:数据透视表的计算是excel中内置的,同样的计算次数速度与数组公式是一样的,数组公式计算慢有两个因素,一是公式的编写不合理,另一个主要的原因是数组公式要对所有的引用数据进行计算,不管这些数据是否有效。VBA应该是最灵活的,在VBA中结合数组公式是可以达到最佳目的的,可用VBA先分析出数组公式要用的有效引用区域,在辅助表中进行数组计算(这个速度比用VBA直接分析计算要快得多),再将结果记入需要的单元格中,然后删除辅助表。其实你说的那些基本操作均可用VBA来做的,速度比手工做要快。010.从式子抽取一小式子的问题?b1=sum(a1:a10)+(10+20)/4,怎么从中取出(10+20)/4或其结果(即5)?用evaluate、get.cell都不能取出。解答:定义X=get.formula($B$1)得到B1的公式,再用MID、Right等函数截取011.or可以用数组应用?有一个工作表,数据上万行,其中一列是我要分析的数值,数值比如为:,,,0117中的任何一个。我要统计除,0115之外的数据。公式:{sum(if(or(sheet!A2:A",sheet!a2:a",sheet!a2:a"),1,0))},可是统计数字和我筛选相加的不一样,用if层层选,可以。请问原因?解答:数组公式中用*、+代替AND、OR{sum(if((sheet!A2:A")+(sheet!a2:a")+(sheet!a2:a"),1,0))}012.countif表达式的格式请问:我想找A1:A15中,值不为空的数目,用countif命令怎么写呢?解答1:应为counta(a1:a15)。countif为找a1:a15中,特定值的数目。解答2:=ROWS(A1:A15)*COLUMNS(A1:A15)-COUNTIF(A1:A15,"")=ROWS(A1:A15)*COLUMNS(A1:A15)-COUNTBLANK(A1:A15)解答3:直接用count(a1:a15)不是更好吗!013.删除字符串中某个字符的函数是什么?删除字符串中某个字符的函数是什么?举例:字符串&i love you a!"想删除a字面,应该用什么函数实现?还有就是在字符串中某个位置加入某个字符用什么函数呢?解答:如果有一定的规律,可以用Replace函数。例如:在A1单元格已有的字符串&123467"中加入个5变为&1234567&。可以这样做:=replace(a1,5,,"5")另一方法:用CONCATENATE函数。例如:a5单元格里的数据是&asdfhjkl",在另外的单元格了输入下面的函数CONCATENATE(LEFT(A5,4),"l",RIGHT(A5,4)),得到的结果就是&asdflhjkl",然后用&选择性粘贴,粘贴数值&粘贴回a5单元格就可以了。014.两表合一实例
问题提出:怎样把两个表(有相同的字段)怎样合并成一个表?
思路:用CountIf()函数对表1进行判断,如果其值为0,则表示没以重复,再将表2中和表1不重复的数据复制到表1中,从而实现两表合一。解题的方法:Sub dd()b = Sheets(2).[a1].CurrentRegion.Rows.Count + 1 &判断表2的行数For i = 3 To ba = Sheets(1).[a1].CurrentRegion.Rows.Count + 1 &判断表1的行数c = Sheets(2).[a1].CurrentRegion.Columns.Count  &判断表2的列数If Application.WorksheetFunction.CountIf(Sheets(1).[b1:b1000], Sheets(2).Cells(i, 2)) = 0 ThenSheets(2).Range(Sheets(2).Cells(i, 1), Sheets(2).Cells(i, c)).Copy Sheets(1).Cells(a, 1) &将表2中与表1不重复的数据复制到表1中End IfNextEnd Sub015.有没有办法把加载宏内置到Excel文件里?因为用了 Networkdays 函数,用到了分析工具库,但是还要发给别人,怎么办?解答:试试在"Thisworkbook"中写如下语句:Private Sub Workbook_Open()
Application.RegisterXLL Filename:= _
"Office安装路径/Office/Library/Analysis/ANALYS32.XLL"End Sub又问:Office安装路径怎么写呀?大家不一定都装在C盘上。解答:试试:Application.Path & "/Library/Analysis/ANALYS32.XLL"046.如何在userform上显示最大化与最小化按钮解答:利用APIOption ExplicitPrivate Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long) As LongPrivate Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As LongPrivate Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As LongPrivate Const GWL_STYLE = (-16)Private Const WS_THICKFRAME As Long = &H40000
'(恢复大小)Private Const WS_MINIMIZEBOX As Long = &H20000
'(最小化)Private Const WS_MAXIMIZEBOX As Long = &H10000
'(最大化)Private Sub UserForm_Initialize()
Dim hWndForm As Long
Dim IStyle As Long
hWndForm = FindWindow("ThunderDFrame", Me.Caption)
IStyle = GetWindowLong(hWndForm, GWL_STYLE)
IStyle = IStyle Or WS_THICKFRAME
IStyle = IStyle Or WS_MINIMIZEBOX '最小化
IStyle = IStyle Or WS_MAXIMIZEBOX '最大化
SetWindowLong hWndForm, GWL_STYLE, IStyleEnd Sub017.这个判断代码怎么写在A列输入日期,如果所输入日期为1月1日或5月1日则B列相关单元格+1,其他日期+0,这要用到什么函数?代码怎么写?谢谢!解答:用IF函数或用Worksheet_Change事件Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 1 Then
If IsDate(Target) Then
If (Month(Target) = 1 And Day(Target) = 1) Or (Month(Target) = 5 And Day(Target) = 1) Then
Target.Offset(0, 1) = Target.Offset(0, 1) + 1
End IfEnd Sub018.这个汇总表拆分程序怎么写,高手帮忙!要将总表里的数据按工作单位字段拆分成数个分表(每个单位一张表格,标签名字为工作单位)这个程序怎么编写,请高手指点。如果记录增多或字段增多(但拆分字段不增)这个程序又应该怎样改写,请高手稍微讲解一下,应为我不是为这一个表,还想用到别的工作表中,谢谢!解答:Sub Add_data(sht_Name)
'找出要取资料的区域
Dim i As Integer, j As Integer, row_d As Integer
Dim First_row As Integer, Last_row As Integer
On Error Resume Next
With Sheets("总表")
Do Until .Cells(i, 3).value = sht_Name
First_row = i
j = First_row
Do Until .Cells(j, 3) && sht_Name
Last_row = j - 1
Sheets("总表").Range(Cells(First_row, 1), Cells(Last_row, 12)).Select
Selection.Copy
Sheets(sht_Name).Select
Range("A2").Select
ActiveSheet.Paste
With ActiveSheet
row_d = .Range("A2").End(xlDown).Row + 1
Range("B" & row_d).value = "合计"
For i = 5 To 11
Cells(row_d, i).value = Application.WorksheetFunction.Sum(Range(Cells(2, i), Cells(row_d - 1, i)))
Sheets("总表").Activate
Range("A2").Select
End Sub020.这个公式应该怎么写?我想统计所有物料编码的第一个字符为a的库存数量的总和,这个公式应该怎么写?A列为物料编码,B列为库存数量。解答:=SUMIF($A:$A,"a*",$B:$B)021.样修改此宏?下面的宏是k版主帮我写的,从文件夹内汇入其他工作表表格。汇入范围为第五行、第L列。如汇入范围改为第三行、第R列。怎样修改此宏?Public Sub Feed_in2()Dim Row_dn, Row_dn1, i, j, k, m As IntegerDim Path1, Str1 As StringDim wb As WorkbookRow_dn = [B65536].End(xlUp).RowPath1 = Application.ActiveWorkbook.PathStr1 = ActiveWorkbook.Namek = 5
With Application
.EnableEvents = False
.ScreenUpdating = False
If Row_dn &= 5 Then
Range("B5:L" & Row_dn).ClearContents
With .FileSearch
.NewSearch
.LookIn = Path1
.FileType = msoFileTypeExcelWorkbooks
If .Execute &= 1 Then
MsgBox "files no found": Exit Sub
For m = 1 To .FoundFiles.Count
Str2 = Split(.FoundFiles(m), "/")
n1 = UBound(Str2)
Str2 = Str2(n1)
If Str2 && Str1 Then
Set wb = Workbooks.Open((Path1 & "/" & Str2), True, True)
Row_dn1 = wb.Sheets(1).[B65536].End(xlUp).Row
For i = 5 To Row_dn1
For j = 2 To 12
Workbooks(Str1).Sheets(1).Cells(k, j) _
= wb.Sheets(1).Cells(i, j)
wb.Close False
Set wb = Nothing
.EnableEvents = True
End Sub解答:除了B65536中的5,其余5都改成3;将Range("B5:L" & Row_dn)改成Range("B5:R" & Row_dn);将For j = 2 To 12改成For j = 2 To 17。022.怎样控制textbox的只读,要使textbox中的数据不能改变(删除或修改),在属性里我没有找到有相关的方法吗?解答:Textbox.Enabled = False,直接修改控件属性都行。又问:这样还不行,因为Textbox在显示上就灰显了,我想只让它不可改变值,在显示上还是原来的形式。解答:那就用Label代替,设置BackColor和SpecialEffect属性。023.请教个小问题!你好:我录制了个删除工作表的宏,但每次运行后,总出现确认删除提示框,请问该如何编写,直接默认删除,不在作确认呢?解答:Application.DisplayAlerts = False代码为:Sub Dell()
Dell Macro
DC.Direct 记录的宏
Application.DisplayAlerts = False
Sheets("Sheet2").Select
ActiveWindow.SelectedSheets.Delete
ActiveWorkbook.Save
Application.DisplayAlerts = True
End Sub024.小知识:当垂直滚动条滚动到无法显示1-3行时,冻结窗口,1-3行就好像被隐藏了,但是取消隐藏也不行。025.选A1后,自动显示B1内容,有无方法实现。有A1列和B1两列,*D1处做了数据-有效性-序列-选择A1~A9*D1选择A1时,要求在G1中自动跳出B1的内容, 选A2时,自动跳出B2的内容*余此类推。解答:G1公式:=Vlookup(D1,A1:B9,2,0)又问:假设,有C列中也有数据,我要在G1中显示C列中的数据,该怎么算?解答:G1公式:=Vlookup(D1,A1:B9,3,0)026. 向上填充的快捷键是什么?我只会向下填充的快捷键,向上-向左-向右的都是什么呢?解答:向上-Alt+E,I,U。向左-Alt+E,I,L。向右-CTRL+R027.下方单元格上移,包含该单元格的公式不要变化哪位高手帮帮忙!我试验了很久也没找到解决的办法:能不能做到删除单元格以后,下方单元格上移,包含该单元格的公式不要变化。或者是:按住shift拖动单元格,使两个单元格互相交换位置以后,包含该单元格的公式不要发生变化。注意,用加$的办法是不能解决这个问题的,如公式改为:=SUM($A$1:$A$9),经上述操作后,结果还是一样。解答:=SUM(INDIRECT("A1:A10")) 新问题:但是还有一个问题:我这一列有2000多个数据,似乎不能通过拖动的办法将公式复制200遍,达到每10个1求和的结果。解答:=IF(MOD(ROW(),10)&&0,"",SUM(OFFSET(INDIRECT(ADDRESS(ROW(),COLUMN(),)),,-1,-10,)))028.一列中删除重复数据的方法例如在C2:C500中有重复数据。在D2中 =COUNTIF(C2:$C$100,C2) 计算出 C2在此列中的出现次数,然后复制公式到整列,最后删除在D列中大于1的行即可.029.哪为大侠来帮忙关于VBA的问题小弟想同时对excel工作簿下的几个工作表进行插入图表的操作!这几个工作表中已经在相同的位置区域内输入了数据. 语言如下: 运行显示 "下表越界" (下划线的地方)。请问高手又什么办法解决,或者可以用其它的方法。sub biaoge()for a = 1 to 3sheets("sheet(a)").select
charts.add
activechart.applycustomtype charttype:=xlbuiltin, typename:="两轴线-柱图"
activechart.setsourcedata source:=sheets("sheet (a)").range("a1:j3"), plotby:=xlrows
activechart.location where:=xllocationasobject, name:="sheet(a)"
activechart.hasdatatable = true
activechart.datatable.showlegendkey = true
activechart.legend.select
selection.delete next aend sub 解答:sheets("sheet(a)").select是错的。可以用sheets("Sheet_Name").select。029.比较大小例如512.03,我用函数取了这个数的最后两个数03用他与10比较,结果总是显示03&10,不知道是什么原因,请高手指点,谢谢!!!解答:取后两位数结果是文本型,对比可用right(a1,2)*1&10或者用:value(right(a1,2))&10也可030.讨论:用RANGE和CELLS选择单元格EXCEL的基本元素就是单元格,第一步就是要学会操作单元格了,列举两种方式。SUB RANGE() &用RANGE选择B5单元格 RANGE(&B5&).SELECTEND SUBSUB CELLS() &用CELLS选择B5单元格 CELLS(5,2).SELECTEND SUBRANGE编程时无法变化,CELLS可以通过变量选择单元格。回应1:RANGE 一样方便, 甚至更方便. 实际使用中可以用一变量srArea="B" & iRANGE(srArea).SELECTsrArea="金额" ' 一命名为 金额 的单元格/区域RANGE(srArea).SELECT回应2:我觉得各有长处,如果有变量需要循环判断,用Cells相对比较简单,但是有时候固定区域的,命名后用Range更灵活。回应3:没错. 帮助中也是推荐 CELL 的.灵活性来讲, RANGE 要强多了, 而且使用时可以通过 . 提取符快速读取它的属性和方法.另外, 对于可变更的工作表, 用 RANGE 来操作命名区域将增加程序的弹性.比如工作中插入一行/列, VBA 中用 CELL 就可能导致运行操作错误, 而 RANGE(srArea) 作为指定区域, 可适应单元格的这类变更.031.关于FileSystemObject的引用请问各路高手,有人可以为我指点一下filesystemobject引用的详细说明,特别是fileexists方法的实例。  解答:Sub testing()
'先判断文件是否存在,是则删除之
Dim strmyfile As String
strmyfile = "d:/book1.xls"
If filetoFind(strmyfile) Then
Kill strmyfile
End SubFunction filetoFind(fileName As String) As Boolean
Dim fsobj As Object
Set fsobj = CreateObject("Scripting.FileSystemObject")
If fsobj.fileexists(fileName) Then
filetoFind = True
End IfEnd Function在帮助文件中是这样描述的:FileSystemObject 对象
描述:提供对计算机文件系统的访问。语法:Scripting.FileSystemObject说明:下面的代码举例说明了如何使用 FileSystemObject 返回一个 TextStream 对象,该对象是可读并可写的:Set fs = CreateObject("Scripting.FileSystemObject")Set a = fs.CreateTextFile("c:/testfile.txt", True)a.WriteLine("This is a test.")a.Close在上面列出的代码中,CreateObject 函数返回 FileSystemObject (fs)。CreateTextFile 方法接着创建文件作为一个 TextStream 对象(a),而 WriteLine 方法则向创建的文本文件中写入一行文本。Close 方法刷新缓冲区并关闭文件。FileExists 方法描述:如果指定的文件存在,返回 True,若不存在,则返回 False。语法:object.FileExists(filespec) FileExists 方法语法有如下几部分:部分 描述:object 必需的。始终是一个 FileSystemObject 的名字。 filespec 必需的。要确定是否存在的文件的名字。如果认为文件不在当前文件夹中,必须提供一个完整的路径说明(绝对的或相对的)。 032.excel时间函数2(菜鸟教程)这一贴说明时间函数,time,hour,minute,second的用法。time的计算过程:time(hour,minute,second),time地返回值为0-0.之间的数值,它的计算方法如下:hour的范围:0-24minute的范围:0-59second的范围:0-59在满足以上输入范围的时候:time(hour,minute,second)=hour/24+minute/(24*60)+second/(24*60*60)。如:tiem(05,34,29)=0.593.如何计算的呢?5/24+34/(24*60)+29/(24*60*60)=0.333+0.1111+0..593。在帮助文件里还有hour,minute,second不再范围情况,这时候,如何计算的呢?1、second/60,除的整数为minute,mod(second,60)为second2、minute/60,除的整数为hour,mod(minute,60)为minute3、hour/24,mod(hour,24)为hour最后再用hour/24+minute/(24*60)+second/(24*60*60)计算。帮助中的例子:time(0,0,148如何算的呢?
mod(time(0,0,2000)=time(0,33,20)=0/24+33/(24*60)=20/(24*60*60)=0.023148呵呵,其实没有什么用,会用这个函数就可以可,如何算的就不必在意了!!!033.年月日的问题
EXCEL表格中年月有时候输入不对,(早已记录过大量数据,改写麻烦。)比如198001,意思是1980年1月,可是设置单元格式日期只有年月日,没有年月。怎么做?解答:插入一辅助列,假设198001在E1,F=IF(MID(E1,5,1)="0",LEFT(E1,4)&"年"&RIGHT(E1,1)&"月",LEFT(E1,4)&"年"&RIGHT(E1,2)&"月")试一下。又问:198001能否改为1980-1?或者1980年1月改为1980-1?解答:f1=IF(MID(e1,5,1)="0",LEFT(e1,4)&"-"&RIGHT(e1,1),LEFT(e1,4)&"-"&RIGHT(e1,2))或者更简单一些:=LEFT(A6,4)&"-"&value(RIGHT(A6,2))(数据在a6单元格)也可以这样:=date(mid(e1,1,4),mdi(e1,5,2),1)这样会显示为,然后可以随意设置成相应的日期格式。034.请帮忙解释一个公式=LEFT(A1,(SEARCHB("?",A1)-1)/2)这是我在站内过去的帖子里看到的一个公式,用于提取前文后数中的文字部分,非常好用。请教这个公式中最后两步的意义是什么?另外,当A1是&1234个&的格式时,当如何提取其中的文字呢?解答:1、公式的含义是:查找第一个半角字符出现的位置[SEARCHB("?",A1)],减去1后除以2,就是文字的字符数目,将其提取出来。2、=RIGHT(A1,LENB(A1)-LEN(A1))035.关于宏和程序我现在已经用excel编了一个较完整的程序,并且能够给源程序加密码,实现"工程不可见",但是我发现在vba编辑环境 里还能看到我的大部分宏,虽然说不能编辑,但能运行,请问如何隐藏起来。解答:不用模块函数,重写成类或放到workbook中,或在程序中直接将菜单宏隐藏。或者:新建类,然后将模块中的程序拷贝到类,提示:找不到宏。又问:我现在已经能做到屏蔽调alt+F11键了,虽然不能看到我的宏程序,但是依然可以运行我的宏,请高手做答,如何隐藏起我的宏。解答:在宏的声明前加Private。036.请教多条件求和的问题大家好,我是个新手,想向大家请教指定多条件求和的函数公式。譬如,有一张工作表有4列标题:品名,数量,日期,签收人。若我想求,符合条件为:品名为A,日期为Y,签收人为B的数量之和。该用那个函数公式?解答:=IF(A2="a",IF(B2="03.10.22",COUNTIF(D:D,D2),"时间无"),"无")A列品名,B列日期,C列数量,D列签收人用if 嵌套。或者:数组公式{=sum((a1:a100=品名)*(c1:c100=日期)(d1:d100=签收人)*(B1:B100))}也可以:{=SUM((($A$1:$A$100)="a")*(($B$1:$B$100)="03.10.22"))}037.请教关于星期的计算?如何通过输入一个日期:即可得到该天在本年度的第几个星期?解答:使用 WEEKNUM 函数。如:=WEEKNUM(A1)=WEEKNUM(TODAY())或者:日期在a1=INT((A1-DATE(YEAR(A1),1,0)+WEEKDAY(DATE(YEAR(A1),1,0),1)+7-WEEKDAY(A1,1))/7)也可以用VBA:'under the iso standard, a week always begins on a monday, and ends on a sunday.'the first week of a year is that week which contains the first thursday of the year,'or, equivalently, contains jan-4.'public function isoweeknum(anydate as date, _
optional whichformat as variant) as integer'' whichformat: missing or && 2 then returns week number,'
= 2 then yyww'
dim thisyear as integer
dim previousyearstart as date
dim thisyearstart as date
dim nextyearstart as date
dim yearnum as integer
thisyear = year(anydate)
thisyearstart = yearstart(thisyear)
previousyearstart = yearstart(thisyear - 1)
nextyearstart = yearstart(thisyear + 1)
select case anydate
case is &= nextyearstart
isoweeknum = (anydate - nextyearstart) / 7 + 1
yearnum = year(anydate) + 1
case is & thisyearstart
isoweeknum = (anydate - previousyearstart) / 7 + 1
yearnum = year(anydate) - 1
isoweeknum = (anydate - thisyearstart) / 7 + 1
yearnum = year(anydate)
end select
if ismissing(whichformat) then
exit function
if whichformat = 2 then
isoweeknum = cint(format(right(yearnum, 2), "00") & _
format(isoweeknum, "00"))
end ifend functionpublic function yearstart(whichyear as integer) as datedim weekday as integerdim newyear as datenewyear = dateserial(whichyear, 1, 1)weekday = (newyear - 2) mod 7if weekday & 4 then
yearstart = newyear - weekdayelse
yearstart = newyear - weekday + 7end ifend function038.请教日期的转换问题我的程序里有这样一段代码:Dim str As Datestr=nowSheet1.Cells(1, "A") = str运行后在单元格里显示
15:19:45但我想让它显示成如下的格式:2003年11月13日(小时,分,秒去掉)我用year(str)想单独取得年的值,但显示
0:00:00请问有什么好的方法可以实现这种转换吗?解答:Dim str As Datestr=nowSheet1.Cells(1, "A") = format(str,"yyyy年mm月dd日")039.如何用vba实现删除最右边的字符1月、2月、3月...........10月、11月、12月请问如何用vba实现把&月&删除 只提取:1、2、3.......10、11、12。解答:Sub abc()Dim a As IntegerDim b As StringDim c As Stringc = ""For a = 1 To Len(b)
c = c & IIf(Mid(b, a, 1) && "月", Mid(b, a, 1), "")NextMsgBox cEnd Sub或者:A1= 1月、2月、3月、4月、5月、6月、7月、8月、9月、10月、11月、12月[A1] = Application.WorksheetFunction.Substitute([A1], "月", "")040.请问如何定义相对定位的名称我想定义一个各个工作表(一个工作薄内)使用的名称。该名称为相对定位,如我在sheet1表的B2中该名称是 sheet1 表的A2,我在sheet2表的B2中时该名称是sheet2表的A2单元格,可我在定义名称时它总是加上工作表名。解答:=offset(indirect(address(row(),column(),)),,-1,,)041.请问如何替换?有很多条这样的记录:******(212),****(315),*********(658)。如何只保留括号里的数字,*号是汉字。解答:设数据在A30单元格 =MID(A30,FIND("(",A30)+1,LEN(A30)-FIND("(",A30)-1)IF 你的数据都是要求记录中最后面的三码数字可以试着用简单的方式解决
=RIGHT(A1,3)又问:我是要合并,你却要拆分!你能告诉我怎样将两列:即&数字列&和&文字列&合并成一列?解答:试试这个:Sub Join() '将选择的行几个单元格数值合并到一列的一个单元格
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
On Error Resume Next
Dim iRows As Long, mRow As Long, ir As Long, ic As Long
iRows = Selection.Rows.Count
Set lastcell = Cells.SpecialCells(xlLastCell)
mRow = lastcell.Row
If mRow & iRows Then iRows = mRow 'not best but better than nothing
iCols = Selection.Columns.Count
For ir = 1 To iRows
newcell = Trim(Selection.Item(ir, 1).value)
For ic = 2 To iCols
trimmed = Trim(Selection.Item(ir, ic).value)
If Len(trimmed) && 0 Then newcell = newcell & " " & trimmed
Selection.Item(ir, ic) = ""
Selection.Item(ir, 1).value = newcell
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = TrueEnd Sub042.求教合并单元格区域的连续读取方法求教:1、如何选定连续的合并单元格区域;2、如何连续读取合并单元格中的内容。解答:Public Sub adre()Dim cell As RangeDim iRow_dn1 As IntegeriRow_dn1 = [B65536].End(xlUp).RowSet av1 = Range("B3:B" & iRow_dn1)
For Each cell In av1
If cell && "" Then
MsgBox cell.Address & " 等於 " & " ※ " & cell & " &"
End Sub043.求一公式sheet1
生产机器名
生产机器名2
SHEET1是一张源资料表,而SHEET2是一个生产计划表的一部分。请问:
我求SHEET2中的A列中产品代码相对应的C列的&生产机器名&。
这个公式怎么写?解答:Sheet2的C2格公式为:=VLOOKUP($A2,SHEET1!A:C,3,0)044.讨论一下取最后一个单词的方法例如现在在A1中有一句&M. Henry Jackey&,如何用函数将最后的一个单词取出来呢? 当然,我们现在是知道最后的单词是6个字符,可以用Right(A1,6)来计算,但如果最后一个单词的字符数是不定的呢,如果做呢? 请大家试下有几种方法。解答:方法1、用一列公式填充=IF(LEFT(RIGHT($A$1,ROW()),1)=CHAR(32),RIGHT($A$1,ROW()-1),&&)方法2、=MID(A1,FIND("
*",SUBSTITUTE(A1," ","
*",LEN(A1)-LEN(SUBSTITUTE(A1," ",""))))+1,LEN(A1)-FIND(" ",A1))方法3、用自定义函数当然方便,而且简单。Function xx(n As String) As String
n = Application.Trim(n)
lastone = Right(n, Len(n) - InStrRev(n, " "))
xx = lastoneEnd Function方法4、=IF(ISERROR(SEARCH("",TRIM(LEFT(B1)))),RIGHT($A$1,ROW()),"")拖出来的第一个字符就行。方法5、{=RIGHT(A1,LEN(A1)-MAX((MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1)=" ")*ROW(INDIRECT("1:"&LEN(A1)))))}嫌长就(假定最长100字符){=RIGHT(A1,LEN(A1)-MAX((MID(A1,ROW(1:100),1)=" ")*ROW(1:100)))}045.如何获取工作表中某一列有多少条记录?因为每一列的的记录都不一样多,所以我想获得每一列各有多少条记录,怎么做?解答:RecordNumbers=Application.COUNTA(A:A)或者:Private Sub UserForm_Activate()x = Sheet1.UsedRange.Rows.Countx1 = Sheet1.CountA(c4, cx)也可以:Sub aa()
MsgBox (Application.CountA(Range("A:A")))End Sub还可以:Sub aa()x = Sheet1.UsedRange.Rows.CountMsgBox (Application.CountA(Range("c3:cx")))End Sub这样也行:用下面的方法可测出任一列使用的行数a=Sheet1.range("b1").End(xlDown).Row。总结: 1.Sub aa()
MsgBox (Application.CountA(Range("C:C")))End Sub结果永远都是1或者3,可是实际上记录有600多条2.Sub aa()Worksheets("sheet1").Activate
Range("c2").Select
x1 = "=COUNTA(sheet1!C)"
MsgBox x1End Sub这个是看fhj 示例的文件录制成宏改的,不过运行结果永远是 =counta(sheet1!c)3.Sub aa()
x1 = "=COUNTA(sheet1!C)"
MsgBox x1end sub提示和前面的一样。4.其实已经试了几十种方法了。还是错的。作为公式时,是可以使用。但是却无法把获得的值赋值给一个变量。除非是先写到一个单元格里,再重新读出来。不过我觉得太麻烦了。而且写的时候会修改工作表。不是很恰当。解答:Application.CountA(Range("C:C"))返回除去无值单元格的所有单元格的数量。Sheet1.range("C1").End(xlDown).Row返回第一次遇到空单元格前的单元格的数量。(注:当C列有空白单元格时用:myEndRow=sheets("sheet1").range("C65536").End(xlUp).row)结论:Sub aa()x1 = Sheet1.Range("C3").End(xlDown).Row
MsgBox x1end sub这就对了。谢谢各位!回应:推荐你用 Columns(1).SpecialCells(xlCellTypeConstants).Count045.如何禁止输入空格在Excel中如何通过编辑&有效数据&来禁止录入空格?烦请大侠们费心解答。不胜感激。解答:有效性公式。=COUNTIF(A1,"* *")=0(注:COUNTIF(A1,"* *") 在单元格有空格时结果为1,没有空格时结果为0如希望第一位不能输入空格:countif(a1," *")=0如希望最后一位不能输入空格:countif(a1,"* ")=0)046.如何判断单元格中单词的数量?比如我在A1中输入&you are a good boy&如何判断单词为5个?解答:=LEN(E12)-LEN(SUBSTITUTE(E12," ",""))+1(注:方法很巧妙 用trim把前后的空格去掉。如果有标点符号或者两个词之间的空格数大于1个就不好办了)047.如何取数表一有数据,要求表二中数据为取一行表一数据,空一行。解答:Sub test()On Error Resume NextApplication.ScreenUpdating = FalseFor i = 1 To Sheets(1).UsedRange.Rows.Count
Sheets(1).Rows(VBA.Trim(VBA.Str(i)) + ":" + VBA.Trim(VBA.Str(i))).Copy
Sheets(2).Activate
Sheets(2).Rows(VBA.Trim(VBA.Str(i * 2 - 1)) + ":" + VBA.Trim(VBA.Str(i * 2 - 1))).Select
ActiveSheet.PasteNext iApplication.ScreenUpdating = TrueEnd Sub048.如何通过VBA编程将符合条件的数据库记录输入到EXCEL中现在有access格式的数据表 TEST货号
单价....1-01
250.001-02
100.00................N-99
999.99现在我想在EXCEL的单元格中输入货号,通过VBA代码自动从数据表中查找出相应的记录,并在相邻的列分别自动录入货品、规格、单价等内容,从而实现EXCEL自动数据录入。请问这VBA代码应如何写?谢谢!解答:Private Sub Worksheet_Change(ByVal Target As Range)Dim Rs As New ADODB.RecordsetDim Query As StringDim Cnn As StringWith Application
.ScreenUpdating = False
.EnableEvents = FalseEnd WithCnn = "Driver=Microsoft Access Driver (*.mdb);DBQ=C:/*.mdb"Query = "SELECT * FROM TEXT WHERE 货号='" & Target & "'"With Rs
.Open Query, Cnn, adOpenStatic, adLockReadOnly
If .RecordCount = 0 Then
MsgBox "没有此货号!"
Target.ClearContents
Target.CopyFromRecordset Rs
.CloseEnd WithWith Application
.ScreenUpdating = True
.EnableEvents = TrueEnd WithEnd Sub049.如何统计一个单元格中的数字有几位数?解答1:=LEN(单元格地址)又问:如果中间有汉字或者是字母、符号呢,或是数者都有呢?解答2:=SUM(LEN(A1)-LEN(SUBSTITUTE(A1,{"0","1","2","3","4","5","6","7","8","9"},"")))解答3:=2*LEN(A1)-LENB(A1)(备注:對 中文 + 數字 是很好的做法,但有英文字 或 中文 + 數字 + 英文 就出錯)050.如何選取列內不重複資料解答1:Sub ff()Dim aa As New Collectioncc = 2On Error Resume NextDo Until Cells(3, cc) = ""
aa.Add Cells(3, cc).value, Cells(3, cc).Text
cc = cc + 1LoopOn Error GoTo 0cc = 2For Each itm In aa
Cells(5, cc) = itm
cc = cc + 1NextEnd Sub解答2:提供一個以陣列方法為思考模式的方法Sub ff()On Error Resume Next
Set NoDupes = CreateObject("Scripting.Dictionary")
Do Until Cells(3, cc) = ""
NoDupes.Add Cells(3, cc).value, Cells(3, cc).value
cc = cc + 1
Range("B6").Resize(1, UBound(NoDupes.keys) + 1) = NoDupes.keys
'陣列由0開始,所以+1End Sub
如果您想留下此文,您可以将其发送至您的邮箱(将同时以邮件内容&PDF形式发送)
相关文章推荐
(Ctrl+Enter提交) &&
已有0人在此发表见解
&在& 08:07收藏到了
&&在信息爆炸的时代,您的知识需要整理,沉淀,积累!Lai18为您提供一个简单实用的文章整理收藏工具,在这里您可以收藏对您有用的技术文章,自由分门别类,在整理的过程中,用心梳理自己的知识!相信,用不了多久,您收藏整理的文章将是您一生的知识宝库!
· 蜀ICP备号-1

我要回帖

更多关于 if iserror vlookup 的文章

 

随机推荐