北京凯德晶品购物中心:VBA编程中求某列的最大值的函数

来源:百度文库 编辑:神马品牌网 时间:2024/04/27 21:55:05
是MAX(g:g)吗,好象不行

VBA内置函数中没有求最大值的函数,但可以利用excel中表格可以用max函数,在VBA中也可以用,只需通过WorksheetFunction对象就可以引用,后面加函数名称,然后加range来引用单元格。举个例子:
Application.WorksheetFunction.Max(range("A1:C5"))
从 Visual Basic 中调用工作表函数:
在 Visual Basic 中,通过 WorksheetFunction 对象可使用 Microsoft Excel 工作表函数。
例如:

下 Sub 过程使用 Max 工作表函数来决定在某个单元格区域中的最大值。首先,将变量 myRange 声明为 Range 对象,然后将其设置为
Sheet1 上的 A1:C10 单元格区域。指定另一个变量 answer 为对 myRange 应用 Max 函数的结果。最后,answer 的值就被显示在消息框中。
编码如下:
Sub UseFunction()
Dim myRange As Range
Set myRange = Worksheets("Sheet1").Range("A1:C10")
answer = Application.WorksheetFunction.Max(myRange)
MsgBox answer
End Sub

VBA编程中通过WorksheetFunction对象引用,后面加函数名称,然后加range来引用单元格来求某列的最大值的函数:
Sub UseFunction()
Dim myRange As Range
Set myRange = Worksheets("Sheet1").Range("A1:C10")
answer = Application.WorksheetFunction.Min(myRange)
MsgBox answer
End Sub

楼上两位:VBA内置函数中没有求最大值的函数,所以你们的命令肯定不能运行,程序会报错。不过我们可以曲线救国,excel中表格可以用max函数,在VBA中也可以用,只需通过WorksheetFunction对象就可以引用,后面加函数名称,然后加range来引用单元格。举个例子:
Application.WorksheetFunction.Max(range("A1:C5"))

下面就是如何在VBA中使用excel自带函数的文章。说简单其实很简单,根据我的经历,仔细阅读一下非常非常有好处,以后能省大力气,因为这个绝对会经常用到。如果嫌罗嗦,直接看看例子就明白怎么用了。但强烈建议你收藏起来以后阅读。

在 Visual Basic 语句中可以使用大多数 Microsoft Excel 工作表函数。若要查看可以使用的工作表函数列表,请参阅 Visual Basic 可使用的工作表函数列表。

注意 一些工作表函数在 Visual Basic 中是不实用的。例如:Concatenate 函数就不实用,因为在 Visual Basic 中可使用 & 运算符来连接多个文本值。

从 Visual Basic 中调用工作表函数
在 Visual Basic 中,通过 WorksheetFunction 对象可使用 Microsoft Excel 工作表函数。

以下 Sub 过程使用 Min 工作表函数来决定在某个单元格区域中的最小值。首先,将变量 myRange 声明为 Range 对象,然后将其设置为 Sheet1 上的 A1:C10 单元格区域。指定另一个变量 answer 为对 myRange 应用 Min 函数的结果。最后,answer 的值就被显示在消息框中。

Sub UseFunction()
Dim myRange As Range
Set myRange = Worksheets("Sheet1").Range("A1:C10")
answer = Application.WorksheetFunction.Min(myRange)
MsgBox answer
End Sub
如果您使用的工作表函数需要一个单元格区域引用作为参数,则必须指定一个 Range 对象。例如:您可以用 Match 工作表函数搜索单元格区域。可以在工作表单元格中输入公式,如“=MATCH(9,A1:A10,0)”。但是,您应在 Visual Basic 过程中指定一个 Range 对象来获取相同的结果。

Sub FindFirst()
myVar = Application.WorksheetFunction _
.Match(9, Worksheets(1).Range("A1:A10"), 0)
MsgBox myVar
End Sub
注意 Visual Basic 函数不使用 WorksheetFunction 识别符。函数可能和 Microsoft Excel 的函数同名但作用各异。例如:Application.WorksheetFunction.Log 和 Log 将返回不同的值。

在单元格中插入工作表函数
若要在单元格中插入工作表函数,请指定函数作为相应的 Range 对象的 Formula 属性值。以下示例中,将 RAND 工作表函数(可生成随机数)赋给了活动工作簿中 Sheet1 上 A1:B3 单元格区域的 Formula 属性。

Sub InsertFormula()
Worksheets("Sheet1").Range("A1:B3").Formula = "=RAND()"
End Sub
示例
本示例使用工作表函数 Pmt 来计算住宅抵押贷款的支付额。请注意,本示例使用的是 InputBox 方法,而不是 InputBox 函数,因此该方法可以执行类型检查。Static 语句使 Visual Basic 保留三个变量的值;当下次运行该程序时,这些变量将显示为默认值。

Static loanAmt
Static loanInt
Static loanTerm
loanAmt = Application.InputBox _
(Prompt:="Loan amount (100,000 for example)", _
Default:=loanAmt, Type:=1)
loanInt = Application.InputBox _
(Prompt:="Annual interest rate (8.75 for example)", _
Default:=loanInt, Type:=1)
loanTerm = Application.InputBox _
(Prompt:="Term in years (30 for example)", _
Default:=loanTerm, Type:=1)
payment = Application.WorksheetFunction _
.Pmt(loanInt / 1200, loanTerm * 12, loanAmt)
MsgBox "Monthly payment is " & Format(payment, "Currency")

可用于 Visual Basic 的工作表函数列表

A_______________________________
Acos
Acosh
And
Asin
Asinh
Atan2
Atanh
AveDev
Average
B_______________________________
BetaDist
BetaInv
BinomDist
C_______________________________
Ceiling
ChiDist
ChiInv
ChiTest
Choose
Clean
Combin
Confidence
Correl
Cosh
Count
CountA
CountBlank
CountIf
Covar
CritBinom
D_______________________________
DAverage
Days360
Db
DCount
DCountA
Ddb
Degrees
DevSq
DGet
DMax
DMin
Dollar
DProduct
DStDev
DStDevP
DSum
DVar
DVarP
E_______________________________
Even
ExponDist
F_______________________________
Fact
FDist
Find
FindB
FInv
Fisher
FisherInv
Fixed
Floor
Forecast
Frequency
FTest
Fv
G_______________________________
GammaDist
GammaInv
GammaLn
GeoMean
Growth
H_______________________________
HarMean
HLookup
HypGeomDist
I_______________________________
<Index
Intercept
Ipmt
Irr
IsErr
IsError
IsLogical
IsNA
IsNonText
IsNumber
Ispmt
IsText
J_______________________________
K_______________________________
Kurt
L_______________________________
Large
LinEst
Ln
Log
Log10
LogEst
LogInv
LogNormDist
Lookup
M_______________________________
Match
Max
MDeterm
Median
Min
MInverse
MIrr
MMult
Mode
N_______________________________
NegBinomDist
NormDist
NormInv
NormSDist
NormSInv
NPer
Npv
O_______________________________
Odd
Or
P_______________________________
Pearson
Percentile
PercentRank
Permut
Phonetic
Pi
Pmt
Poisson
Power
Ppmt
Prob
Product
Proper
Pv
Q_______________________________
Quartile
R_______________________________
Radians
Rank
Rate
Replace
ReplaceB
Rept
Roman
Round
RoundDown
RoundUp
RSq
RTD
S_______________________________
Search
SearchB
Sinh
Skew
Sln
Slope
Small
Standardize
StDev
StDevP
StEyx
Substitute
Subtotal
Sum
SumIf
SumProduct
SumSq
SumX2MY2
SumX2PY2
SumXMY2
Syd
T_______________________________
Tanh
TDist
Text
TInv
Transpose
Trend
Trim
TrimMean
TTest
U_______________________________
USDollar
V_______________________________
Var
VarP
Vdb
VLookup
W_______________________________
Weekday
Weibull
X_______________________________
Y_______________________________
Z_______________________________
ZTest

Max(A1:A20)
1,开头的行值
20,结束的行值
A,列

如果求A列的最大值
MAX(A[-1])