用宏表函数与公式
- 格式:docx
- 大小:12.66 KB
- 文档页数:2
1.拆分单元格赋值Sub 拆分填充()Dim x As RangeFor Each x In ActiveSheet。
UsedRange.CellsIf x。
MergeCells Thenx.Selectx.UnMergeSelection.Value = x。
ValueEnd IfNext xEnd Sub2.E xcel 宏按列拆分多个excelSub Macro1()Dim wb As Workbook, arr, rng As Range, d As Object, k, t, sh As Worksheet, i&Set rng = Range("A1:f1")Application。
ScreenUpdating = FalseApplication。
DisplayAlerts = Falsearr = Range("a1:a” & Range("b” & Cells.Rows。
Count).End(xlUp)。
Row)Set d = CreateObject("scripting。
dictionary")For i = 2 To UBound(arr)If Not d.Exists(arr(i, 1)) ThenSet d(arr(i, 1)) = Cells(i, 1)。
Resize(1, 13)ElseSet d(arr(i, 1)) = Union(d(arr(i, 1)), Cells(i, 1).Resize(1, 13)) End IfNextk = d.Keyst = d.ItemsFor i = 0 To d。
Count - 1Set wb = Workbooks。
Add(xlWBATWorksheet)With wb。
Sheets(1)rng。
Copy 。
[A1]t(i)。
Copy 。
具有函数和宏的高级Excel技巧一、函数的应用在Excel中,函数是非常重要的工具,用于处理和分析数据。
下面介绍几个常用的函数及其应用。
1.1 SUM函数SUM函数用于求和,可以对一列或多列数字进行求和操作。
例如,有一个销售表格,包含销售额列A和销售数量列B,可以使用SUM函数计算总销售额,公式为=SUM(A1:A10)。
1.2 IF函数IF函数用于条件判断,根据条件返回不同的值。
例如,有一个成绩表格,如果分数大于等于90分,则显示优秀,否则显示良好,可以使用IF函数进行判断,公式为=IF(A1>=90,"优秀","良好")。
1.3 VLOOKUP函数VLOOKUP函数用于查找并返回指定数据的值。
例如,有一个商品销售表格,包含商品名称列A和价格列B,如果要根据商品名称查找对应的价格,可以使用VLOOKUP函数,公式为=VLOOKUP("商品名称",A1:B10,2,FALSE)。
二、宏的应用宏是Excel中强大的自动化工具,可以录制和执行一系列的操作。
下面介绍几个常用的宏技巧。
2.1 录制宏录制宏可以将一系列的操作记录下来,并生成一个可以重复执行的宏。
例如,要将某一列数据按照升序排列,可以录制一个宏包含排序操作,然后以后只需要点击执行宏就可以完成排序操作。
2.2 设置宏的快捷键为了更方便地执行宏,可以设置宏的快捷键。
例如,将某个宏设置为Ctrl+Shift+S,以后只需要按下这个组合键就可以执行宏。
2.3 编写宏代码除了录制宏外,还可以手动编写宏代码。
例如,可以编写一个宏代码实现自动筛选数据的功能,根据指定的条件自动筛选出符合条件的数据。
三、函数和宏的组合运用函数和宏可以进行组合运用,发挥更强大的功能。
3.1 自定义函数Excel中有一些内置的函数,但有时候需要根据特定的需求编写自定义函数。
例如,可以编写一个自定义函数用于计算销售额与成本之间的差额,方便分析利润情况。
Excel宏表函数大全Excel 宏表函数介绍1、什么是宏表函数宏表函数是又称excel4.0函数,是Excel第4个版本的函数,为了考虑兼容性,现在的版本依然可以调用该函数。
宏表函数是一类非常特殊的函数,你在Excel的函数列表中找不到它们,但它们确实存在,而且功能异常强大,在许多应用中不可或缺。
2、宏表函数有什么用处?宏表函数可以实现现有版本的函数或技巧无法完成的功能,比如取单元格填充色值、获取工作表的名称列表等。
3、怎么使用宏表函数宏表函数不能在工作表单元格中直接使用,需要在名称管理器中先定义一个名称,然后在单元格中使用该名称。
4、Excel宏表函数列表Get.Cell的用法函数定义: Get.Cell(类型号,单元格(或范围))其中类型号,即你想要得到的信息的类型号,经试验,范围为1-66,也就是说这个函数可以返回一个单元格里66种信息。
以下是类型号及其所代表的信息1 - 返回绝对引用 //引用样式由Excel参数决定,可以用工作表函数 CELL('address'); CELL('address',REF)2 - 返回行号 //可以用工作表函数 CELL('row'); CELL('row',REF); ROW(REF)3 - 返回列号(数字) //可以用工作表函数 CELL('col'); CELL('col',REF); COLUMN(REF)4 - 返回数据类型(1-数值或空单元格,2-文本,4-逻辑,16-错误值) //基本可以用工作表函数TYPE,除了针对活动单元格的情形。
注意与CELL('type')不同5 - 返回值 // 直接用 =单元格地址,完美的替代是CELL('contents'), CELL('contents',REF)6 - 返回公式或值 //如果单元格不含公式,则与5相同。
Excel宏表函数⼤全Excel宏表函数⼤全Excel 宏表函数介绍1、什么是宏表函数宏表函数是⼜称excel4.0函数,是Excel第4个版本的函数,为了考虑兼容性,现在的版本依然可以调⽤该函数。
宏表函数是⼀类⾮常特殊的函数,你在Excel的函数列表中找不到它们,但它们确实存在,⽽且功能异常强⼤,在许多应⽤中不可或缺。
2、宏表函数有什么⽤处?宏表函数可以实现现有版本的函数或技巧⽆法完成的功能,⽐如取单元格填充⾊值、获取⼯作表的名称列表等。
3、怎么使⽤宏表函数宏表函数不能在⼯作表单元格中直接使⽤,需要在名称管理器中先定义⼀个名称,然后在单元格中使⽤该名称。
4、Excel宏表函数列表Get.Cell的⽤法函数定义: Get.Cell(类型号,单元格(或范围))其中类型号,即你想要得到的信息的类型号,经试验,范围为1-66,也就是说这个函数可以返回⼀个单元格⾥66种信息。
以下是类型号及其所代表的信息1 - 返回绝对引⽤ //引⽤样式由Excel参数决定,可以⽤⼯作表函数 CELL('address'); CELL('address',REF)2 - 返回⾏号 //可以⽤⼯作表函数 CELL('row'); CELL('row',REF); ROW(REF)3 - 返回列号(数字) //可以⽤⼯作表函数 CELL('col'); CELL('col',REF); COLUMN(REF)4 - 返回数据类型(1-数值或空单元格,2-⽂本,4-逻辑,16-错误值) //基本可以⽤⼯作表函数TYPE,除了针对活动单元格的情形。
注意与CELL('type')不同5 - 返回值 // 直接⽤ =单元格地址,完美的替代是CELL('contents'), CELL('contents',REF)6 - 返回公式或值 //如果单元格不含公式,则与5相同。
EXCEL表格的任一当前单元格内显示其所在页码方法一、首先调整视图为页面视图,横向只有一个分页符,则用下面的方法非常简便在插入→名称→定义→新建,定义一个名称:PageNumber,当然也可以取一个你喜欢的名字比如:Love,在引用位置中输入=IF(ISERROR(MATCH(ROW(),GET.DOCUMENT(64),1)),1,MATCH(ROW(),GET.DOCUMENT(64),1) +1)在当单元格中输入“=PageNumber”,回车,OK二、若页面视图,横向有多个分页符,则(一)在插入→名称→定义→新建,定义一个名称:PageNumber,在引用位置中粘贴输入=IF(GET.DOCUMENT(61),(IF(ISERROR(FREQUENCY(GET.DOCUMENT(64),GET.DOCUMENT(10) )),0,FREQUENCY(GET.DOCUMENT(64),GET.DOCUMENT(10)))+1)*IF(ISERROR(FREQUENCY(GE T.DOCUMENT(65),Column())),0,FREQUENCY(GET.DOCUMENT(65),Column()))+IF(ISERROR(FR EQUENCY(GET.DOCUMENT(64),Row())),0,FREQUENCY(GET.DOCUMENT(64),Row()))+1,(IF(ISE RROR(FREQUENCY(GET.DOCUMENT(65),GET.DOCUMENT(12))),0,FREQUENCY(GET.DOCUME NT(65),GET.DOCUMENT(12)))+1)*IF(ISERROR(FREQUENCY(GET.DOCUMENT(64),Row())),0,FRE QUENCY(GET.DOCUMENT(64),Row()))+IF(ISERROR(FREQUENCY(GET.DOCUMENT(65),Colum n())),0,FREQUENCY(GET.DOCUMENT(65),Column()))+1)*ISNUMBER(NOW())(二)上述公式不便于阅读,转换为VBA便于阅读:VBA代码如下:Sub 定义页码及总页数名称()' 定义页码及总页数名称Macro'一个文件第一次使用前须先运行一遍本宏以后则不必了,s.Add Name:="ColFirst", RefersToR1C1:= _"=GET.DOCUMENT(61)" '判断打印顺序的设置类型s.Add Name:="lstRow", RefersToR1C1:= _"=GET.DOCUMENT(10)" '本工作表已用到的最大行数s.Add Name:="lstColumn", RefersToR1C1:= _"=GET.DOCUMENT(12)" '本工作表已用到的最大列数s.Add Name:="hNum", RefersToR1C1:= _"=IF(ISERROR(FREQUENCY(GET.DOCUMENT(64),Row())),0,FREQUENCY(GET.DOCUMENT(64), Row()))" 'hNum为本单元格上方的水平分页符个数s.Add Name:="vNum", RefersToR1C1:= _"=IF(ISERROR(FREQUENCY(GET.DOCUMENT(65),Column())),0,FREQUENCY(GET.DOCUMENT( 65),Column()))" ''本单元格左边的垂直分页个数s.Add Name:="hSum", RefersToR1C1:= _"=IF(ISERROR(FREQUENCY(GET.DOCUMENT(64),lstRow)),0,FREQUENCY(GET.DOCUMENT(64 ),lstRow))" ''本工作表最后一个单元格上方的水平分页符个数s.Add Name:="vSum", RefersToR1C1:= _"=IF(ISERROR(FREQUENCY(GET.DOCUMENT(65),lstColumn)),0,FREQUENCY(GET.DOCUMENT (65),lstColumn))" ''本工作表最后一个单元格左边的垂直分页个数s.Add Name:="ThisPageNo", RefersToR1C1:= _"=IF(ColFirst,(hSum+1)*vNum+hNum+1,(vSum+1)*hNum+vNum+1)*ISNUMBER(NOW())" '单元格所在页码s.Add Name:="PagesCount", RefersToR1C1:= _"=GET.DOCUMENT(50)*ISNUMBER(NOW())" '本工作表的总页数End Sub使用方法:⑴将代码粘贴进工具--宏--VB编辑器;⑵点击开发工具--宏,找到并点击“定义页码及总页数名称”,再点击运行;⑶在任一单元格输入公式“=ThisPageNo”则在当前单元格显示该单元格所在页码;⑷在任一单元格输入公式“=PagesCount”,则显示总页数;⑸输入“=TEXT(ThisPageNo,"第0页")&TEXT(PagesCount,"共0页") ”,在同一单元格显示当前页码和总页数三、关于用到的宏函数知识补充:GET.DOCUMENT(type_num, name_text)Type_num 指明信息类型的数。
Excel函数应用篇:宏表函数宏表函数是个“老古董”,实际上是现在广泛使用VBA的“前身”。
虽然后来的各版本已经不再使用它,但还能支持。
宏表函数很奇葩,必须定义名称才能使用,脱离了名称就没有存在的价值。
1.excel宏表函数大全之一:EVALUATE宏表函数EVALUATE用于统计引用单元格中以文本形式表示的算术表达式的值。
举例:下表中G列数据为包裹的长宽高数据,现在需要根据G列数据统计包裹体积。
第一步:打开【名称管理器】新建一条名称记录如下:第二步:单击【确定】关闭名称管理器,在H2单元格输入=体积,向下填充即可。
2.excel宏表函数大全之二:get.cell宏表函数有些人喜欢将需要统计的数据用背景色填充,以为这样比较醒目,统计起来就方便。
当然前提是你用计算器统计,如果用Excel那就是自找麻烦。
现在对需要统计的津贴用不同背景色填充,要分别统计两种颜色的津贴总数。
Step 01选择C2单元格,单击“公式”选项卡中的“定义名称”按钮,在“名称”文本框中输入:颜色,“引用位置”输入下面的公式,最后单击“确定”按钮。
=GET.CELL(63,B2)Step 02 定义完名称后,只需在C2单元格输入公式,并向下填充公式,即可自动统计表达式,有背景色的就大于0,没有背景色的就是0。
橙色的背景色为46,所以公式可设置为:=SUMIF(C:C,46,B:B)绿色的背景色为10,所以公式可设置为:=SUMIF(C:C,10,B:B)如果背景色多的话,需要再次定义一个名称作为辅助列,获取D列的颜色对应值。
除了背景色,常用的还有一个字体颜色,参数1为24代表字体颜色。
=GET.CELL(24,B2)GET.CELL参数1可以设置成1-66,共66种,有兴趣的可以去测试。
知识扩展:高版本的Excel可以按背景色进行筛选,再借助SUBTOTAL函数就可以按背景色筛选求和。
在C17输入公式:=SUBTOTAL(9,B2:B16)筛选橙色的背景色,就可以统计出来。
proe函数公式名称:正弦曲线建立环境:Pro/E软件、笛卡尔坐标系x=50*ty=10*sin(t*360)z=0名称:螺旋线(Helical curve)建立环境:PRO/E;圆柱坐标(cylindrical)r=ttheta=10+t*(20*360)z=t*3蝴蝶曲线球坐标 PRO/E方程:rho = 8 * ttheta = 360 * t * 4phi = -360 * t * 8Rhodonea 曲线采用笛卡尔坐标系theta=t*360*4x=25+(10-6)*cos(theta)+10*cos((10/6-1)*theta) y=25+(10-6)*sin(theta)-6*sin((10/6-1)*theta) *********************************圆内螺旋线采用柱座标系theta=t*360r=10+10*sin(6*theta)z=2*sin(6*theta)渐开线的方程r=1ang=360*ts=2*pi*r*tx0=s*cos(ang)y0=s*sin(ang)x=x0+s*sin(ang)y=y0-s*cos(ang)z=0对数曲线z=0x = 10*ty = log(10*t+0.0001)球面螺旋线(采用球坐标系)rho=4theta=t*180phi=t*360*20名称:双弧外摆线卡迪尔坐标方程: l=2.5b=2.5x=3*b*cos(t*360)+l*cos(3*t*360) Y=3*b*sin(t*360)+l*sin(3*t*360) 名称:星行线卡迪尔坐标方程:a=5x=a*(cos(t*360))^3y=a*(sin(t*360))^3名稱:心脏线建立環境:pro/e,圓柱坐標a=10r=a*(1+cos(theta))theta=t*360名稱:葉形線建立環境:笛卡儿坐標a=10x=3*a*t/(1+(t^3))y=3*a*(t^2)/(1+(t^3))笛卡儿坐标下的螺旋线x = 4 * cos ( t *(5*360))y = 4 * sin ( t *(5*360))z = 10*t一抛物线笛卡儿坐标x =(4 * t)y =(3 * t) + (5 * t ^2)z =0名稱:碟形弹簧建立環境:pro/e圓柱坐r = 5theta = t*3600z =(sin(3.5*theta-90))+24*t方程: 阿基米德螺旋线x = (a +f sin (t))cos(t)/ay = (a -2f +f sin (t))sin(t)/bpro/e关系式、函数的相关说明资料?关系中使用的函数数学函数下列运算符可用于关系(包括等式和条件语句)中。
EXCEL表格的任一当前单元格内显示其所在页码方法一、首先调整视图为页面视图,横向只有一个分页符,则用下面的方法非常简便在插入→名称→定义→新建,定义一个名称:PageNumber,当然也可以取一个你喜欢的名字比如:Love,在引用位置中输入=IF(ISERROR(MATCH(ROW(),GET.DOCUMENT(64),1)),1,MATCH(ROW(),GET.DOCUMENT(64),1) +1)在当单元格中输入“=PageNumber”,回车,OK二、若页面视图,横向有多个分页符,则(一)在插入→名称→定义→新建,定义一个名称:PageNumber,在引用位置中粘贴输入=IF(GET.DOCUMENT(61),(IF(ISERROR(FREQUENCY(GET.DOCUMENT(64),GET.DOCUMENT(10) )),0,FREQUENCY(GET.DOCUMENT(64),GET.DOCUMENT(10)))+1)*IF(ISERROR(FREQUENCY(GE T.DOCUMENT(65),Column())),0,FREQUENCY(GET.DOCUMENT(65),Column()))+IF(ISERROR(FR EQUENCY(GET.DOCUMENT(64),Row())),0,FREQUENCY(GET.DOCUMENT(64),Row()))+1,(IF(ISE RROR(FREQUENCY(GET.DOCUMENT(65),GET.DOCUMENT(12))),0,FREQUENCY(GET.DOCUME NT(65),GET.DOCUMENT(12)))+1)*IF(ISERROR(FREQUENCY(GET.DOCUMENT(64),Row())),0,FRE QUENCY(GET.DOCUMENT(64),Row()))+IF(ISERROR(FREQUENCY(GET.DOCUMENT(65),Colum n())),0,FREQUENCY(GET.DOCUMENT(65),Column()))+1)*ISNUMBER(NOW())(二)上述公式不便于阅读,转换为VBA便于阅读:VBA代码如下:Sub 定义页码及总页数名称()' 定义页码及总页数名称Macro'一个文件第一次使用前须先运行一遍本宏以后则不必了,s.Add Name:="ColFirst", RefersToR1C1:= _"=GET.DOCUMENT(61)" '判断打印顺序的设置类型s.Add Name:="lstRow", RefersToR1C1:= _"=GET.DOCUMENT(10)" '本工作表已用到的最大行数s.Add Name:="lstColumn", RefersToR1C1:= _"=GET.DOCUMENT(12)" '本工作表已用到的最大列数s.Add Name:="hNum", RefersToR1C1:= _"=IF(ISERROR(FREQUENCY(GET.DOCUMENT(64),Row())),0,FREQUENCY(GET.DOCUMENT(64), Row()))" 'hNum为本单元格上方的水平分页符个数s.Add Name:="vNum", RefersToR1C1:= _"=IF(ISERROR(FREQUENCY(GET.DOCUMENT(65),Column())),0,FREQUENCY(GET.DOCUMENT( 65),Column()))" ''本单元格左边的垂直分页个数s.Add Name:="hSum", RefersToR1C1:= _"=IF(ISERROR(FREQUENCY(GET.DOCUMENT(64),lstRow)),0,FREQUENCY(GET.DOCUMENT(64 ),lstRow))" ''本工作表最后一个单元格上方的水平分页符个数s.Add Name:="vSum", RefersToR1C1:= _"=IF(ISERROR(FREQUENCY(GET.DOCUMENT(65),lstColumn)),0,FREQUENCY(GET.DOCUMENT (65),lstColumn))" ''本工作表最后一个单元格左边的垂直分页个数s.Add Name:="ThisPageNo", RefersToR1C1:= _"=IF(ColFirst,(hSum+1)*vNum+hNum+1,(vSum+1)*hNum+vNum+1)*ISNUMBER(NOW())" '单元格所在页码s.Add Name:="PagesCount", RefersToR1C1:= _"=GET.DOCUMENT(50)*ISNUMBER(NOW())" '本工作表的总页数End Sub使用方法:⑴将代码粘贴进工具--宏--VB编辑器;⑵点击开发工具--宏,找到并点击“定义页码及总页数名称”,再点击运行;⑶在任一单元格输入公式“=ThisPageNo”则在当前单元格显示该单元格所在页码;⑷在任一单元格输入公式“=PagesCount”,则显示总页数;⑸输入“=TEXT(ThisPageNo,"第0页")&TEXT(PagesCount,"共0页") ”,在同一单元格显示当前页码和总页数三、关于用到的宏函数知识补充:GET.DOCUMENT(type_num, name_text)Type_num 指明信息类型的数。
[转]宏表函数详解(GET.CELL,GET.DOCUMENT)宏表函数很多,这里只介绍一下GET.CELL,GET.DOCUMENT 两个信息函数,如果需要全部的宏表函数帮助,请到网上查找。
一、GET.CELL只用于宏表返回关于格式化,位置或单元格内容的信息。
在由特定单元格状态决定行为的宏中,使用GET.CELL。
语法GET.CELL(type_num, reference)Type_num 指明单元格中信息的类型。
下表列出Type_num 的可能值与其对应的结果。
Type_num 返回1 以当前工作区文字引用类型绝对引用左上角引用单元格。
2 顶部引用单元格的行数。
3 最左边引用单元格的列数。
4 同TYPE引用5 引用内容。
6 文字,以工作区设置决定的A1 或R1 C1 类型引用公式。
7 文字的单元格的数字格式(如“m/d/yy”或“General”)。
8 指示单元格水平对齐的数字1 = 一般2 = 左对齐3 = 置中4 = 右对齐5 = 填充6 = 两端对齐7 = 跨列置中9 指示分配给单元格左侧边框线的类型0 = 无边框1 = 细线2 = 中等线3 = 虚线4 = 点线5 = 粗线6 = 双线7 = 发丝线10 指示分配给单元格右侧边框线的类型,对应指定返回值的描述参见type_num 911 指示分配给单元格顶端边框线的类型,对应返回值的描述参见type_num 912 指示分配给单元格底端边框线的类型,对应返回值的描述参见type_num 913 是0至8之间的一个数字,当在[格式]菜单下选择[单元格]命令时,[单元格格式]对话框的[图案]标签显示被选择的单元格。
这个数字指明其模式。
如模式未被选择,返回0。
14 如果单元格被锁住,返回TRUE;否则,返回FALSE。
15 如果单元格中公式被隐藏,返回TRUE;否则返回FALSE。
16 一个含有两顶的水平数组,包括活动单元格的宽度和一个逻辑值,这个逻辑值指明单元格宽度是否改变,如为TRUE,标准宽度改变,如为FALSE,仍为自定义宽度。
用宏表函数与公式
1. 首先:点CTRL+F3打开定义名称,再在上面输入“纵当页”,在下面引用位置处输入:
=IF(ISNA(MATCH(ROW(),GET.DOCUMENT(64))),1,MATCH(ROW(),GET.DOCUMENT(64))+1)
2.然后再继续添加第二个名称:“横当页”,在下面引用位置处输入:
=IF(ISNA(MATCH(column(),GET.DOCUMENT(65))),1,MATCH(column(),GET.DOCUMENT(65))+1)
3.再输入“总页”;引用位置处输入:(在MSoffice2007不管有多少页,都只显示共有1页,不知为什么)
=GET.DOCUMENT(50)+RAND()*0
4.最后再定义“页眉”,引用位置:
="第"&IF(横当页=1,纵当页,横当页+纵当页)&"页/共"&总页&"页"
5.在函数栏使用应用即可得到需要的页码。
另外一般情况下,一般的表册都要求每页25行数据,同时每页还需要设置相同的表头,虽然上面的方法可以在任意单元格内计算所在页面的页码,但是如果公式太多的话,计算特别慢。
如果每页行数是固定的(比如25行)话,就可以采用下面的笨方法。
1、设置顶端标题行,“页面设置”→“工作表”→“顶端标题行”中输入“$1:$4”(第1行到第4行)
2、在工作表中数据输入完毕后,设置好各种格式,除表头外,保证每页是25行数据。
3、在需要设置该行所在页面的页码的单元格内输入如下公式:
=INT((ROW()-ROWS(Print_Titles)-1)/25)+1
(公式里面的Print_Titles就是前面第1步所设置的顶端标题行区域。
)
4、通过拖动或者复制的方法复制上面的公式,即可得到页码。
也希望各位朋友多多指教,如有更好的方法请赐教,谢谢了。