close

一、在Excel中批量插入核取方塊Check Box

應該很多人都不陌生

這裡先簡單介紹一下

開發人員>控制項>插入>核取方塊.

(如果沒有見到 [開發人員索引標籤] 的話,可以看這篇開啟,都是巨集的一些基本設置,值得一看的,這裡就不贅述了。)

image

對的,插入核取方塊就是如此簡單。

接下來就是讀取核取方塊的值,再用於公式上了。

二、儲存格值隨核取方塊聯動

Check Box ->右鍵>控制項格式>控制>儲存格連結

連結特定儲存格後,儲存格就會實時顯示核取方塊的邏輯值 (TRUE: 勾選時/ FALSE: 不勾選時)

當核取方塊的值能顯示在儲存格時,就能做很多操作了

例如:

根據核取方塊的值,顯示或隱藏值 [IF()]

IF早就介紹過了,這裡簡單貼一下公式, =if(判斷條件, 符合條件做這段, 不符合條件做這段)

=IF($F$3 (連結的儲存格) ,"Show","Hide")

結果: 

勾選

image

不勾選

image

三、批量插入核取方塊 (拖動)

既然一個已經會做了,批量處理也不遠矣

首先來個最簡單直觀的做法: 直接拖動

即和一般的數字/ 公式一樣,控制項也可以通過拖動複製,前提是控制項是在儲存格內

image

如果只需要記錄,不需要聯動的話,拖動就完全足夠了

而如果要像(二)那樣聯動的話,這樣拖動就不行了

因為多個核取方塊也會互相聯動,即:

也可以再一個個連結至相應的儲存格

但批量的意義就不存在了

此時就可以出動VB了

如果覺得這樣已經滿意、而VB太複雜的話,可以止步於此了

不然的話,可以繼續向下看

四、批量插入核取方塊 (VB程式)

開發人員>程式碼>Visual Basic

雙擊工作表1 (現在正在用的工作表) 會出現以下介面:

image (

直接複製以下程式其實就可以了 (記得把多餘字符刪了就可以了)

'批量添加核取方塊Check Box
Sub copyCheckbox()
Const column1 As String = "D" '核取方塊所在的欄
Const column2 As String = "F" '連結儲存格所在的欄

For i = 3 To 12 '需要顯示的列
    ActiveSheet.CheckBoxes.Add(Range(column1 & i).Left + 8, Range(column1 & i).Top + 2, Range(column1 & i).Width - 10, Range(column1 & i).Height - 20).Select
    '在D3插入核取方塊,如此類推,幾個Range分別是核取方塊的起始點(左起)、起始點(上起)、高度及寬度,可自行調整,為了讓核取方塊完全在儲存格內,建議設置得比儲存格小
        With Selection
            .Characters.Text = "" '核取方塊顯示文字為空
            .LinkedCell = Range(column2 & i).Address '連結相應的儲存格
        End With
Next
End Sub

image

效果:

 

五、批量插入核取方塊 (VB程式) 之實例--單位手續費+物業費計算 (哈哈,先欠著,有空再補,反正也沒有人催)

假設大富豪King在考慮同時租幾個單位

想知道每個單位的手續費和物業費

逐一計算也是可以的,就是太慢了

上效果

 

先貼一下源數據和結果

有興趣的可以自己先試做哦

原始資料:

A-K是單位名稱,大廈共三層,有幾個單位並沒有二樓。

其後資料分別是單位不同層數的實用面積及建築面積,分別以平方呎和平方米顯示。

  實用面積 Saleable area 建築面積 Gross Leasable Area
  GF 1F 2F All GF 1F 2F All
Room No. Area (sq. m)(GF)SA Area (sq. ft)(GF)SA Area (sq. m)(1F)SA Area (sq. ft)(1F)SA Area (sq. m)(2F)SA Area (sq. ft)(2F)SA Area (sq. m)(All)SA Area (sq. ft)(All)SA Area (sq. m)(GF)GLA Area (sq. ft)(GF)GLA Area (sq. m)(1F)GLA Area (sq. ft)(1F)GLA Area (sq. m)(2F)GLA Area (sq. ft)(2F)GLA Area (sq. m)(All)GLA Area (sq. ft)(All)GLA
A 28.6432 308.3125 43.8395 471.8847 50.5173 543.7638 123.0000 1323.9609 107.8910 1161.3290 165.1315 1777.4610 190.2849 2048.2099 463.3075 4987.0000
B 76.2832 821.1053 109.2236 1175.6735 270.4932 2911.5641 456.0000 4908.3430 134.1856 1444.3619 192.1294 2068.0636 475.8099 5121.5746 802.1249 8634.0000
C 333.5844 3590.6724 455.4156 4902.0526 0.0000 0.0000 789.0000 8492.7250 148.9846 1603.6573 203.3966 2189.3427 0.0000 0.0000 352.3812 3793.0000
D 1011.0000 10882.3130 0.0000 0.0000 0.0000 0.0000 1011.0000 10882.3130 94.6682 1019.0000 0.0000 0.0000 0.0000 0.0000 94.6682 1019.0000
E 617.3840 6645.4662 595.6160 6411.1566 0.0000 0.0000 1213.0000 13056.6228 81.8033 880.5230 78.9190 849.4770 0.0000 0.0000 160.7223 1730.0000
F 781.1983 8408.7487 633.8017 6822.1840 0.0000 0.0000 1415.0000 15230.9327 75.6531 814.3234 61.3789 660.6766 0.0000 0.0000 137.0320 1475.0000
G 808.6863 8704.6261 808.3137 8700.6164 0.0000 0.0000 1617.0000 17405.2425 65.7440 707.6630 65.7138 707.3370 0.0000 0.0000 131.4578 1415.0000
H 1092.1545 11755.8527 726.8455 7823.6995 0.0000 0.0000 1819.0000 19579.5523 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000
I 1024.0282 11022.5471 996.9718 10731.3150 0.0000 0.0000 2021.0000 21753.8621 51.8749 558.3766 50.5043 543.6234 0.0000 0.0000 102.3792 1102.0000
J 1172.7895 12623.8008 949.2105 10217.2162 0.0000 0.0000 2122.0000 22841.0170 49.8054 536.1008 40.3106 433.8992 0.0000 0.0000 90.1160 970.0000
K 896.7423 9652.4538 744.2630 8011.1804 682.9946 7351.6926 2324.0000 25015.3268 77.6103 835.3903 64.4137 693.3431 59.1111 636.2665 201.1351 2165.0000

需要顯示的結果如下

輸入不同的單位和樓層會顯示相應的面積

勾選核取方塊與否會影響計算結果

之所以要加核取方塊是方便討論

有時客人會想知道多一個單位少一個單位價格會有什麼變化

這時候有核取方塊就直觀得多了

image

所以以上用到哪些功能了?

燈燈燈燈

就是:

  1. 下拉選單 (相應的教程)
  2. [Index-Match] (類似Vlookup的功能) (相應的教程)
  3. [IF] (這個應該不需要教程了吧)
  4. 還有的就是本次的主角 Checkbox

現在梳理一下思路吧

首先客人會說出自己想租哪一個單位的哪一層

即已知C欄的Room No. 和D欄的Floor

如果輸錯信息或表達方式不對就出不到結果

這裡就用[資料驗證][下拉選單]來確認,避免被客人狂罵的命運

想得出I欄的Area

正常就是直接用[Vlookup]透過單位A獲取相應的面積

但因為租售時經常涉及到建築面積、實用面積、平方呎、平方米的問題

客人張口一句500平方米是多少呎啊,我習慣看平方米這樣又會是一場單位換算大戰了

所以索性在開始前讓客人先選個夠

直接顯示相應的結果就可以了

但一旦太多選項[Vlookup]這個小孩子就無法處理了

需要用到高年班的[Index-Match]

image

首先原資料的表頭是這樣的格式: Area (sq. m/ sq. ft) (All/ GF/ 1F /2F) SA/GLA

Area (sq. m)(GF)SA
Area (sq. ft)(GF)SA
Area (sq. m)(1F)SA
Area (sq. ft)(1F)SA
Area (sq. m)(2F)SA
Area (sq. ft)(2F)SA
Area (sq. m)(All)SA
Area (sq. ft)(All)SA
Area (sq. m)(GF)GLA
Area (sq. ft)(GF)GLA
Area (sq. m)(1F)GLA
Area (sq. ft)(1F)GLA
Area (sq. m)(2F)GLA
Area (sq. ft)(2F)GLA
Area (sq. m)(All)GLA
Area (sq. ft)(All)GLA

這裡我先用[CONCATENATE()]將所有選項連起來變成E欄Binder的樣子

其中建築面積和實用面積的部分有詳簡寫,所以用到[MID()]、[FIND()]等功能獲取括號內的SA與GLA

有需要的可以看以下公式

=CONCATENATE("Area (",$D$3,")(",D5,")",MID($C$3,FIND("(",$C$3)+1,FIND(")",$C$3)-FIND("(",$C$3)-1))

image

此處會先用到[MATCH()]

通過Room No.來查找資料在第幾Row

image

通過Binder來查找資料在第幾Column,

image

最後用[INDEX()]查找該欄該列的資料是什麼

image

這樣再加上文章開頭提到的Check Box小知識

就基本完成了

右邊的計算表只是簡單的 單價*面積 的問題

要注意的是 平方呎 和 平方米 的單價是不一樣的

需要用[IF]先判斷一下是在用什麼單位再決定用哪個表

image

 

待續

arrow
arrow

    4ngus 發表在 痞客邦 留言(0) 人氣()