excel中的單元格引用有哪幾種方式

時間 2021-06-26 18:41:31

1樓:大徐哥

excel的單元格排列,相當於直角座標系的第四象限excel2003的行從上向下排為1到66536行列從左向右排為a-iv

最左上的單元格為原點,即a1單元格

第二行 第3列,就是c2

單元格的引用分為相對引用和絕對引用

所謂相對引用,就是公式中引用的單元格隨公式所在單元格位置的變化而變化比如,b2中設定公式 =a2

當把b2複製,貼上到b3時,b3的公式根據b2到b3的位置變化,相應地變成 =a3

所謂絕對引用,就是公式中引用的單元格不隨公式所在單元格位置的變化而變化

仍如上例,b2中設定 =$a$2 ($號就是絕對引用的標誌)把b2公式向b3複製 其公式 仍為 =$a$2假設b2的公式為 =$a2 則這就是所謂的混合引用式中,列標前有$號,表示公式複製到其他位置時,列不發生變化,行號隨之變化

而 =a$2 則表示公式複製到其他位置時,列變化,行不得變動

2樓:李李李

用range可以將文字型的單元格地址轉化為單元格物件引用,類似於工作表函式“indirect”。它可以引用單元格、區域、整行、整列及整個工作表。

1、引用單元格

range引用單元格的物件的方式為:單元格的列標加行號作為引數,且左右加入引號。例如:

range(“a1”) ——表示a1單元格

range(“c25”) ——表示c25單元格

range(“zz1048576”) ——表示zz1048576單元格,在excel2003中是無效的引用,因為excel2003的最大行不超過65536行,最大列不超過iv列

range(“a1”)本身是代表一個單元格物件,但在“msgbox range(“a1”)”語句中則可以獲取單元格的值。事實上“msgbox range(“a1”)”是“msgbox range(“a1”).value”的簡寫。

每個物件都有很多屬性,同時也都有一個預設屬性,而單元格的預設屬性是“value”,所以如果不明確指出屬性時,那麼一定是呼叫它的value屬性值。

range引數中的引號必須是在半形狀態下輸入,否則必將產生編譯錯誤。另一個重點是vba中range(“a1”)方式引用物件時是不區分相對引用和絕對引用的,不管使用range(“a1”)、range(“$a1”)、range(“a$1”)還是range(“$a$1”)都引用同一單元格,而且在迴圈中也不產生任何影響。所以為了簡化,通常只用range(“a1”)這種形式來引用單元格。

2、引用區域

rang引用區域時是利用區域左上角單元格地址加冒號再加右下角單元格地址為其引數。不過引數也可以寫成右下單元格地址加冒號再加左上角單元格地址,vba會自動將其轉換成左上角單元格地址加冒號再加右下角單元格地址的形式。

例如以下兩種方式引用區域都可以得到相同結果:

msgbox range(“a2:d1”).address

msgbox range(“d1: a2”).address

以下是一些合法的區域引用:

range(“a1:v10”) ——代表從a1到v10的矩形區域,包括220個單元格

range(“f1:f10000”) ——代表從f1到f10000的矩形區域,包括9999個單元格

range(“d2:zz10000”) ——代表從d2到zz10000的矩形區域,包括6989301個單元格,在excel2003是不合法的引用方式,因為它的最大列只有iv

區域的預設屬性也是value,但是區域的value是一個陣列,包括多個物件,vba中無法直接將其顯示在螢幕上。如果利用msgbox來顯示這個屬性值將得到一個執行錯誤。

正確的方式是逐個引用區域中單個值。通過索引號作引數來實現。例如:

range(“d2:z10”)(1) ——代表d2:z10區域中第一個單元格的value,即d2

range(“d2:z10”)(3) ——代表d2:z10區域中第三個單元格的value,即f2

range(“d2:z10”)(24) ——代表d2:z10區域中第24個單元格的value,即d3

也就是說,索引號代表區域中從左到右、從上到下的序號,它是區域左上角單元格的參照進行相對引用。

如果索引號為小數時,vba會自動進行四捨五入。例如:

msgbox range(“d3:e7”)(1.5).address ——結果為“$e$3”,引數1.5當作2處理

msgbox range(“d3:e7”)(4.4).address ——結果為“$e$4”,引數4.4當作4處理

事實上,索引號可以使用兩個引數,第一參數列示行的索引,第二參數列示列的索引。那麼引數“(4,5)”就可以引用區域中第四行第五列的單元格,它以區域左上角單元格為參照,而非以工作表中a1單元格為參照。

例如以下的引用:

msgbox range(“d3:f7”)(1,3).address ——結果為“$f$3”,表示d3:f7區域第一行第三列

msgbox range(“d3:f7”)(4,2).address ——結果為“$e$6”,表示d3:f7區域第四行第二列

區域的引數還可以使用零和負數,甚至大於區域單元格個數以及小於零,同樣是合法的引用。當行索引引數為零時,則向區域中左上角單元格向上偏移一個單位;當列引數為零時,則向區域中左上角單元格向左偏移一個單位;如果引數是負數,在繼續追加偏移量。例如:

msgbox range(“d3:f7”)(0,0).address ——結果為“$c$2”,即d3向左及向上偏移一個單位

msgbox range(“d3:f7”)(-1,-2).address ——結果為“$a$1”,即d3向上偏移兩個單位再向左偏移三個單位

msgbox range(“d3:f7”)(9,4).address ——結果為“$g$11”,即d3向下偏移九個單位再向右偏移四個單位。

雖然其行數與列數都已超過區域的大小,仍然可以正確的引用單元格

range的引數也支援表示式,即字元或者數值運算結果。例如:

range(“f”&3+2) ——表示引用f5單元格

range(“f”&range(“d5”).value)

還可以使用變數作為引數,這在迴圈語句中極為有用。例如:

range(“d”&i) ——表示列標為d,行號為變數i的值的單元格引用

3、引用多區域

如果作引數是使用多個區域地址,且用半形逗號分隔,那麼range也可以引用多個區域。

例如以下引用方式:

range(“d3,f7”) ——表示d3和f7兩個區域,包括2個單元格

range(“d3:f4,g10”) ——表示d3:f4和g10兩個區域,包括7個單元格

range(“a1,b3:f4,z1:zb2”) ——表示a1、b3:f4和z1:zb2三個區域,包括1317個單元格

此方式引用單元格有一個限制,引數的長度不能超過256個字元,否則將會產生執行時錯誤。

4、引用整行、整列

利用“行號:行號”作為引數時產生對整行的引用,同理利用“列標:列標”作為引數時可產生對整列的引用,如果兩個行號或者列標不一致時,可以引用多行或者多列。

以下是一些合法的引用:

range(“2:2”) ——表示引用第二行

range(“2:10”) ——表示引用第二到第十行

range(“d:d”) ——表示引用第d列,列標不區分大小寫

range(“d:z”) ——表示引用從d列開始到z列結束的區域

range(“d:a”) ——表示引用從a列到d列,順序不一致時,vba會自動轉換成升序格式

引數中的冒號可以用半形也可以用全形冒號,vba會將其全形冒號轉成半形冒號。但是引用卻只能使用半形,否則將產生編譯錯誤。

整行、整行引用物件除了range方法外,還可以用rows和columns來完成。其中rows引用行,以阿拉伯數字作為引數;columns引用列,既可用阿拉伯數字做引數,也可用列標做引數。

rows(2) ——表示引用第二行

rows(“2”) ——同樣表示引用第二行

rows(“2:2”) ——仍然表示引用第二行

rows(“2:4”) ——表示引用第二到第四行

columns(2) ——表示引用第二列,相當於range(“b:b”)

columns(“b”) ——同樣表示引用第二列

columns(“b:b”) ——仍然表示引用第二列

columns(“b:d”) ——表示引用b到d列

如果不帶引數,那rows代表整個工作表所有行。而columns代表整個工作表所有列。

5、range巢狀使用

除上面的四中方法外,range還支援利用單元格作為引數,其具體語法為:

range(cell1,cell2)

其中cell1和cell2是必選引數。cell1用於指定目標區域的左上角單元格,cell2用於指定目標區域右下角單元格。如果使用一個或者三個單元格將產生編譯錯誤。

例如以下引用方式全是合法的區域引用:

range(range(“a1”),range(“d2”) ——表示引用a1:d2區域,包含8個單元格

range(range(“a4”),range(“a100”) ——表示引用a4:a100區域,包含97個單元格

當然也有一些特殊的應用,當引數並非單個單元格,而是區域是,取兩個區域所跨越的最大範圍。例如:

range(range(“a1:a3”),range(“d2”)) ——表示引用a1:d3區域,而非a1:

d2。vba會從兩個區域最左上角的單元格作為新的區域的參照起點,再取兩個區域所跨越的最大行作為新的區域的行數,取兩個區域跨越的最大列作為新區域的列數。

range(range(“b2:a3”),range(“a3:d10”)) ——表示引用a2:d10區域。

要理解這個演算法,可以分別將b2:a3和a3:d10兩段字元配對,然後從前兩個字元中取最小值,再從後兩對字元中取最大值,再加上冒號組合成一個新的區域地址。

例如“b2:a3”和“a3:d10”,先從第一對字元b和a中取出最小值a,然後從第二對字元2和3中取出最小值2,再從第三對字元a和d中取出最大值d,最後從3和10中取最大值10,將這四個字元與冒號串聯起來即為“a2:

d10”。

Excel求助,單元格引用另外單元格中包含幾個字的內容,用另一種符號代替

假設表如下 a b c1 健康狀況 高血壓 糖尿病2 高血壓 3 糖尿病 4 高血壓,糖尿病 那麼,要想在b2 c2 b3 c3 b4 c4 裡面自動判斷,請在b2裡面輸入公式 if iserror find b 1,a2 if c2 c2裡面輸入 if iserror find c 1,a2 然後...

EXCEL中,如何引用單元格中的資料,作為另單元格內容中的一部分

1 隨意選中一個單元格輸入資料,作為被引用資料單元格2 選中需要引用資料的單元格,並輸入 號3 將滑鼠游標放在被引用資料的單元格上 4 按 enter 鍵,被引用單元格中的資料同步到引用單元格內5 修改被引用單元格中的資料,引用單元格中的資料也將同步更新6 如果sheet1工作表想引用sheet2工...

EXCEL函式公式高手請進,關於單元格引用的問題

1 首先 這個需要用到你的檔案路徑 假設所有檔案在d 多表彙總下 a1到a4工作薄的叫實力的工作表的a1單元格我分別寫的是a1 a2 a3 a4。2 在c2輸入以下公式 c2 d 多表彙總 a a2 xls 實力 a1 下拉公式到c18 3 選中c列的公式,複製,選擇行貼上,數值,確定。還是貼上到原...