ExcelVBA SQL+ADO同樣可以操作當(dāng)前工作簿的工作表
網(wǎng)友提問:

圖片放大

回答網(wǎng)友問題:
我跟大家說過,字典在絕大多數(shù)情況下可以被代替。這個問題同樣不需要字典
但是,大家注意幾個細(xì)節(jié)。
(1)你原始表,不能是打開一個工作簿,寫上一點(diǎn)數(shù)據(jù),不保存就操作。您需要把當(dāng)前工作簿先保存到硬盤上再打開。
(2)每一次操作時,他默認(rèn)是指定表所有有數(shù)據(jù)的區(qū)域。如果你第2次再運(yùn)行,E1:G6 被你寫了數(shù)據(jù),會影響你的結(jié)果。但是可以解決。稍后講
先準(zhǔn)備數(shù)據(jù),從硬盤上打開這個工作簿

寫VBA代碼(先把代碼放出來,思路在后面)
運(yùn)行結(jié)果

如果想指定A1至C9這個區(qū)域,只需要將SQL語句中的 [孫興華$] 改成??[孫興華$A1:A9]?
如果行不能確定,我們可以找A1單元格的連續(xù)區(qū)域最大行,方法在ExcelVBA中講了很多
最后拼接字符串就可以了。
下面講一下SQL語句思路(方法不唯一)
我們原始表

我們對所有列去重

對時間和班別分組并計數(shù)

現(xiàn)在我們得到了上面兩個SQL語句,第2個語句中的去重就是第1個SQL語句

ExcelVBV:https://www.bilibili.com/video/BV1rt4y1a72y
SQL:https://www.bilibili.com/video/BV1Dk4y1d71j
標(biāo)簽: