wps版excel怎麼設置下拉篩選?本節将在宏查詢的SQL語句加入篩選條件,下面我們就來聊聊關于wps版excel怎麼設置下拉篩選?接下來我們就一起去了解一下吧!
本節将在宏查詢的SQL語句加入篩選條件。
在上一節中使用常量定義了whereStr,在本節中,将這個語句設定成從報表上面标黃的查詢條件中動态獲取。
修改查詢按鈕代碼如下:
//查詢按鈕的單擊事件
function CommandButton1_Click()
{
//使用變量ReportSh 引用工作表對象:報表
let ReportSh = Application.Worksheets.Item("報表")
//使用變量ReportQuery 引用報表工作表内的查詢對象
let ReportQuery = ReportSh.QueryTables.Item(1)
//DictSh 引用工作表對象:字典
let DictSh = Application.Worksheets.Item("字典")
//先定義一個 where 語句來測試 sql 語句
//const whereStr = 'where (left([單位],6)="101006") and ([計劃月份] between "01" and "05")'
/******* 注釋掉上面的語句,使用getWhereStr函數動态替換 ***/
/*
* 将字典工作表D1單元格存儲的sql語句取出
* 并使用 getWhereStr函數的返回值替換語句中的 ?
*/
let sqlstr = DictSh.Range("D1").Value2.replace(/\?/g, getWhereStr(ReportSh))
// Console.log(sqlstr)
//将sqlstr 賦值給查詢對象,并刷新查詢
ReportQuery.CommandText = sqlstr
ReportQuery.Refresh()
}
切換到lib模塊,将 getWhereStr()這個函數完善。代碼如下:
/* 函數名:getWhereStr 獲取報表工作表上設定的條件
* 參 數:傳入一個參數Sh 為工作表的引用
* 返回值:sql語句
*/
function getWhereStr(Sh)
{
//定義where語句, true後面方便加語句,即便不加語句,也不會出錯
let WhereStr = " where true"
//定義單位名稱 使用Text屬性,适應單元格為空的情況
//單元格為空時,屬性Value2是undefined,不能使用substr
//非要使用Value2,則可以:if (Sh.Range('f1').Value2){ alert("可用")} else {alert("不可用")}
let UnitName = Sh.Range('f1').Text.substr(0,7)
//加入條件字符串 如果單位選擇全部或者沒選擇單位 則去掉單位篩選
if (UnitName == '' || UnitName =='0-全部'){}
else {
WhereStr = " and (left([單位],7) = '" UnitName "')"
}
/* 三元表達式可精簡上面if語句,但影響可讀性:
WhereStr = UnitName == '' || UnitName =='0-全部' ? "" :
" and (left([單位],7) = '" UnitName "')"
*/
//定義設置月份 也就是結束的月份
let EndMonth = Sh.Range('c1').Text.substr(0,2)
//定義月份期間 也就是開始的月份
let BeginMonth = Sh.Range('c2').Text
//沒有設置月份的時候,不進行篩選,即提取所有月份的數據
if (EndMonth !=''){
/* 定義開始月份 并定義默認值為'01' 即年初
變量(賦值符号)(條件) ? (表達式1):(表達式2)
三元表達式,條件為真時,返回表達式1,否則返回表達式2
可以在表達式1和2中嵌套三元表達式使用 */
BeginMonth = BeginMonth == '當月' ? EndMonth : '01'
//加入條件字符串 如果開始月份與結束月份一緻,則使用=,否則使用between and
WhereStr = BeginMonth == EndMonth ?
" and ([計劃月份] = '" EndMonth "')" :
" and ([計劃月份] between '" BeginMonth "' and '" EndMonth "')"
}
//返回sql語句
return WhereStr
}
在【報表】工作表中,點擊【查詢】按鈕,可以看到數據被刷新了。
修改【報表】工作表上面的條件,可以看到不同的報表數據。
本節到此結束,下一節,将完善查詢明細的按鈕代碼。
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!