從一個實際案例中學習解決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