具体应用 如果你也遇到过类似的问题,可以先自己想想怎么办? 你可能看到公式里有个ys,这是个什么东西?其实它是一个定义的名称。我们在之前的文章《宏表函数get.cell获取单元格的信息》也说过,想要用函数获取单元格的底纹颜色,只能用宏表函数get.cell。而宏表函数只能在定义名称里使用。 第一步,先获取单元格的底纹颜色。 首先选中B1单元格,然后点击【公式】-【定义名称】,弹出新建名称对话框。在名称里输入ys,在引用位置输入=GET.CELL(63,$A1),点确定。这样名称就定义好了。用定义名称,一定要注意相对引用的位置关系。 有了这个思路就好写公式了,比如我在B2单元格输入公式=IF(ys>0,0,B1+1),向下填充,发现结果是对的。 我们用r1c1的相对引用来解决这个问题,INDIRECT("r[-1]c",0)返回活动单元格的上一个单元格。r[-1]c中的r表示行,c表示列。[]表示相对引用,-1表示活动单元格向上偏移一行。c后面没有列号,表示活动单元格所在的列。 虽然用这种方法还是返回上一个单元格,但是它更为奇特。当在B1单元格输入公式=INDIRECT("r[-1]c",0)时,不但不会出错,还会返回B列的最后一个单元格(B1048576)的值。 Sub 给带颜色的单元格添加序号() Dim rng As Range, r As Range, n As Integer Set rng = Range("a1:a" & Cells(Rows.Count, 1).End(xlUp).Row) For Each r In rng If r.Interior.ColorIndex > 0 Then r.Offset(0, 1) = 0 n = 0 Else n = n + 1 r.Offset(0, 1) = n End If Next End Sub
https://pan.baidu.com/s/1MDg5pVeb9vv3mt-oYaV3Lw |
|