1. 程式人生 > 其它 >從一個實際案例中學習解決Excel問題時的思路

從一個實際案例中學習解決Excel問題時的思路

參考連結: https://gewuweb.com/office365/3138.html

前幾天我們講過一個群友的問題,如下。

後來與他溝通後,他想要的效果是在總表中單位列裡輸入單位,分表中相應單元格就會自動出現單位名稱。

我做了下簡化,如下圖所示,要求在總表中輸入單位時,分表中自動出現單位。

分表少點的話,我們直接在分表中引用總表的資料就可以了,問題是他現在是1500張分表,在C2中輸入一個單位,表1對應單元格就跳出剛輸入的單位,在C3中輸入一個單位,表2對應單元格就跳出剛輸入的單位……,不可能每張表去輸入公式。

如果我們同時選定這1500張表,在任一張表的B3位置輸入公式

=總表!B2

若是每個分表B3中輸入的公式中的B2能隨著表名的變化而變化,例如,表1的B3中公式為=總表!B2,表2的B3中公式=總表!B3,那麼這個問題自然就解決了。所以現在的難點就是怎麼在每張表中固定位置獲取到該表的表名,這個問題就可以解決了。

那我們怎麼獲取表名呢?

方法一:

考慮函式,用cell函式獲取工作表路徑,然後在從中提取表名。

=cell("filename")

大家可以看到,用這種辦法,分表中得到的路徑全部一樣,只有分別到每張表中點選下編輯欄的公式,後面的表名才會改變,這樣要點選很多很多次,沒有任何意義了!

方法二:

利用VBA程式碼,不懂的同學只需要知道有這種辦法可以實現,需要的時候來學習就可以了。

第一步:開啟編輯器

點選開發工具下面的VB,開啟編輯器

第二步:插入模組

點選插入,模組。

第三步:

貼上程式碼進去。

Sub TQ()

For i = 2 To Sheets.Count

Sheets(i).Range("b1") = Sheets(i).Name

Next

End Sub

備註:Sub TQ(),TQ為自己定義的一個名字,即提取的意思。

For i = 2 To Sheets.Count,2是指從第2張表開始,從第幾張開始,這裡就寫幾。

Sheets(i).Range("b1") = Sheets(i).Name,這裡的b1是指把結果放在B1單元格,大家根據需求自己指定。

第四步:儲存

儲存時會彈出如下提示,點選否,會彈出另存為對話方塊,選擇儲存型別為Excel啟用巨集的工作簿(*.xlsm)

第五步:執行程式碼

選擇B1單元格,點選開發工具,巨集,會彈出如下對話方塊

點選執行,下面是點選執行後的效果

每個分表的B1單元格就會出現各自的表名。

這下就爽了,這個問題就迎刃而解了。

選定除了總表以外的其他表,在B2中輸入:

=INDIRECT("總表!B"&(B1+1))

因表名和客戶序號相差1,所以加1。

到這裡,這個問題就完美解決了。

當然這種辦法是我在不懂VBA的時候想到的,程式碼是向群友請教得來的,學習VBA之後這種問題就變的非常簡單了!上面主要是給大家提供一種解決問題時的思路。

Excel真的很強大,條條大道通羅馬,只要有思路,一切都好辦!

每天進步一點,每天提升一點!

感謝每一位支援我的讀者!!!
參考來源: https://gewuweb.com/sitemap.html