我正在尝试进行条件格式设置,以便如果某个单元格的值与其左侧单元格的值不同,则单元格颜色会更改(每列是一个月份,在每行中都有特定对象的费用。我希望轻松监控价格在几个月内的变化)。
我可以对每个单元格进行操作并拖动格式,但我想要一个通用公式来应用于整个工作表。
我正在尝试进行条件格式设置,以便如果某个单元格的值与其左侧单元格的值不同,则单元格颜色会更改(每列是一个月份,在每行中都有特定对象的费用。我希望轻松监控价格在几个月内的变化)。
我可以对每个单元格进行操作并拖动格式,但我想要一个通用公式来应用于整个工作表。
=OFFSET(INDIRECT(ADDRESS(ROW(), COLUMN())),0,-1)
="OFFSET(INDIRECT(ADDRESS(ROW(), COLUMN())),0,-1)=""xyz"""
但是单元格没有被格式化。出了什么问题? - zipper最短、最兼容的版本是:
=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时这是不可取的。
=INDIRECT("RC[-1]";0)
,使用的是分号;
而不是逗号,
。 - undefined在创建条件格式时,将其应用范围设置为您想要的范围(整个工作表),然后输入相对公式(删除$符号),就好像您只是为左上角单元格设置格式。
Excel会正确地将格式应用于其余单元格。
在本示例中,从B1开始,左侧单元格将是A1。只需使用它即可--不需要高级公式。
如果您正在寻找更高级的内容,可以尝试使用 column()
、row()
和 indirect(...)
进行调整。
如果你将单元格引用更改为使用R1C1记法(工具|选项,常规选项卡),则可以使用简单的符号表示,并将其粘贴到任何单元格中。
现在你的公式变得简单了:
=RC[-1]
不要写很长的句子:
=OFFSET(INDIRECT(ADDRESS(ROW(), COLUMN())),0,-1)
=OFFSET(*Name of your Cell*,0,-1)
=OFFSET(B2,0,-1)
引用单元格 B1
还是感谢Jason Young!!没有你的回答,我永远想不到这个解决办法!
=ADDRESS(ROW(),COLUMN()-1)
请在A1单元格中填入以下公式:
=IF(COLUMN(A1)=1;"";OFFSET(A20;0;-1))&"1"
然后自动扩展到右边,你就得到了
1| A | B | C | ect ect
2| 1| 11| 111| ect ect
如果偏移量超出了可用单元格的范围,您将会收到 #REF! 错误。
希望您喜欢。
=indirect(address(row(), column() - 1))
OFFSET返回相对于当前参照的引用,因此如果间接返回正确的引用,则不需要它。
对于那些寻找非易失性答案的人,您可以通过在命名公式中使用INDEX函数来实现。
选择单元格A2
打开“名称管理器”(Ctrl+F3)
点击“新建”
将其命名为“LeftCell”(或您喜欢的任何名称)
对于“作用域:”,选择“工作簿”
在“引用:”中输入以下公式:
=INDEX(!A1:!A2, 1)
点击“确定”并关闭“名称管理器”
这告诉Excel始终查看当前单元格左侧的值,并且随着选择不同的单元格而动态更改。如果仅使用名称,则提供单元格的值,但在范围内使用引用。感谢this answer关于单元格引用的想法。
我偶然发现了这个帖子,因为我想始终引用“左侧单元格”,但是非常重要的是以非挥发性的方式(没有OFFSET、INDIRECT和类似的灾难)。在网上寻找答案,却没有找到。 (这个帖子实际上也没有提供答案。)经过一些尝试,我偶然发现了最惊人的方法,我想与这个社区分享:
假设E6中有一个起始值为100。假设我在F5中输入一个增量,比如5。然后我们将计算F6中的连续值(105)= E6 + F5。如果您想添加另一个步骤,很容易:只需将列F复制到列G,并在G5中输入新的增量。
这就是我们定期做的事情。每一列都有一个日期,这些日期必须按照时间顺序排列(以帮助匹配等操作)。偶尔会发生我们忘记输入步骤的情况。现在假设您想在F和G之间插入一列(以弥补您的遗漏),并将F复制到新的G中(以重新填充连续公式)。这简直是一场灾难。试试看——H6现在会显示=F6+H5而不是(我们绝对需要的)=G6+H5。(新的G6将是正确的。)
为了使其正常工作,我们可以用最惊人的方式混淆这个平凡的计算:F6=index($E6:F6;1;columns($E1:F1)-1)+F5。复制右侧,您将得到G6=index($E6:G6;1;columns($E1:G1)-1)+G5。
这永远不应该起作用,对吧?循环引用,显然!试试看,你会惊讶的发现Excel似乎意识到,尽管INDEX范围跨越了我们正在重新计算的单元格,但该单元格本身未被INDEX寻址,因此不会创建循环引用。
现在我已经成功了。在F和G之间插入一列,我们就得到了我们需要的东西:旧H中的续值将引用我们在新G中插入的续值。
=INDEX(6:6,1,COLUMN()-1)+F5
- chris neilsen
=INDIRECT("RC[1]",0)
。 - prograhammer