日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > php >内容正文

php

php多个表中查找数据_Excel实战技巧74: 在工作表中创建搜索框来查找数据

發布時間:2024/7/23 php 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 php多个表中查找数据_Excel实战技巧74: 在工作表中创建搜索框来查找数据 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

學習Excel技術,關注微信公眾號:

excelperfect

本文主要講解如何創建一個外觀漂亮的搜索框,通過它可以篩選數據并顯示搜索結果。

如下圖1所示,在數據區域上方放置有一個文本框,用來輸入要搜索的文本,其名稱重命名為“MySearch”;一個用作按鈕的矩形形狀,點擊它開始搜索并顯示結果;兩個選項按鈕窗體控件,用來選擇在數據區域的哪列進行搜索。

圖1

在VBE中,插入一個標準模塊,輸入代碼:

Sub SearchData() Dim optButton As OptionButton Dim strButtonName As String Dim wks As Worksheet Dim lngField As Long Dim rngData As Range Dim vSearch As Variant '賦值工作表變量 Set wks = ActiveSheet '取消篩選 On Error Resume Next wks.ShowAllData On Error GoTo 0 '數據區域(包括列標題) Set rngData = wks.Range("B5:F30") '對于表,可使用下面的代碼 'Set rngData = wks.ListObjects("表1").Range '獲取用戶要搜索的文本 vSearch =wks.Shapes("MySearch").TextFrame.Characters.Text '如果搜索框為ActiveX控件,可用下面的代碼 'vSearch =wks.OLEObjects("MySearch").Object.Text '如果搜索框為單元格輸入,可用下面的代碼 'vSearch = wks.Range("A1").Value '遍歷選項按鈕 For Each optButton In ActiveSheet.OptionButtons If optButton.Value = 1 Then strButtonName = optButton.Text Exit For End If Next optButton '確定篩選字段 On Error GoTo errH lngField = Application.WorksheetFunction.Match(strButtonName,rngData.Rows(1), 0) On Error GoTo 0 '篩選數據 rngData.AutoFilter Field:=lngField, _ Criteria1:="=*" & vSearch& "*", _ Operator:=xlAnd '清除搜索字段 wks.Shapes("MySearch").TextFrame.Characters.Text ="" '如果搜索框為ActiveX控件,可用下面的代碼 'wks.OLEObjects("MySearch").Object.Text = "" '如果搜索框為單元格輸入,可用下面的代碼 'wks.Range("A1").Value ="" Exit Sub errH: MsgBox "在單元格區域" &rngData.Rows(1).Address & _ "中,沒有找到列標題["& strButtonName & "]." & _ vbNewLine & "請檢查.",vbCritical, "標題名沒發現!"End Sub

在代碼中,對要搜索的文本使用了通配符,因此可以搜索部分匹配的文本。此外,對數據區域使用了“硬編碼”,你可以將其修改為實際的數據區域。代碼運行的結果如下圖2所示。

圖2

我們在上面的基礎上再進行擴展,讓搜索字段更多一些,如下圖3所示,可以搜索含有數字的列。

圖3

代碼如下:

Sub SearchDataPlus() Dim optButton As OptionButton Dim strSearch As String Dim strButtonName As String Dim wks As Worksheet Dim lngField As Long Dim rngData As Range Dim vSearch As Variant '賦值工作表變量 Set wks = ActiveSheet '取消篩選 On Error Resume Next wks.ShowAllData On Error GoTo 0 '數據區域(包括列標題) Set rngData = wks.Range("B5:F30") '對于表,可使用下面的代碼 'SetrngData = wks.ListObjects("表1").Range '獲取用戶要搜索的文本 vSearch =wks.Shapes("MySearch").TextFrame.Characters.Text '如果搜索框為ActiveX控件,可用下面的代碼 'vSearch =wks.OLEObjects("MySearch").Object.Text '如果搜索框為單元格輸入,可用下面的代碼 'vSearch = wks.Range("A1").Value '確定用戶要搜索文本還是數值 If IsNumeric(vSearch) = True Then strSearch = "=" & vSearch Else strSearch = "=*" &vSearch & "*" End If '遍歷選項按鈕 For Each optButton InActiveSheet.OptionButtons If optButton.Value = 1 Then strButtonName = optButton.Text Exit For End If Next optButton '確定篩選字段 On Error GoTo errH lngField =Application.WorksheetFunction.Match(strButtonName, rngData.Rows(1), 0) On Error GoTo 0 '篩選數據 rngData.AutoFilter Field:=lngField, _ Criteria1:=strSearch, _ Operator:=xlAnd '清除搜索字段 wks.Shapes("MySearch").TextFrame.Characters.Text ="" '如果搜索框為ActiveX控件,可用下面的代碼 'wks.OLEObjects("MySearch").Object.Text = "" '如果搜索框為單元格輸入,可用下面的代碼 'wks.Range("A1").Value ="" Exit Sub errH: MsgBox "在單元格區域" &rngData.Rows(1).Address & _ "中,沒有找到列標題["& strButtonName & "]." & _ vbNewLine & "請檢查.",vbCritical, "標題名沒發現!"End Sub

在編寫好代碼后,將宏指定給表示按鈕的矩形形狀。在形狀中單擊右鍵,如下圖4所示。

圖4

選取“指定宏”命令,在“指定宏”對話框中選擇宏名,如下圖5所示。

圖5

可以在此基礎上進一步添加功能,例如,在搜索完成后,我想恢復原先的數據,可以在工作表中再添加一個代表按鈕的矩形形狀,如下圖6所示。

圖6

同時,編寫下面的代碼來鏈接到該矩形:

Sub ClearSearch() On Error Resume Next ActiveSheet.ShowAllData On Error GoTo 0End Sub

至此,功能已全部實現!但細心的朋友可能發現,由于我們使用的是文本框和形狀,因此會出現Excel的編輯形狀線,特別是輸入文本后,單擊形狀前,都需要在其他單元格中單擊一下,才能再單擊形狀。這可能會帶來不便!你可以使用ActiveX控件,或者直接使用單元格,或者使用快捷鍵來執行宏。在我們編寫的代碼中,有很多注釋掉的代碼語句,可供參考。

總結

以上是生活随笔為你收集整理的php多个表中查找数据_Excel实战技巧74: 在工作表中创建搜索框来查找数据的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。