前兩天,一個朋友問我,有沒有辦法在excel里實(shí)現(xiàn)一個表單里是原始數(shù)據(jù),在另一個表單里顯示搜索到的行,搜索關(guān)鍵詞可用~分隔開,并把搜索歷史記錄下來?

  我想了想,用vba實(shí)現(xiàn)肯定可以啊,但是我又在想,有沒有可能excel自身的功能就可以實(shí)現(xiàn)了呢,但是后來沒有發(fā)現(xiàn)excel自帶這種功能。于是思考自己用vba給實(shí)現(xiàn)吧。

  于是我打開我的電腦,結(jié)果發(fā)現(xiàn)我的office版本是wps,根本就沒有vba功能,網(wǎng)上說的使用vba模塊安裝,但是始終沒有安裝成功。最后放棄了,自己下載一個office2013, 自帶vba功能。

  其實(shí)搜索功能實(shí)現(xiàn)思路相當(dāng)簡單,無非就幾個循環(huán),把關(guān)鍵詞分割出來循環(huán),按行搜索循環(huán),按列搜索循環(huán),然后得到結(jié)果后,填充結(jié)果,對于歷史記錄,則需要得到最后一行的行號等。

附件已上傳,可點(diǎn)擊去下載: 跨表單搜索示例-2003.zip 
http://files.cnblogs.com/files/yougewe/%E8%B7%A8%E8%A1%A8%E5%8D%95%E6%90%9C%E7%B4%A2%E7%A4%BA%E4%BE%8B-2003.zip

關(guān)鍵功能代碼提示:

Sheets("原始數(shù)據(jù)").Range("A6").CurrentRegion        '獲取選擇區(qū)域數(shù)據(jù)searchArr = Split(searchStr, "~")                  ' 分割關(guān)鍵詞Range("A9:V" & Rows.Count).ClearContents        ' 清空原有數(shù)據(jù)Sheets("搜索記錄").Range("A65536").End(xlUp).Row    '獲取最大行的行號Sheets("搜索記錄").Range("A" & maxRow).Resize(m, columnCount) = brr    '數(shù)據(jù)填充

  實(shí)現(xiàn)代碼如下: 

萬碼學(xué)堂,電腦培訓(xùn),計(jì)算機(jī)培訓(xùn),Java培訓(xùn),JavaEE開發(fā)培訓(xùn),青島軟件培訓(xùn),軟件工程師培訓(xùn)

Sub 點(diǎn)擊搜索原始數(shù)據(jù)()    Dim i&, j&, m&, c%, t$, columnCount    Dim arr, brr(), searchArr()&n