请找到我的下面的示例表,我已经应用了if乘以数值数据的条件。
查询代码
sql_string = "Select [Sheet5$].[num] * IIf(([Sheet5$].[to]-[Sheet5$].[frm])<365, .4," & _
"IIf(([Sheet5$].[to]-[Sheet5$].[frm])>365, 1, 0)) from [Sheet5$]"
以上代码将帮助我将条件仅应用于 ie num 一列。但是我想将它应用于20-30列的多列,这些列可以在我的实际数据中使用。可以提及列名称,但不能将上述 if condition 写入每列。请指导我。
答案 0 :(得分:0)
你的意思是这样吗?
Public Sub test()
Dim sql_string As String
Dim sheet_name As String
sheet_name = "Sheet5$"
sql_string = "Select "
sql_string = sql_string & GetField(sheet_name, "num") & ","
sql_string = sql_string & GetField(sheet_name, "num1") & ","
sql_string = sql_string & GetField(sheet_name, "num2") & ","
sql_string = sql_string & GetField(sheet_name, "num3")
sql_string = sql_string & " from [" & sheet_name & "]"
Debug.Print sql_string
End Sub
Public Function GetField(ByVal sheet_name As String, ByVal fieldName As String)
GetField = "[" & sheet_name & "].[" & fieldName & "] * IIf(([" & sheet_name & "].[to] - [" & sheet_name & "].[frm]) < 365, 0.4, IIf(([" & sheet_name & "].[to] - [" & sheet_name & "].[frm]) > 365, 1, 0))"
End Function
结果:
Select [Sheet5$].[num] * IIf(([Sheet5$].[to] - [Sheet5$].[frm]) < 365, 0.4, IIf(([Sheet5$].[to] - [Sheet5$].[frm]) > 365, 1, 0)),
[Sheet5$].[num1] * IIf(([Sheet5$].[to] - [Sheet5$].[frm]) < 365, 0.4, IIf(([Sheet5$].[to] - [Sheet5$].[frm]) > 365, 1, 0)),
[Sheet5$].[num2] * IIf(([Sheet5$].[to] - [Sheet5$].[frm]) < 365, 0.4, IIf(([Sheet5$].[to] - [Sheet5$].[frm]) > 365, 1, 0)),
[Sheet5$].[num3] * IIf(([Sheet5$].[to] - [Sheet5$].[frm]) < 365, 0.4, IIf(([Sheet5$].[to] - [Sheet5$].[frm]) > 365, 1, 0)) from [Sheet5$]