【发布时间】:2021-03-18 18:24:49
【问题描述】:
我正在尝试在“备注 1”列中搜索关键字,如果找到则返回一个字符串,如果没有找到则返回另一个。
我有以下代码可以正常工作,但无法让 IIF 正常工作:
"IIF([Remarks 1] Like '%Pizza%','Pizza','Other') AS [Desc2], " _
(我需要稍后按此列分组)
另外:我可以嵌套 IFF 来搜索其他关键字吗?
错误:您尝试执行的查询不包含指定表达式 'iif([Remarks 1] ALike '%Pizza%','Pizza','Other') 作为聚合函数的一部分
Sub MacroTest()
Dim wb As Workbook
Dim ws1 As Worksheet
Dim ws2 As Worksheet
Set wb = ActiveWorkbook
Set ws1 = wb.Sheets("Sheet1")
Set ws2 = wb.Sheets("Sheet2")
ws2.Cells.ClearContents
ws2.Range("A1").Value = "Account Name"
ws2.Range("B1").Value = "Account Number"
ws2.Range("C1").Value = "Currency"
ws2.Range("D1").Value = "Description"
ws2.Range("E1").Value = "Credit Amount"
ws2.Range("F1").Value = "Debit Amount"
Const adOpenStatic = 3
Const adLockOptimistic = 3
Const adCmdText = &H1
Set objConnection = CreateObject("ADODB.Connection")
Set objRecordset = CreateObject("ADODB.Recordset")
objConnection.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=C:\Users\username\Desktop\Test1.xlsx;" & _
"Extended Properties=""Excel 8.0;HDR=Yes;"";"
objRecordset.Open "SELECT [Account Name], " _
& "[Account Number], " _
& "[Currency], " _
& "[Description], " _
& "SUM([Credit Amount])," _
& "-SUM([Debit Amount])," _
& "IIF([Remarks 1] Like '%Pizza%','Pizza','Other') AS [Desc2] " _
& "FROM [Sheet1$] " _
& "GROUP BY [Account Name], " _
& "[Account Number], " _
& "[Currency]," _
& "[Desc2]," _
& "[Description]", _
objConnection, adOpenStatic, adLockOptimistic, adCmdText
ws2.Range("A2").CopyFromRecordset objRecordset
End Sub
【问题讨论】:
-
学习使用参数!
-
首先用方括号替换列名周围的 mysql 风格的重音符,用single quotes 替换字符串文字周围的双引号,并删除最后一个选定列之后的尾随逗号。
-
根据 GSerg 的建议进行的编辑