我想要做條件格式化,以便單元格的顏色會改變,如果值不同於它左邊的單元格中的值(每列是一個月,在每行都是特定對象上的費用,我想很容易監視幾個月的價格變化。)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