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樓:匿名使用者
分為絕對引用,相對引用,混合引用。
例:引用a列單元格
絕對引用 c1=$a$1*b1
相對引用 c1=a1*b1
混合引用 c1=$a1*b1
3樓:思雪遙遙
絕對引用
混合引用
相對引用
具體看參考貼!
excel中的單元格引用有哪幾種方式?
4樓:大徐哥
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 則表示公式複製到其他位置時,列變化,行不得變動
5樓:李李李
用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」。
vba引用單元格,VBA引用單元格
以計算男,女人數為列,說明if寫法及單元格表示法 如e1單元格,可表示為range e1 也可表示為cells 1,5 用變數來表示 range e j 或cells j,5 下面說明if的使用來計算男女人數 sub 計數 dim r x nan nv 建立整數變數 dim arr 建立乙個陣列,如...
excel 公式中如何多次引用某個單元格中資料
我猜你說的是向下填充的時候引用單元格不變吧?那是絕對引用,比如你要一直引用a1不想變的話,就在公式裡把a1寫成 a 1就行了,在哪個前面,哪個就不會變動,可以單獨讓引用的行不變或者列不變。 我是來嚇寶寶的 你對b1 b3進行了單元格合併。但是 只有 b1 5 b2 b3還是0 所以公式應該是 鎖定b...
excel中單元格中的值與多個單元格的值對比是否相同(如圖)
你說的問題和單元格的絕對位址與相對位址有關。如用a1的值乘以b列的值,結果放在c列 在c1裡寫 a 1 b1 然後向下複製。這時,你會看到 c2的內容 a 1 b2 也就是,公式中a1我們使用了絕對位址 a 1,在拖地複製的過程中它不會改變,b1我們使用的是相對位址,向下複製時,行號會自動改變。使用...