Excel-VBA-常用代码50例(共77页)

上传人:鲁** 文档编号:479410086 上传时间:2023-10-11 格式:DOC 页数:76 大小:107KB
返回 下载 相关 举报
Excel-VBA-常用代码50例(共77页)_第1页
第1页 / 共76页
Excel-VBA-常用代码50例(共77页)_第2页
第2页 / 共76页
Excel-VBA-常用代码50例(共77页)_第3页
第3页 / 共76页
Excel-VBA-常用代码50例(共77页)_第4页
第4页 / 共76页
Excel-VBA-常用代码50例(共77页)_第5页
第5页 / 共76页
点击查看更多>>
资源描述

《Excel-VBA-常用代码50例(共77页)》由会员分享,可在线阅读,更多相关《Excel-VBA-常用代码50例(共77页)(76页珍藏版)》请在金锄头文库上搜索。

1、精选优质文档-倾情为你奉上Excel VBA 常用代码50例001。用命令按扭打印一个sheet1中B2:M30区域中的内容?我想在Sheet2中制件一个命令按扭, 打印表Sheet1中的B2:M30 区域中的内容?解答:可以将打印区域设为b2:m30,然后打印,如:sheets(sheet1).printarea=b2:m30sheets(sheet1).printout随手写的,你可以试试看。最简单的方法是:你先 录制宏,在录制宏过程中, 跑到页面设置里面, 把打印范围设置到你想要的范围。然后退出,停止录制宏, 你就可以得到一些代码!002。能否对一列中的文字统一去掉最后一个字?这些文字不

2、统一,有些字数多,有些字数少。如何处理?我用&-不行解答:=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 End If ActiveCell.Offset

3、(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.va

4、luenext函数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.函数名不能使用单元格位址

5、的形式,否则在工作表中引用函数产生歧义,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 Next SUMX2 = ivalueEnd Function结果:调试成功!,非常感谢!005.判断字符串的

6、包含性用什么命 令“abcdefg”是否包含“abc”?解答:If VBA.InStr(1, abcdefg, abc) 0 Then MsgBox 包含006.利用背景实现套打的解决方案利用背景套打主要在于数据打印位置的确定,关键就是要使图片和实物之间的尺寸保持一致,这里我引入一个中间参照物空白表(只有表格线的表)。具体操作以套打支票为例说明: (1)将支票扫描成图片。 (2)打印一个空白表,使其与支票尺寸一致(需反复调整打印,也可行、列分别打印)。 (3)用“画图”的缩放功能调整图片大小,导入excel作背景,并使其与空白表大小一致(亦需反复调整导入,每次均用原图缩放,再另存为一个文件)。

7、 (4)根据图片背景调整好单元格,填入数据后套打支票,效果是匹配度达99%。 (5)由于每次都是用原图缩放,故可取得缩放比例作为参数,再套打其他表格时,即可直接依参数缩放图片。 思路:因为空白表=支票,图片=空白表,所以图片=支票。 该方案已证实可行。007.宏放在worksheet和sheet及模块中各有什么区别?解答:放在this workbook或sheet中的宏与模块中的宏的主要区别是book或sheet中的过程函数只能是对象所专有的,不能在对象之外的任何地方调用(很显然不能声明Public过程,否则编译报错),而模块中声明Public过程函数可以在任何地方使用。008.关于excel

8、问题在excel中如何用公式实现单元格内容递增?如: AB12 AB13 AB14 . 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(SUBSTI

9、TUTE(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

10、.给数组公式、VBA爱好者泼点冷水。数组公式、VBA威力巨大,在某些情形下提高效率非常明显,但各有其弱点。数组公式在大数据的时候,运行速度慢得无法忍受。比如,我日常需要编制得几个报表,原始数据有48万行,2030列,用数组根本无法操作。倒是利用数据透视表及其他一些组合功能,可谓神速。而VBA主要适用与日常比较固定的一些工作,对于一些临时性工作而言,缺乏灵活性,有杀鸡用牛刀之嫌疑。因此,根据我个人多年工作经验的体会,能熟练地灵活运用EXCEL基本功能和常用函数,就可以高效地完成大部分日常工作。我比较常用地东西有:数据透视表,数据有效性,ctrl+enter,index ,match,indire

11、ct,offset,if,vlookup,下拉列表框,绝对引用与相对引用,编辑选择性粘贴(数值、乘除、转置等),图表,条件格式,定义名称,分列,填充等。相反观点:数据透视表的计算是excel中内置的,同样的计算次数速度与数组公式是一样的,数组公式计算慢有两个因素,一是公式的编写不合理,另一个主要的原因是数组公式要对所有的引用数据进行计算,不管这些数据是否有效。VBA应该是最灵活的,在VBA中结合数组公式是可以达到最佳目的的,可用VBA先分析出数组公式要用的有效引用区域,在辅助表中进行数组计算(这个速度比用VBA直接分析计算要快得多),再将结果记入需要的单元格中,然后删除辅助表。其实你说的那些基

12、本操作均可用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可以用数组应用?有一个工作表,数据上万行,其中一列是我要分析的数值,数值比如为:0111,0112,0113,0114,0115,0116,0117中的任何一个。我要统计除0111,0113,0115之外的数据。公式:sum(if(or(sheet!A2:A1111=

13、0111,sheet!a2:a1111=0113,sheet!a2:a1111=0115),1,0),可是统计数字和我筛选相加的不一样,用if层层选,可以。请问原因?解答:数组公式中用*、+代替AND、ORsum(if(sheet!A2:A1111=0111)+(sheet!a2:a1111=0113)+(sheet!a2:a1111=0115),1,0)012.countif表达式的格式请问:我想找A1:A15中,值不为空的数目,用countif命令怎么写呢?解答1:应为counta(a1:a15)。countif为找a1:a15中,特定值的数目。解答2:=ROWS(A1:A15)*COLU

14、MNS(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单元格已有的字符串”中加入个5变为“”。可以这样做:=replace(a1,5,5)另一方法:用CONCATENATE函数。例如:a5单元格里的数据是“asdfhjkl,在另外的单元格了输入下面的函数CONCATENATE(LEFT(A5,4),l,RIGHT(A5,4),得到的结果就是”asdflhjkl,然后用“选择性粘贴,粘贴数值”粘贴回a5单元格就可以了。014.两表合一实例

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 教学/培训

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号