我想要做条件格式化,以便单元格的颜色会改变,如果值不同于它左边的单元格中的值(每列是一个月,在每行都是特定对象上的费用,我想很容易监视几个月的价格变化。)Excel公式引用'CELL到左'
我可以按照单元格和格式拖动它,但我想要一个适用于整个工作表的通用公式。
谢谢!
我想要做条件格式化,以便单元格的颜色会改变,如果值不同于它左边的单元格中的值(每列是一个月,在每行都是特定对象上的费用,我想很容易监视几个月的价格变化。)Excel公式引用'CELL到左'
我可以按照单元格和格式拖动它,但我想要一个适用于整个工作表的通用公式。
谢谢!
=OFFSET(INDIRECT(ADDRESS(ROW(), COLUMN())),0,-1)
不错,谢谢。迈克尔的答案有用 - 但我喜欢明确的公式... – mik 2009-05-04 12:58:20
使用五个很少使用的需要查看使用函数而不是简单的A1或RC [-1]相对引用?这就像从布鲁克林前往布朗克斯,在瓦拉瓦拉华盛顿停留! – 2009-07-09 00:51:50
在创建条件格式,设置范围,它适用于你想要的(全片)一下,然后输入一个相对公式(删除$
标志),就好像你只格式化左上角角。
Excel将正确地将格式应用于相应的其他单元格。
在此示例中,从B1开始,左侧的单元格将为A1。只要使用 - 不需要高级配方。
如果你正在寻找一些更高级的,你可以玩弄column()
,row()
和indirect(...)
。
你可以使用VBA脚本改变选择的条件格式(您可能必须调整的条件&相应格式):
For Each i In Selection
i.FormatConditions.Delete
i.FormatConditions.Add Type:=xlCellValue, Operator:=xlLess, Formula1:="=" & i.Offset(0, -1).Address
With i.FormatConditions(1).Font
.Bold = True
End With
Next i
如果您更改单元格引用使用R1C1符号(工具|选项,常规选项卡),然后您可以使用简单的符号并将其粘贴到任何单元格中。
现在你的公式很简单:
=RC[-1]
最短,最兼容的版本是:
=INDIRECT("RC[-1]",0)
“RC [-1]” 是指一列到左边。 “R [1] C [-1]”是左下角。
第二个参数0表示使用R1C1表示法解释第一个参数。
其他选项:
=OFFSET(INDIRECT(ADDRESS(ROW(), COLUMN())),0,-1)
在我看来太长时间。但是,如果相对值是动态的/派生自另一个单元格,则很有用。例如: -
=OFFSET(INDIRECT(ADDRESS(ROW(), COLUMN())),0, A1)
最简单的选择:
= RC[-1]
有你需要使用选项中打开R1C1符号,这是一个不走,当其他人都使用Excel的缺点。
填写A1单元格,用下面的公式:
=IF(COLUMN(A1)=1;"";OFFSET(A20;0;-1))&"1"
然后自动扩到右,你
1| A | B | C | ect ect
2| 1| 11| 111| ect ect
如果offset可用小区的范围之外,你会得到裁判!错误。
希望你喜欢。
更简单:
=indirect(address(row(), column() - 1))
偏移参考相对于当前基准的回报,因此,如果间接回报正确的引用,你不需要它。
而不是写的很长一段:
=OFFSET(INDIRECT(ADDRESS(ROW(), COLUMN())),0,-1)
你可以简单的写:
=OFFSET(*Name of your Cell*,0,-1)
因此,例如,你可以编写成细胞B2:
=OFFSET(B2,0,-1)
到参考细胞B1
还是谢谢Jason Young!如果没有你的答案,我永远不会想出这个解决方案!
当创建用户定义函数时,我发现涉及函数OFFSET
和INDIRECT
的其他答案无法应用。
相反,您必须使用Application.Caller
来引用已使用用户定义函数(UDF)的单元格。第二步,将列索引转换为相应列的名称。
最后,您可以使用活动工作表的Range function来引用左侧单元格。
Function my_user_defined_function(argument1, argument2)
' Way to convert a column number to its name copied from StackOverflow
' http://stackoverflow.com/a/10107264
' Answer by Siddarth Rout (http://stackoverflow.com/users/1140579/siddharth-rout)
' License (if applicable due to the small amount of code): CC BY-SA 3.0
colName = Split(Cells(, (Application.Caller(1).Column - 1)).Address, "$")(1)
rowNumber = Application.Caller(1).Row
left_cell_value = ActiveSheet.Range(colName & rowNumber).Value
' Now do something with left_cell_value
我偶然发现了这个线程,因为我想总是引用“左侧单元格”,但最重要的是在非易失性方式(无偏移,间接和类似灾难)。上下看网络,没有答案。 (此线程实际上并没有提供答案)经过一些修改后,我偶然发现了最令人惊讶的方法,我喜欢与该社区分享:
假设E6中的起始值为100。假设我在F5中输入一个增量到这个值,就是5.然后我们将计算F6 = E6 + F5中的延续值(105)。如果您想添加另一个步骤,比较简单:只需将F列复制到G列,然后在G5中输入新增量。
这就是我们定期做的。每一列都有一个日期,这些日期必须按时间顺序排列(以帮助MATCH等)。每隔一段时间就会发生一次,我们忘记进入一个步骤。现在假设你想在F和G之间插入一列(以弥补你的遗漏)并将F复制到新G中(重新填充延续公式)。这是一场完全灾难的短暂现象。试试吧 - 现在H6会说= F6 + H5而不是(因为我们绝对需要它)= G6 + H5。 (新的G6将是正确的。)
为了使这项工作,我们可以以最令人惊讶的方式混淆这个平庸的计算F6 = index($ E6:F6; 1; columns($ E1:F1)-1) + F5。复制权,你得到G6 =索引($ E6:G6; 1;列($ E1:G1)-1)+ G5。
这应该永远不会工作,对吧?循环参考,清楚!尝试一下,感到惊讶。 Excel似乎意识到虽然INDEX范围跨越了我们正在重新计算的单元格,但该单元格本身并未被INDEX处理,因此不会创建循环引用。
所以,现在我回家了,干了。插入F和G之间一列,我们得到正是我们需要的:在老H中的连续值将重提我们在新的G.
插入延续价值为什么不直接使用:
=ADDRESS(ROW(),COLUMN()-1)
...以及在某人正在寻找它的情况下...将列置于右侧:`= INDIRECT(“RC [1]”,0)` – prograhammer 2014-09-18 21:08:55
这是一个非常好的问题。不幸的是,我不确定我是否正确地理解了这一点,原始海报希望他的单元格不必进行条件格式化,然后将格式画家粘贴到每个单元格。假设我们在行中有几个月,在列中有香蕉,苹果和桔子。在矩阵中是价格。如果价格从前一个月变化到当前月份,我们如何能够做一些能够自动着色红色红色的东西?如果还有一种自动方法,如果价格下降,将单元格颜色设为绿色,如果 – Bryan 2015-01-29 18:33:32