簡體   English   中英

Excel 公式引用“向左的單元格”

[英]Excel formula to reference 'CELL TO THE LEFT'

我正在嘗試進行條件格式設置,以便如果值與其左側單元格中的值不同,單元格顏色會發生變化(每列是一個月,每行是某個對象的費用。我想監控幾個月內價格很容易發生變化。)

我可以對每個單元格進行格式化並拖動它,但我想要一個適用於整個工作表的通用公式。

=OFFSET(INDIRECT(ADDRESS(ROW(), COLUMN())),0,-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 時,這是不行的。

創建條件格式時,設置它適用於您想要的范圍(整個工作表),然后輸入一個相對公式(刪除$符號),就像您只格式化左上角一樣。

Excel 會相應地將格式應用於其余單元格。

在此示例中,從 B1 開始,左側單元格將是 A1。 只需使用它 - 不需要高級公式。


如果您正在尋找更高級的東西,您可以使用column()row()indirect(...)

如果您將單元格引用更改為使用 R1C1 表示法(工具|選項,常規選項卡),那么您可以使用簡單的表示法並將其粘貼到任何單元格中。

現在你的公式很簡單:

=RC[-1]

而不是寫很長:

=OFFSET(INDIRECT(ADDRESS(ROW(), COLUMN())),0,-1)

你可以簡單地寫:

=OFFSET(*Name of your Cell*,0,-1)

因此,例如,您可以寫入 Cell B2

=OFFSET(B2,0,-1)

引用單元格B1

仍然感謝傑森楊!! 如果沒有您的回答,我永遠不會想出這個解決方案!

使用以下公式填充 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 返回相對於當前引用的引用,因此如果間接返回正確的引用,則不需要它。

為什么不直接使用:

=ADDRESS(ROW(),COLUMN()-1)

創建User Defined Function時,我發現無法應用涉及函數OFFSETINDIRECT的其他答案。

相反,您必須使用Application.Caller來引用已使用用戶定義函數 (UDF) 的單元格。在第二步中,將列的索引轉換為相應列的名稱。
最后,您可以使用活動工作表的Range 函數來引用左側單元格。

    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=index($E6:G6;1;columns($E1:G1)-1)+G5。

這應該永遠不會工作,對吧? 循環引用,清楚! 嘗試一下並感到驚訝。 Excel 似乎意識到,雖然 INDEX 范圍跨越了我們正在重新計算的單元格,但該單元格本身並沒有被 INDEX 尋址,因此不會創建循環引用。

所以現在我在家干了。 在 F 和 G 之間插入一列,我們就得到了我們需要的結果:舊 H 中的延續值將引用我們在新 G 中插入的延續值。

您可以使用 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

制作一個命名公式“LeftCell”

對於那些尋找非易失性答案的人,您可以通過在命名公式中使用 INDEX 函數來完成此操作。

  1. 選擇單元格 A2

  2. 打開Name Manager (Ctrl+F3)

  3. 點擊New

  4. 將其命名為“LeftCell”(或您喜歡的任何名稱)

  5. 對於Scope: ,選擇Workbook

  6. Refers to:中,輸入公式:

    =INDEX(!A1:!A2, 1)

  7. 單擊OK並關閉Name Manager

這告訴 Excel 始終查看當前單元格左側的值,並且會隨着選擇不同的單元格而動態更改。 如果名稱單獨使用,它提供單元格的值,但在范圍內它使用引用。 歸功於這個關於單元格引用的答案

我認為這是最簡單的答案。

使用“名稱”來引用偏移量。

假設您想將一列(A 列)一直求和,但不包括保存總和的單元格(例如單元格 A100); 做這個:

(我假設您在創建名稱時使用 A1 引用;隨后可以切換到 R1C1)

  1. 單擊工作表中不在頂行的任意位置 - 例如單元格 D9
  2. 定義一個名為“OneCellAbove”的命名范圍,但用“=D8”覆蓋“RefersTo”框(無引號)
  3. 現在,在單元格 A100 中,您可以使用公式
    =SUM(A1:OneCellAbove)

因為這是回答@zipper 的唯一方法

你的公式的原因:

="OFFSET(INDIRECT(ADDRESS(ROW(), COLUMN())),0,-1)=""xyz"""

沒有條件格式化,因為公式在字面上要求 ="THIS PHRASE" 等於 "THAT PHRASE",嘗試這樣寫: =OFFSET(INDIRECT(ADDRESS(ROW(),COLUMN())),0,-1)="xyz"其中 "xyz" 是您的文本,"-1" 是您要搜索左側的列數。

請選擇整個工作表和 HOME > Styles - Conditional Formatting, New Rule..., Use a formula to determine which cells to format and Format values where this formula is true: :

=A1<>XFD1

格式... ,選擇格式, OKOK

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM