vba函数编写,求大神赐教
1、
Function gs()
gs = ActiveSheet.Cells(ActiveCell.Row, 1) + ActiveSheet.Cells(ActiveCell.Row, 2) + ActiveSheet.Cells(ActiveCell.Row, 3)
End Function
在D列及其右边列输入 =gs()
2、
Function gs(a, b, c)
gs = a + b - c '把公式的计算过程写到这里,输入公式时只要传入参数
End Function
在D1输入 =gs(A1,B1,C1)
复制填充公式
3、
其实要实现 作表中在录入数据后目标单元格自动计算,但不需要别人看见目标单元格中的公式
可用工作表保护配合单元格锁定来解决
vba代码可以实现,但是比较繁琐(新手),可以用office的定义名称来实现。
要借助空白区域,在空白的任意一个单元格(我的是a8)插入——名称,
(2003版本的是插入——名称,2007版本的是公式——定义名称),名称写col,引用位置上写=GET.CELL(63,Sheet2!A2:E3),,(a2:e3表示是有颜色的区域,图中456行的颜色是我后面加的确定,)关闭,在a8处写=col,回车得到一个数字55(这个数字就是当前a2单元格的背景颜色代码),然后拖动单元格到和元数据单元格区域大小,2003版的按f9刷新,2007版的不用。然后在f2那些写=sumif(a8:e8,55,$a$1:$e$1),回车,向下拖动公式就可以了。($a$1:$e$1表示绝对引用需要做加运算的数字区域)
图片传布上来。。。。。。
参考下面这些代码:
1:打开所有隐藏工作表
2:循环宏
3:录制宏时调用“停止录制”工具栏
4:高级筛选5列不重复数据至指定表
5:双击单元执行宏(工作表代码)
6:双击指定区域单元执行宏(工作表代码)
7:进入单元执行宏(工作表代码)
8:进入指定区域单元执行宏(工作表代码)
9:在多个宏中依次循环执行一个(控件按钮代码)
10:在两个宏中依次循环执行一个并相应修改按钮名称(控件按钮代码)
11:在三个宏中依次循环执行一个并相应修改按钮名称(控件按钮代码)
12:根据A1单元文本隐藏/显示按钮(控件按钮代码)
13:当前单元返回按钮名称(控件按钮代码)
14:当前单元内容返回到按钮名称(控件按钮代码)
15:奇偶页分别打印
16:自动打印多工作表第一页
17:查找A列文本循环插入分页符
18:将A列最后数据行以上的所有B列图片大小调整为所在单元大小
19:返回光标所在行数 20:在A1返回当前选中单元格数量
21:返回当前工作簿中工作表数量
22:返回光标选择区域的行数和列数
23:工作表中包含数据的最大行数
24:返回A列数据的最大行数
25:将所选区域文本插入新建文本框
26:批量插入地址批注
27:批量插入统一批注
28:以A1单元内容批量插入批注
29:不连续区域插入当前文件名和表名及地址
30:不连续区域录入当前单元地址
31:连续区域录入当前单元地址
32:返回当前单元地址
33:不连续区域录入当前日期
34:不连续区域录入当前数字日期
35:不连续区域录入当前日期和时间
36:不连续区域录入对勾
37:不连续区域录入当前文件名
38:不连续区域添加文本
39:不连续区域插入文本
40:从指定位置向下同时录入多单元指定内容
41:按aa工作表A列的内容排列工作表标签顺序
42:以A1单元文本作表名插入工作表
43:删除所有未选定工作表
44:工作表标签排序
45:定义指定工作表标签颜色
46:在目录表建立本工作簿中各表链接目录
47:建立工作表文本目录
48:查另一文件的所有表名
49:当前单元录入计算机名
50:当前单元录入计算机用户名
51:解除所有工作表保护
52:为指定工作表加指定密码保护表
53:在有密码的工作表执行代码
54:执行前需要验证密码的宏(控件按钮代码)
55:执行前需要验证密码的宏()
56:拷贝A1公式和格式到A2
57:复制单元数值
58:插入数值条件格式
59:插入透明批注
60:添加文本
61:光标定位到指定工作表A列最后数据行下一单元
62:定位选定单元格式相同的所有单元格
63:按当前单元文本定位
64:按固定文本定位
65:删除包含固定文本单元的行或列
66:定位数据及区域以上的空值
67:右侧单元自动加5(工作表代码)
68:当前单元加2
69:A列等于A列减B列
70:用于光标选定多区域跳转指定单元(工作表代码)
71:将A1单元录入的数据累加到B1单元(工作表代码)
72:在指定颜色区域选择单元时添加/取消"√"(工作表代码)
73:在指定区域选择单元时添加/取消"√"(工作表代码)
74:双击指定单元,循环录入文本(工作表代码)
75:双击指定单元,循环录入文本(工作表代码)
76:单元区域引用(工作表代码)
77:在指定区域选择单元时数值加1(工作表代码)
78:混合文本的编号
79:指定区域单元双击数据累加(工作表代码)
80:选择单元区域触发事件(工作表代码)
81:当修改指定单元内容时自动执行宏(工作表代码)
82:被指定单元内容限制执行宏
83:双击单元隐藏该行(工作表代码)
84:高亮显示行(工作表代码)
85:高亮显示行和列(工作表代码)
86:为指定工作表设置滚动范围(工作簿代码)
87:在指定单元记录打印和预览次数(工作簿代码)
88:自动数字金额转大写(工作表代码)
89:将所有工作表的A1单元作为单击按钮(工作簿代码)
90:闹钟——到指定时间执行宏(工作簿代码)
91:改变Excel界面标题的宏(工作簿代码)
92:在指定工作表的指定单元返回光标当前多选区地址(工作簿代码)
93:B列录入数据时在A列返回记录时间(工作表代码)
94:当指定区域修改时在其右侧的2个单元返回当前日期和时间(工作表代码)
95:指定单元显示光标位置内容(工作表代码)
96:每编辑一个单元保存文件
97:指定允许编辑区域
98:解除允许编辑区域限制
99:删除指定行
100:删除A列为指定内容的行
1:打开所有隐藏工作表
Sub 打开所有隐藏工作表()
Dim i As Integer
For i = 1 To Sheets.Count
Sheets(i).Visible = True
Next i
End Sub
2:循环宏
Sub 循环()
AAA = Range("C2")
Dim i As Long
Dim times As Long
times = AAA
'times代表循环次数,执行前把times赋值即可(不可小于1,不可大于2147483647)
For i = 1 To times
Call 过滤一行
If Range("完成标志") = "完成" Then
Exit For
'假如名为'完成标志'的命名单元的值等于'完成',则退出循环,假如一开始就等于'完成',则只执行一次循环就退出
'If Sheets("传送参数").Range("A" & i).Text = "完成" Then
Exit For
'假如某列出现"完成"内容则退出循环
Next i
End Sub
3:录制宏时调用“停止录制”工具栏
Sub 录制宏时调用停止录制工具栏()
Application.CommandBars("Stop Recording").Visible = True
End Sub
4:高级筛选5列不重复数据至指定表
Sub 高级筛选5列不重复数据至Sheet2()
Sheets("Sheet2").Range("A1:E65536") = "" '清除Sheet2的A:D列
Range("A1:E65536").AdvancedFilter Action:=xlFilterCopy, CopyToRange:=Sheet2.Range( _
"A1"), Unique:=True
Sheet2.Columns("A:E").Sort Key1:=Sheet2.Range("A2"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, SortMethod _
:=xlPinYin
End Sub
5:双击单元执行宏(工作表代码)
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Range("$A$1") = "关闭" Then
Exit Sub
Select Case Target.Address
Case "$A$4"
Call 宏1
Cancel = True
Case "$B$4"
Call 宏2
Cancel = True
Case "$C$4"
Call 宏3
Cancel = True
Case "$E$4"
Call 宏4
Cancel = True
End Select
End Sub
6:双击指定区域单元执行宏(工作表代码)
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Range("$A$1") = "关闭" Then Exit Sub
If Not Application.Intersect(Target, Range("A4:A9", "C4:C9")) Is Nothing Then Call 打开隐藏表
End Sub
7:进入单元执行宏(工作表代码)
Private Sub Worksheet_SelectionChange(ByVal Target As Range) '以单元格进入代替按钮对象调用宏
If Range("$A$1") = "关闭" Then Exit Sub
Select Case Target.Address
Case "$A$5" '单元地址(Target.Address),或命名单元名字(Target.Name)
Call 宏1
Case "$B$5"
Call 宏2
Case "$C$5"
Call 宏3
End Select
End Sub
8:进入指定区域单元执行宏(工作表代码)
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Range("$A$1") = "关闭" Then Exit Sub
If Not Application.Intersect(Target, Range("A4:A9","C4:C9")) Is Nothing Then Call 打开隐藏表
End Sub
9:在多个宏中依次循环执行一个(控件按钮代码)
Private Sub CommandButton1_Click()
Static RunMacro As Integer
Select Case RunMacro
Case 0
宏1
RunMacro = 1
Case 1
宏2
RunMacro = 2
Case 2
宏3
RunMacro = 0
End Select
End Sub
10:在两个宏中依次循环执行一个并相应修改按钮名称(控件按钮代码)
Private Sub CommandButton1_Click()
With CommandButton1
If .Caption = "保护工作表" Then
Call 保护工作表
.Caption = "取消工作表保护"
Exit Sub
End If
If .Caption = "取消工作表保护" Then
Call 取消工作表保护
.Caption = "保护工作表"
Exit Sub
End If
End With
End Sub
11:在三个宏中依次循环执行一个并相应修改按钮名称(控件按钮代码)
Option Explicit Private Sub CommandButton1_Click()
With CommandButton1
If .Caption = "宏1" Then
Call 宏1
.Caption = "宏2"
Exit Sub
End If
If .Caption = "宏2" Then
Call 宏2
.Caption = "宏3"
Exit Sub
End If
If .Caption = "宏3" Then
Call 宏3
.Caption = "宏1"
Exit Sub
End If
End With
End Sub
12:根据A1单元文本隐藏/显示按钮(控件按钮代码)
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Range("A1") > 2 Then
CommandButton1.Visible = 1
Else
CommandButton1.Visible = 0
End If
End Sub
Private Sub CommandButton1_Click()
重排窗口
End Sub
13:当前单元返回按钮名称(控件按钮代码)
Private Sub CommandButton1_Click()
ActiveCell = CommandButton1.Caption
End Sub
14:当前单元内容返回到按钮名称(控件按钮代码)
Private Sub CommandButton1_Click()
CommandButton1.Caption = ActiveCell
End Sub
15:奇偶页分别打印
Sub 奇偶页分别打印()
Dim i%, Ps%
Ps = ExecuteExcel4Macro("GET.DOCUMENT(50)") '总页数
MsgBox "现在打印奇数页,按确定开始."
For i = 1 To Ps Step 2
ActiveSheet.PrintOut from:=i, To:=i
Next i
MsgBox "现在打印偶数页,按确定开始."
For i = 2 To Ps Step 2
ActiveSheet.PrintOut from:=i, To:=i
Next i
End Sub
16:自动打印多工作表第一页
Sub 自动打印多工作表第一页()
Dim sh As Integer
Dim x
Dim y
Dim sy
Dim syz
x = InputBox("请输入起始工作表名字:")
sy = InputBox("请输入结束工作表名字:")
y = Sheets(x).Index
syz = Sheets(sy).Index
For sh = y To syz
Sheets(sh).Select
Sheets(sh).PrintOut from:=1, To:=1
Next sh
End Sub
17:查找A列文本循环插入分页符
Sub 循环插入分页符()
' Selection = Workbooks("临时表").Sheets("表2").Range("A1") 调用指定地址内容
Dim i As Long
Dim times As Long
times = Application.WorksheetFunction.CountIf(Sheet1.Range("a:a"), "分页") 'times代表循环次数,执行前把times赋值即可(不可小于1,不可大于2147483647)
For i = 1 To times
Call 插入分页符
Next i
End Sub
Sub 插入分页符()
Cells.Find(What:="分页", After:=ActiveCell, LookIn:=xlValues, LookAt:= _
xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False) _
.Activate
ActiveWindow.SelectedSheets.HPageBreaks.Add Before:=ActiveCell
End Sub
Sub 取消原分页()
Cells.Select
ActiveSheet.ResetAllPageBreaks
End Sub
18:将A列最后数据行以上的所有B列图片大小调整为所在单元大小
Sub 将A列最后数据行以上的所有B列图片大小调整为所在单元大小()
Dim Pic As Picture, i&
i = [A65536].End(xlUp).Row
For Each Pic In Sheet1.Pictures
If Not Application.Intersect(Pic.TopLeftCell, Range("B1:B" & i)) Is Nothing Then
Pic.Top = Pic.TopLeftCell.Top
Pic.Left = Pic.TopLeftCell.Left
Pic.Height = Pic.TopLeftCell.Height
Pic.Width = Pic.TopLeftCell.Width
End If
Next
End Sub
19:返回光标所在行数
Sub 返回光标所在行数()
x = ActiveCell.Row
Range("A1") = x
End Sub
20:在A1返回当前选中单元格数量
Sub 在A1返回当前选中单元格数量()
[A1] = Selection.Count
End Sub
21:返回当前工作簿中工作表数量
Sub 返回当前工作簿中工作表数量()
t = Application.Sheets.Count
MsgBox t
End Sub
93:B列录入数据时在A列返回记录时间(工作表代码)
Public Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 2 Then
Target.Offset(, -1) = Now
End If
End Sub
94:当指定区域修改时在其右侧的2个单元返回当前日期和时间(工作表代码)
Public Sub Worksheet_Change(ByVal Target As Range)
If Not Application.Intersect(Target, [A1:A1000]) Is Nothing Then
If Target.Column = 1 Then
Target.Offset(, 1) = Date
Target.Offset(, 2) = Time
End If
End If
End Sub
Public Sub Worksheet_Change(ByVal Target As Range)
If Not Application.Intersect(Target, [A1:A1000]) Is Nothing Then
If Target.Column = 1 Then
Target.Offset(, 1) = Format(Now(), "yyyy-mm-dd")
Target.Offset(, 2) = Format(Now(), "h:mm:ss")
End If
End If
End Sub
95:指定单元显示光标位置内容(工作表代码)
Private Sub Worksheet_SelectionChange(ByVal T As Range)
Sheets(1).Range("A1") = Selection
End Sub
96:每编辑一个单元保存文件
Private Sub Worksheet_Change(ByVal Target As Range)
ThisWorkbook.Save
End Sub
97:指定允许编辑区域
Sub 指定允许编辑区域()
ActiveSheet.ScrollArea = "B8:G15"
End Sub
98:解除允许编辑区域限制
Sub 解除允许编辑区域限制()
ActiveSheet.ScrollArea = ""
End Sub
99:删除指定行
Sub 删除指定行()
Workbooks("临时表").Sheets("表2").Range("5:5").Delete
End Sub
100:删除A列为指定内容的行
Sub 删除A列为指定内容的行()
Dim a, b As Integer
a = Sheet1.[a65536].End(xlUp).Row
For b = a To 2 Step -1
If Cells(b, 1).Value = "删除" Then
Rows(b).Delete
End If
Next
End Sub
Sub 累计()
For i = 2 To Range("A65536").End(xlUp).Row
For n = 2 To Sheets("累计表").Range("A65536").End(xlUp).Row
If Cells(i, "A") = Sheets("累计表").Cells(n, "A") Then
Cells(i, "D") = Cells(i, "C") - Sheets("累计表").Cells(n, "b")
End If
Next
Next
End Sub
你上一个查找 职称的,已回答
嗯,不急的话忙完帮你处理
我没学过函数,谁给我讲讲怎么求最大值和最小值???
y=ax+b a>0 在x范围内,x取最大,y最大,x取最小,y最小 a<0 在x范围内,x取最小,y最大,x取最大,y最小
若函数y= -1\/2x^2+13\/2在a《x《b时有最小值2a,最大值2b,求a、b的值
y=(-1\/2)x²+(13\/2)由图像可知,对称轴是y轴,最大值是13\/2 当a<b<=0时,x=a取最小值,x=b取最大值 (-1\/2)a²+(13\/2)=2a (-1\/2)b²+(13\/2)=2b a,b是一元二次方程(-1\/2)x²+(13\/2)=2x的两根 x²+4x-13=0 显然,这个方程有一正一...
计算机函数公式有哪些?
ABS函数、AND函数、AVERAGE函数 1、ABS函数 函数名称:ABS 主要功能:求出相应数字的绝对值。使用格式:ABS(number)参数说明:number代表需要求绝对值的数值或引用的单元格。应用举例:如果在B2单元格中输入公式:=ABS(A2),则在A2单元格中无论输入正数(如100)还是负数(如-100),B2中均显示出正数...
函数y=a+bsin2x的最大值为8.最小值为4.求ab的值
回答:-1<=sin2x<=1 8=a+2b 4=a-2b a=6 b=1
数学反函数求解答第8 9 题要带公式过程谢谢!
答案是BA 你们最近应该是在学反函数吧。反函数的图像是关于y=x对称的,例如e∧x与㏑x 这两道题运用这个知识点很容易可以做出来 8关于y=x对称,所以是反函数选B 9是反函数所以图像关于y=x对称,所以该函数过(1,2),代入得a+b=4,就能推得ab的最大值4,选A 另外,对于第8题的直线对称,...
【jiasuba】Word怎么样用函数实现数据计算
将光标置于张三同学的均分单元格中,依然是执行“表格→公式”菜单命令。在公式对话框中,删掉默认输入的SUM公式(保留前面的“=”号),然后单击“粘贴函数”下拉按钮,选择“AVERAGE”,这就是计算平均数的函数了。在自动显示的AVERAGE函数后面的括号中手工输入“B2:D2”(此时完整的公式应为:...
数据结构问题
(1)时间问题没有表述 (2)'1图为:A B C D E F G H '2图为:A B F C G D E H 3'图为:前序为AB的数 A B C D E F G H 后序为BA的图:C D E F G H A B (3)数的最大高度为5。(5)'1 a为根节点 '2 d,f,l,j,k,m,n为叶节点 '3 c '4...
已知函数y=b+a x2+x(a、b是常数且a>0,a≠1)在区间[-32,0]上有最大值...
(1)令u=x2+2x=(x+1)2-1,x∈[-32,0],∴当x=-1时,umin=-1 当x=0时,umax=0.(2分)①当a>1时,b+a0=3b+a?1=52,解得 a=2b=2.(5分)②当0<a<1时,b+a?1=3b+a0=52,解得
...数据量比较大,想用公式简单些,求高手指点一下。
Q2:=IFERROR(1\/INDEX(N:N,SMALL(IF($N$2:$N$1001<>$N$1:$N$1000,ROW($2:$1001)),ROW(A1)))^-1,"")R2:=IFERROR(SUM(INDEX(O:O,SMALL(IF($N$2:$N$1001<>$N$1:$N$1000,ROW($2:$1001)),ROW(A1))):INDEX(O:O,SMALL(IF($N$2:$N$1001<>$N$1:$N$1000,ROW($...
已知函数f(x)=asinx+bcosx(1)当f(π\/4)=√2,且f(x)的最大值为√10时...
f(x)=√a^2+b^2(sin(x+d))d=tan(b\/a)由题意知x+d=π\/2时,d=π\/4 ,a=b a^2+b^2=10,a=b=√5
柳龙石杉: Sub 累计()For i = 2 To Range("A65536").End(xlUp).RowFor n = 2 To Sheets("累计表").Range("A65536").End(xlUp).RowIf Cells(i, "A") = Sheets("累计表").Cells(n, "A") ThenCells(i, "D") = Cells(i, "C") - Sheets("累计表").Cells(n, "b")End IfNextNextEnd Sub你上一个查找 职称的,已回答
文圣区19859349671: 如何在VBA中编制函数公式 - ?
柳龙石杉: offiice 中处定义函数需要在VBA编辑器,定义Function_函数名()的形式,就可以在WORD EXCEL中调用.
文圣区19859349671: 请帮忙写一个VBA的自定义函数,谢谢 - ?
柳龙石杉: function ccount(tt) if hour(tt)>=8 then count=hour(tt) else ccount=16+hour(tt) end if end function
文圣区19859349671: vba怎么编写下面的countif函数? - ?
柳龙石杉: 用变量来替换表,如X1代表333934165770,在A1单元格写公式: Range("A1").Formula = "=COUNTIF('" & x1 & "'!D:D,查询!C:C)+COUNTIF(…………" 省略号部分参照X1表号同样处理,最后一个引号
文圣区19859349671: 我会EXCEL公式 计算数据 但是不知道VBA怎么进行编写 , - ?
柳龙石杉: VBA里直接写[A5]="=SUM(A1:A4)"这么写VBA就认为你是要写数据而不是写公司,它会在每个字母前加一个',你只能用R[1]C[1]来表示,比如可以写成[A5] = "=SUM(R[-4]C[0]:R[1]C[0])"和你在单元格里写=SUM(A1:A4) 是一样的.
文圣区19859349671: VBA代码写函数 - ?
柳龙石杉: 首先,你要插入一个模块,然后在模块中输入如下代码:Public Function now2() now2 = Application.WorksheetFunction.Text(Now(), "yyyy-m-d h:mm") End Function 调用的时候,在单元格中输入=now2()
文圣区19859349671: 求会VBA的大神帮我编写2个十分简单的函数的代码 谢谢谢谢谢谢 - 0*~ - ?
柳龙石杉: Function fa(x As Double) As Doublefa = (4133) ^ 0.5 * x + 33 * xEnd FunctionFunction fb(x As Long) As LongDim temp1Dim temp2Dim endingIf x = 0 Or x = 1 Thenfb = xElsetemp1 = 0temp2 = 1For i = 2 To xending = temp1 + temp2temp1 = temp2...
文圣区19859349671: VBA自定义函数如何输写? - ?
柳龙石杉: 在工作表中调用来执行:A2 =汉书(A1)执行::子Diaoyong()调用代码点心e只要D =“汉书”(10)完小功能汉书(变异)只要如果val(一)> 0 汉书= 1 >其他汉书= 0 最后如果端功能...
文圣区19859349671: 如何用Function函数编写VBA代码 - ?
柳龙石杉: 1、 Function gs() gs = ActiveSheet.Cells(ActiveCell.Row, 1) + ActiveSheet.Cells(ActiveCell.Row, 2) + ActiveSheet.Cells(ActiveCell.Row, 3) End Function 在D列及其右边列输入 =gs() 2、 Function gs(a, b, c)gs = a + b - c '把公式的计算过程写到这...
文圣区19859349671: VBA编程:Sumif countif函数如何用VBA字典编写?例,我用的是函数引用(如图),因为 - ?
柳龙石杉: 会VBA基本可以不用函数,这是一定可以的 SUB () Application.ScreenUpdating= False *****Application.ScreenUpdating= True End SUB 看看这样会不会快一点