我怎么能把一个大于一个字。 我应该创建一个函数吗? 我有一个带有7张表格的excel文件。一个通用的所有元素和另外6个与铜,银,金,普拉丁,PlPlus& Ambass
我想要的是:
Bronze < Silver < Gold < Platin < PlPlus < Ambass
并提出考虑D或F列的条件 并且例如在第10行上说:
let's say on my general sheet I have, D10 = silver
let's say on my general sheet I have, F10 = gold
If D10 < F10 then send the entire Row to a special sheet "GOLD"
let's say on my general sheet I have, D10 = Platin
let's say on my general sheet I have, F10 = Bronze
If D10 > F10 then send the entire Row10 to a special sheet "Platin"
let's say on my general sheet I have, D10 = F10 =silver
if there are the same status send it to the sheet with that status.
我怎么能在vba上解释,青铜是最小的类别之后是白银之后的黄金之后是Platin之后是PlPlus之后是Ambass ??
答案 0 :(得分:0)
您可以在静态工作表上使用它们,然后按顺序从a1到#,然后使用worksheetfunction.match
为您提供行,或者像Application.WorksheetFunction.Match("gold",array("silver","gold","platinum"))
function metal_rank(strMetal as string) as long
Application.WorksheetFunction.Match(strMetal,array("silver","gold","platinum"))
end function
答案 1 :(得分:0)
在标准VBA模块中,创建一个函数:
Function category(categoryName as String) as Integer
select case categoryName
case "Bronze"
category = 0
case "Silver"
category = 1
case "Gold"
category = 2
case "Platin"
category = 3
case "PlPlus"
category = 4
case "Ambass"
category = 5
end select
end function
然后,在您的调用代码中,您可以进行这样的比较:
dim ws as Worksheet
If category(D10) < category(F10) then
set ws = worksheets(F10)
else ' Either category(D10) is greater, or they're equal
set ws = worksheets(D10)
endif
这会将变量ws设置为您要编写数据的工作表。
答案 2 :(得分:0)
您可以在主代码中使用辅助函数(例如,GetSheetName()
),并接受两个范围值进行比较,并返回工作表名称,其中&#34;发送&#34;数据:
Sub main()
With Worksheets(GetSheetName(Range("D10").Value, Range("F10").Value))
MsgBox .Name
End With
End Sub
以便GetSheetName()
成为:
Function GetSheetName(val1 As String, val2 As String) As String
Select Case GetRank(UCase(val1)) - GetRank(UCase(val2))
Case Is < 0
GetSheetName = val2
Case Else
GetSheetName = val1
End Select
End Function
反过来使用另一个辅助函数来返回传递值的 rank
后一个辅助函数可以利用许多不同的可用方法/函数
Application.Match
方法(如@Natahn_Sav建议的那样):
Function GetRank(val As String) As Long
GetRank = Application.WorksheetFunction.Match(val, Array("Bronze", "Silver", "Gold", "Platinum", "PlPlus", "Ambass"))
End Function
Switch
功能
Function GetRank(val As String) As Long
GetRank = Switch(val = "BRONZE", 0, _
val = "SILVER", 1, _
val = "GOLD", 2, _
val = "PLATIN", 3, _
val = "PLPLUS ", 4, _
val = "AMBASS", 5)
End Function
Select Case
语法
Function GetRank(val As String) As Long
Select Case val
Case "BRONZE"
GetRank = 0
Case "SILVER"
GetRank = 1
Case "GOLD"
GetRank = 2
Case "PLATIN"
GetRank = 3
Case "PLPLUS"
GetRank = 4
Case "AMBASS"
GetRank = 5
End Select
End Function