excel vba获取单元格地址的方法

excel vba获取单元格地址的方法
excel vba获取单元格地址的方法

CONCATENATE函数可以连接字符串。

注意,在sheet中获取单元格地址的可以用如下函数实现:SUBSTITUTE(ADDRESS(row(),COLUMN(),4),1, ""),其中那个4代表返回当前单元格的地址的相对引用。

其中worksheet的address函数说明如下:

语法

ADDRESS(row_num,column_num,[abs_num],[a1],[sheet_ text])

ADDRESS函数语法具有以下参数:

row_num必需。一个数值,指定要在单元格引用中使用的行号。

column_num必需。一个数值,指定要在单元格引用中使用的列号。

abs_num可选。一个数值,指定要返回的引用类型。

A1可选。一个逻辑值,指定A1或R1C1引用样式。在A1样式中,列和行将分别按字母和数字顺序添加标签。在R1C1引用样式中,列和行均按数字顺序添加标签。如果参数A1为TRUE 或被省略,则ADDRESS函数返回A1样式引用;如果为FALSE,则ADDRESS函数返回R1C1

样式引用。

注意:要更改Excel使用的引用样式,请单击“文件”选项卡,单击“选项”,然后单击“公式”。在“使用公式”下,选中或清除“R1C1引用样式”复选框。

sheet_text可选。一个文本值,指定要用作外部引用的工作表的名称。例如,公式=ADDRESS(1,1,,,"Sheet2")返回Sheet2!$A$1。如果忽略参数sheet_text,则不使用任何工作表名称,并且该函数所返回的地址引用当前工作表上的单元格。SUBSTITUTE(text,old_text,new_text,[instance_num]) SUBSTITUTE函数语法具有下列参数:

?文本必需。需要替换其中字符的文本,或对含有文本(需要替换其中字符)的单元格的引用。

?old_text必需。需要替换的文本。

?new_text必需。用于替换old_text的文本。

?Instance_num可选。指定要用new_text替换old_text的事件。如果指定了instance_num,则只有满足要求的old_text被替换。否则,文本中出现的所有old_text 都会更改为new_text。

vba中是activecell.address(注意vba中的address与sheet中的address用法不同)https://www.360docs.net/doc/b74507508.html,/thread-579677-1-1.html

Range.Address属性

返回一个String值,它代表宏语言的区域引用。

语法

表达式.Address(RowAbsolute,ColumnAbsolute,ReferenceStyle,External,RelativeTo)

表达式一个代表Range对象的变量。

参数

说明

如果引用包含多个单元格,RowAbsolute和ColumnAbsolute将应用于所有的行和列。

示例

下例对工作表Sheet1中的同一单元格地址使用了四种不同的表达方式。示例中的注释为将要显示于消息框中的地址。

?2010MicrosoftCorporation。保留所有权利。

PublicSubabc()

Fork=1To26

Sheet3.Cells(6,5*k+4)=""

mystr="="

Sheet3.Cells(5,5*k+4)="本段负荷(kW)"

'Sheet3.Cells(5,5*k+4).Interior.Color=RGB(255,192,0)

'Sheet3.Cells(6,5*k+4).Interior.Color=RGB(255,192,0)

Sheet3.Cells(6,5*k+1).Interior.Color=RGB(0,176,240)

Sheet3.Cells(6,5*k+1).Locked=True

Fori=kTo26

Ifi<>kThen

mystr=mystr&"+"&WorksheetFunction.Substitute(Sheet3.Cells(6,5*i+4).Address,"$","")'行地址和列地址均为相对引用

'mystr=mystr&"+"&Sheet3.Cells(6,5*i+4).Address(RowAbsolute:=False)'行地址为相对引用,列地址为绝对引用

'mystr=mystr&"+"&Sheet3.Cells(6,5*i+4).Address(ColumnAbsolute:=False)'列地址为相对引用,行地址为绝对引用

'mystr=mystr&"+"&Sheet3.Cells(6,5*i+4).Address'列地址和行地址都为绝对引用

Else

mystr=mystr&WorksheetFunction.Substitute(Sheet3.Cells(6,5*i+4).Address,"$","")

'mystr=mystr&"+"&Sheet3.Cells(6,5*i+4).Address(RowAbsolute:=False)'行地址为相对引用,列地址为绝对引用

'mystr=mystr&"+"&Sheet3.Cells(6,5*i+4).Address(ColumnAbsolute:=False)'列地址为相对引用,行地址为绝对引用

'mystr=mystr&"+"&Sheet3.Cells(6,5*i+4).Address'列地址和行地址都为绝对引用

EndIf

Nexti

Sheet3.Cells(6,5*k+1).Formula=mystr

Nextk

EndSub

vba中获得某个单元格地址的行号?一种方法是使用split函数split(cells(i,j).address,"$")(1)。

vba的split函数用法说明

https://www.360docs.net/doc/b74507508.html,/content/15/0216/08/21373269_448910679.shtml

Split函数是在处理字符串时常用的一个函数,它的作用是将字符串按特定的字符分开,返回的是一个一维数组,数组的起始下标为0,看下面的例子

Subtest()

Dimarr,brr,s,m,n,y

s="abc,d,e,f,g"

arr=Split(s,",")'结果是一个包含5个项的一维数组

m=Split(s,",")(0)'令m为数据的第1个项,为abc,因为数组的第1个数对应的编号是0,依此类推,第2个数对应编号是1···

m=Split(s,",")(1)'令m为数据的第2个项,为d

brr=Split(s,",",2)'将s以逗号分为2项,brr(0)=abc,brr(1)="d,e,f,g"

n=Split(s,",",2)(0)'令n=abc

y=Split(s,",",2)(1)'令y="d,e,f,g"

EndSub

现在有一个字符串“abc,d,e,f,g,h”,arr=Split(s,",")就是将字符串以“,”为分隔符分开,返回的arr是一个一维数组,arr(0)=abc,arr(1)=d,arr(2)=e,arr(3)=f,arr(4)=g,当然在这里split(s,",")(0)与arr(0)是等价的,将split(s",")直接看成一个数组,(0)表示这个数组的第1项。如果不想将s 全部分开,可以在分隔符后面再加上个参数来表示你想分成几份。比如split(s,",",2)这里的2就表示将s分成2份即可,返回结果是"abc"和"d,e,f,g",如果是split(s,",",3)那么结果就是"abc","d","e,f,g"三个值了。

相关主题
相关文档
最新文档