Tsao 發問時間: 電腦與網際網路程式設計 · 8 年前

Execl擷取不同工作表

各位大大,最近剛接觸VBA這應用程式,撰寫過程中遇到瓶頸,請好心的大大能幫我解決

描述:

利用Execl檔編寫的(選單工作表)這項工作表去查詢擷取我要的數據,接著按下item search 按鈕會執行撰寫的程式顯示各年份的工作表單,及搜尋項目儲存格所要的項目後的數據

問題如下:

1.小弟我試過新增工作表把截取到的數據移到新增的工作表上,但跑出來的數據只有一個年度,那如何擷取各年份所要的數據至新增工作表

2.假設已完成問題1的狀況下,要如何把擷取的數據依照附件網址裡的EXECL檔案的方式呈現

以下是小弟寫的程式碼部分請參考:

Sub show_data(itemName As String)

Dim a As String

Dim b As Double

Dim count As Integer '迴圈計數器

Dim row As Integer, column As Integer '行、列控制

row = 1 '設定起始列數為 1

column = 1 '設定起始行數為 1

a = ThisWorkbook.Worksheets("選單工作表").Cells(7, "D").Value

sun = Worksheets.count

For i = 1 To sun

Worksheets(i).Activate

Set iti = Cells.Find(What:=a, After:=ActiveCell)

If iti Is Nothing Then

MsgBox "找不到您想要找的資料"

Exit Sub

Else

iti.Activate

b = ActiveCell.Offset(0, 1).Value

Cells(row, column).Value = b

End If

Next i

End Sub

檔案網址

http://www.FunP.Net/593079

附件網址

http://www.FunP.Net/459625

2 個解答

評分
  • 8 年前
    最佳解答

    <範例檔>:

    http://www.funp.net/633087

    2012-10-03 16:43:05 補充:

    Tsao大:

    檔案可以用嗎?處理方式是否適合?

    原檔中的程式碼,是您寫的嗎?已具水準了!^ ^

    2012-10-04 16:32:26 補充:

    EXCEL VBA.搜尋並累計〔指定項目〕在〔各工作表〕中的〔金額〕

                             <.准提部林.>

    ---------------------------------

    ■操作介面:

    圖片參考:http://imgcld.yimg.com/8/n/AB07101627/o/1612100102...

     

    ■主要功能:

     1.搜尋文字:儲存格D7

     2.搜尋目標:檔案中全部工作表

     3.將搜尋結果在G欄列出〔工作表名稱〕,在H欄列出〔金額〕,

       在A1顯示〔累計金額〕。

     

    ■程式碼:

     Sub Item_Search()

     Dim MySht As Worksheet, xSht As Worksheet

     Dim xR As Range, xEnd As Range, Ym&

     Set MySht = Sheets("選單工作表")

     MySht.[G:H].ClearContents: MySht.[A1] = 0

     MySht.[G1:H1] = Array("工作表名稱", "金額") '標題文字

     If MySht.[D7] = "" Then Exit Sub

     For Each xSht In Sheets

       If xSht.Name = MySht.Name Then GoTo 101

       Set xEnd = xSht.Range("B" & Cells.Rows.count).End(xlUp)

       If xEnd.row < 13 Then GoTo 101

       For Each xR In xSht.Range("B13:B" & xEnd.row)

         If xR = MySht.[D7] Then

           Ym = Ym + 1

           MySht.Range("G" & Ym + 1) = xSht.Name

           MySht.Range("H" & Ym + 1) = xR(1, 2)

           MySht.[A1] = MySht.[A1] + xR(1, 2)

         End If

       Next

     101: Next

     MySht.[G:H].Sort Key1:=[G2], Order1:=xlAscending, Header:=xlYes

     Beep

     End Sub

    ---------------------------------

    <範例檔>:

    http://www.funp.net/633087

    ---------------------------------

    2012-10-09 16:49:41 補充:

    問題描述還不夠清楚!

    新增的需求,建議另開題,再將問題需求詳細解說,尤其是步驟要明白,

    而且可能有人可提供更好的解法!

    發題時,可再說明:

    1.〔價值分析表〕的第2列及B欄內容是〔預先輸入〕的嗎?

    2.只對0值格填入金額,其它不動嗎?

    3.F2為〔2011〕只有四碼,正確嗎?還有好幾格也是只四碼!

  • 8 年前

    非常感謝 准提部林 大大

    多謝指導,我會好好學習Thanks

    2012-10-03 19:07:48 補充:

    准提部林 大:

    檔案可以使用也可以編譯執行,Code部分稍微小部分的修改已達到我要的結果,

    非常感謝指導!

    原檔中一部分是由另個人所寫,我只是完成另一部分,所以我只是連皮毛都不懂得一分子而已,還是要特別感謝幫忙!

    而後有任何問題還麻煩你多多指導了^ ^

    2012-10-09 13:59:40 補充:

    准提部林 大:

    抱歉打擾你,後續又碰上一個問題是否能幫我解答呢

    描述:

    在工作簿中新增了一張工作表(價值分析表),當按下 按鈕使(選單工作表)上的金額數據填入(價值分析表)中

    問題如下:

    如何使(選單工作表)查詢到的數據金額,依序填入(價值分析表)空格數值為0的位子,且(選單工作表)上的G欄)與(價值分析表第2列)工作表名稱相符合

    檔案網址:http://www.FunP.Net/643402

    2012-10-09 17:08:49 補充:

    好的! 感謝指導解說,我會另開題詢問^ ^

還有問題?馬上發問,尋求解答。