自從 2008-02 提出『使用 EXCEL 巨集合併/比對/更新多種格式的通訊錄』的構想之後, 最近終於又有點進度。.... 只是, 還是處於準備的前期 ....
.
下面要介紹的 Excel VBA 巨集函數 "address", 不知道會不會常用, 所以, 我舉了一個例子。
簡單的說, "address" 巨集函數可以傳回『儲存格的參照』, 甚至可以組合成公式, 有點像工作表函數 INDIRECT 和 ADDRESS。
一般的場合
| 使用 "address" 巨集函數的場合
|
.
- 語法說明
expression.Address(RowAbsolute, ColumnAbsolute, ReferenceStyle, External, RelativeTo)
expression | 範圍物件 (單一儲存格 或 多個儲存格) |
RowAbsolute | True 或 不填 : Row 部份為絕對參照, False : 傳回相對參照 |
ColumnAbsolute | True 或 不填 : Column 部份為絕對參照, False : 傳回相對參照 |
ReferenceStyle | xlA1 或 不填 : 傳回 A1 樣式的參照 xlR1C1 : 傳回 R1C1 樣式的參照 |
External | True : 傳回外部參照 False 或 不填 : 傳回區域參照 |
RelativeTo | 1) 如果 RowAbsolute 和 ColumnAbsolute 為 False,且 ReferenceStyle 為 xlR1C1,則必須加入相對參照的起始點。 2) 如果 External 為 True, 且沒有加入此參數會傳回 完整參照 (例如 : [Book1.xls]Sheet1!$A$1); 反之, 加入此參數則會視情形傳回 部份參照 (例如 : Sheet1!A1), |
.
- 範例程式
set A = Sheets("Sheet1").Cells(y1, x1)
set B = Sheets("Sheet2").Cells(y2, x2)
B = "=" & A.Address(False, False, , True, B)
.
至於我要怎麼使用, 這麼說好了, 我要來拿來建立『索引』(或『指標』)。用簡單的 = Sheet1!A1 將『資料儲存格』和『索引儲存格』串連起來, 再配合儲存格的 DirectDependents, Dependents, DirectPrecedents, Precedents 屬性 (儲存格計算的相依性, 翻譯為『參照』, 『前導參照』), 就可以查找『一對一』或是『一對多』的資料和索引。而且, 資料搬動時, Excel 會自動維持公式的連結, 就不用煩惱如何維護資料和索引的關係。
.
2 意見:
發表您的回應蠻有趣的寫法,不知道是否有範例檔案可參考呢?最近也在研究Excel VBA,算是十分初學,請多多指教了!
2008年8月6日 凌晨4:26
@鐵蛋, 暫時沒有合適的範例, 我自己是覺得這個用法不見得平常會用得到, 但如果你有具體的想法, 則歡迎提出來討論。
2008年8月6日 上午8:13
張貼留言