Công thức Excel tham chiếu 'CELL TO THE LEFT'


83

Tôi đang cố gắng thực hiện định dạng có điều kiện để màu ô sẽ thay đổi nếu giá trị khác với giá trị trong ô bên trái của nó (mỗi cột là một tháng, trong mỗi hàng là các chi phí trên đối tượng nhất định. Tôi muốn theo dõi dễ dàng thay đổi giá qua các tháng.)

Tôi có thể thực hiện theo từng ô và định dạng kéo nó, nhưng tôi muốn áp dụng một công thức chung cho toàn bộ trang tính.

Cảm ơn!


3
... và trong trường hợp của một ai đó tìm kiếm nó ... để có được những cột bên phải:=INDIRECT("RC[1]",0)
prograhammer

Đây là một câu hỏi rất hay. Thật không may, tôi không chắc liệu mình có hiểu chính xác điều này hay không, người đăng ban đầu muốn các ô của mình thay đổi mà không cần phải thực hiện định dạng có điều kiện và sau đó dán công cụ định dạng cho mỗi ô. Giả sử chúng ta có các tháng trong các hàng và chuối, táo và cam trong các cột. Trong ma trận là các mức giá. Làm thế nào chúng ta có thể làm điều gì đó sẽ tự động MÀU SẮC ĐỎ nếu có sự thay đổi giá từ tháng trước sang tháng hiện tại? Nếu có cũng là một cách tự động để tô màu các tế bào màu xanh lá cây nếu giá đi xuống và đỏ nếu
Bryan

Câu trả lời:


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

14
Sử dụng NĂM hàm cần-tra-cứu-sử dụng hiếm khi được sử dụng thay vào đó là tham chiếu tương đối A1 hoặc RC [-1] đơn giản? Điều đó giống như đi từ Brooklyn đến Bronx với điểm dừng ở Walla Walla WA!
John Machin, 09/07/09

5
Tại sao không phải là cái này thay vào đó = INDIRECT (ADDRESS (ROW (), COLUMN () - 1))
Prometheus

1
"Gián tiếp" có rất nhiều vấn đề, bao gồm (nhưng không giới hạn ở việc) là (1) đơn luồng và (2) dễ bay hơi (có thể theo tầng - buộc toàn bộ sổ làm việc của bạn phải tính toán lại với mỗi thay đổi. Đừng sử dụng nó nếu hiệu suất có vấn đề .
John Joseph

Trong Định dạng có điều kiện, tôi đặt quy tắc là ="OFFSET(INDIRECT(ADDRESS(ROW(), COLUMN())),0,-1)=""xyz"""nhưng ô không được định dạng. Chuyện gì vậy?
dây kéo

78

Phiên bản ngắn nhất tương thích nhất là:

=INDIRECT("RC[-1]",0)

"RC [-1]" có nghĩa là một cột ở bên trái. "R [1] C [-1]" ở dưới cùng bên trái.

Tham số thứ hai 0 có nghĩa là tham số đầu tiên được diễn giải bằng cách sử dụng ký hiệu R1C1.

Các tùy chọn khác:

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

Theo tôi quá dài. Nhưng hữu ích nếu giá trị tương đối là động / có nguồn gốc từ một ô khác. ví dụ:

=OFFSET(INDIRECT(ADDRESS(ROW(), COLUMN())),0, A1)

Tùy chọn đơn giản nhất:

= RC[-1]

có nhược điểm là bạn cần phải bật ký hiệu R1C1 bằng cách sử dụng các tùy chọn, điều này không nên làm khi người khác phải sử dụng excel.


11

Khi tạo định dạng có điều kiện, hãy đặt phạm vi áp dụng cho những gì bạn muốn (toàn bộ trang tính), sau đó nhập công thức tương đối (loại bỏ các $dấu hiệu) như thể bạn chỉ định dạng góc trên bên trái.

Excel sẽ áp dụng đúng định dạng cho các ô còn lại tương ứng.

Trong ví dụ này, bắt đầu bằng B1, ô bên trái sẽ là A1. Chỉ cần sử dụng cái đó - không cần công thức nâng cao.


Nếu bạn đang tìm kiếm cái gì cao cấp hơn, bạn có thể chơi xung quanh với column(), row(), và indirect(...).


7

Nếu bạn thay đổi tham chiếu ô của mình để sử dụng ký hiệu R1C1 (Công cụ | Tùy chọn, tab Chung), thì bạn có thể sử dụng một ký hiệu đơn giản và dán nó vào bất kỳ ô nào.

Bây giờ công thức của bạn chỉ đơn giản là:

=RC[-1]

5

Thay vì viết rất dài:

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

Bạn chỉ cần viết:

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

Vì vậy, ví dụ, bạn có thể viết vào Ô B2 :

=OFFSET(B2,0,-1)

tham chiếu đến ô B1

Vẫn cảm ơn Jason Young !! Tôi sẽ không bao giờ nghĩ ra giải pháp này nếu không có câu trả lời của bạn!


2
Điều này không hữu ích. Nếu bạn đã biết rằng ô của mình là B2, bạn chỉ có thể viết B1 cho ô bên trái và không sử dụng hiệu số. Vấn đề là làm một cái gì đó hoàn toàn chung chung.
Ma-thi-ơ Đọc

1
Sẽ khá thuận tiện nếu bạn biết mình bắt đầu từ ô nào, và chỉ phần bù mà bạn muốn thực hiện là động nói = OFFSET (B2,0, A2) chẳng hạn. Đó là bối cảnh mà tôi đã sử dụng nó.
Sam Fed

Đây là câu trả lời mà tôi đang tìm kiếm! Tôi muốn ai đó có thể chọn một ô duy nhất đại diện cho toàn bộ hàng và để mọi thứ tự động thay đổi để sử dụng các tham số trong hàng đó. Cảm ơn!
BT

1

điền vào ô A1 , với công thức sau:

 =IF(COLUMN(A1)=1;"";OFFSET(A20;0;-1))&"1"

Sau đó, tự động quay trở lại bên phải, bạn nhận được

 1|  A  |  B  |  C  |  ect ect
 2|    1|   11|  111|  ect ect

Nếu offset nằm ngoài phạm vi của ô có sẵn, bạn sẽ nhận được lỗi #REF! lỗi.

Hy vọng bạn thích.


1

Đơn giản hơn nữa:

=indirect(address(row(), column() - 1))

OFFSET trả về một tham chiếu liên quan đến tham chiếu hiện tại, vì vậy nếu gián tiếp trả về tham chiếu chính xác, bạn không cần nó.


Đừng bao giờ làm điều này. INDIRECT phá vỡ cây phụ thuộc - đó là một thảm họa.
Ollie2893

Tôi vừa phát hiện ra hàm này mà tôi nghĩ là hữu ích cho việc định dạng có điều kiện tùy thuộc vào hàng đầu tiên của cột. Không chắc liệu ký hiệu RC [] có hoạt động cho điều đó hay không
hẹptux

1

Khi tạo một Hàm do Người dùng Xác định , tôi phát hiện ra rằng các câu trả lời khác liên quan đến các hàm OFFSETINDIRECTkhông thể áp dụng được.

Thay vào đó, bạn phải sử dụng Application.Callerđể tham chiếu đến ô mà Hàm do Người dùng Xác định (UDF) đã được sử dụng. Trong bước thứ hai, bạn chuyển đổi chỉ mục của cột thành tên của cột tương ứng.
Cuối cùng, bạn có thể tham chiếu đến ô bên trái bằng cách sử dụng hàm Phạm vi của trang tính đang hoạt động .

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

0

Bạn có thể sử dụng tập lệnh VBA để thay đổi định dạng có điều kiện của một lựa chọn (bạn có thể phải điều chỉnh điều kiện & định dạng cho phù hợp):

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

0

Tôi tình cờ tìm thấy chuỗi này vì tôi muốn luôn tham chiếu đến "ô bên trái" nhưng CRUCIALLY theo cách không biến động (không có OFFSET, INDIRECT và các thảm họa tương tự). Tìm kiếm trên web và nhìn xuống, không có câu trả lời. (Chủ đề này cũng không thực sự cung cấp câu trả lời.) Sau một số lần mày mò, tôi tình cờ tìm ra phương pháp đáng kinh ngạc nhất, mà tôi muốn chia sẻ với cộng đồng này:

Giả sử giá trị bắt đầu là 100 trong E6. Giả sử tôi nhập một delta cho giá trị này trong F5, chẳng hạn 5. Sau đó, chúng tôi sẽ tính giá trị tiếp tục (105) trong F6 = E6 + F5. Nếu bạn muốn thêm một bước khác, thật dễ dàng: chỉ cần sao chép cột F sang cột G và nhập một delta mới trong G5.

Đây là những gì chúng tôi làm, theo định kỳ. Mỗi cột có một ngày tháng và những ngày này PHẢI theo thứ tự thời gian (để trợ giúp với MATCH, v.v.). Thường xuyên xảy ra rằng chúng ta quên nhập một bước. Bây giờ, giả sử bạn muốn chèn một cột giữa F và G (để bắt kịp sự thiếu sót của bạn) và sao chép F vào G mới (để điền lại công thức tiếp tục). Đây không phải là điều NGẮN HẠN về một thảm họa toàn diện. Hãy thử nó - H6 bây giờ sẽ nói = F6 + H5 và KHÔNG (vì chúng ta thực sự cần nó) = G6 + H5. (G6 mới sẽ đúng.)

Để thực hiện công việc này, chúng ta có thể xáo trộn phép tính tầm thường này theo cách đáng kinh ngạc nhất F6 = index ($ E6: F6; 1; cột ($ E1: F1) -1) + F5. Sao chép bên phải và bạn nhận được G6 = index ($ E6: G6; 1; các cột ($ E1: G1) -1) + G5.

Điều này sẽ không bao giờ hoạt động, phải không? Thông tư tham khảo, rõ ràng! Hãy thử nó ra và ngạc nhiên. Excel dường như nhận ra rằng mặc dù phạm vi INDEX kéo dài đến ô mà chúng ta đang tính toán lại, bản thân ô đó không được INDEX giải quyết và do đó KHÔNG tạo tham chiếu vòng tròn.

Vì vậy, bây giờ tôi đã ở nhà và khô. Chèn một cột giữa F và G và chúng ta nhận được chính xác những gì chúng ta cần: Giá trị tiếp tục trong H cũ sẽ tham chiếu trở lại giá trị tiếp tục mà chúng ta đã chèn trong G mới.



0

Tạo công thức có tên "LeftCell"

Đối với những người đang tìm kiếm một câu trả lời không thay đổi, bạn có thể thực hiện điều này bằng cách sử dụng hàm INDEX trong một công thức được đặt tên.

  1. Chọn ô A2

  2. Mở Name Manager(Ctrl + F3)

  3. Nhấp chuột New

  4. Đặt tên nó là 'LeftCell' (hoặc bất cứ thứ gì bạn thích)

  5. Đối với Scope:, chọnWorkbook

  6. Trong Refers to:, nhập công thức:

    =INDEX(!A1:!A2, 1)

  7. Nhấp OKvà đóngName Manager

Điều này cho biết Excel luôn nhìn vào giá trị ngay bên trái của ô hiện tại và sẽ thay đổi động khi các ô khác nhau được chọn. Nếu tên được sử dụng một mình, nó cung cấp giá trị của ô, nhưng trong một phạm vi, nó sử dụng tham chiếu. Ghi có cho câu trả lời này về tham chiếu ô cho ý tưởng.


0

Tôi nghĩ đây là câu trả lời dễ nhất.

Sử dụng "Tên" để tham chiếu phần bù.

Giả sử bạn muốn tính tổng một cột (Cột A) theo mọi cách, nhưng không bao gồm, ô chứa tổng (giả sử Ô A100); làm cái này:

(Tôi giả sử bạn đang sử dụng tham chiếu A1 khi tạo Tên; R1C1 sau đó có thể được chuyển thành)

  1. Bấm vào bất kỳ đâu trong trang tính không ở hàng trên cùng - giả sử Ô D9
  2. Xác định Dải ô được đặt tên được gọi, nói "OneCellAbove", nhưng ghi đè hộp 'RefersTo' bằng "= D8" (không có dấu ngoặc kép)
  3. Bây giờ, trong Ô A100, bạn có thể sử dụng công thức
    = SUM (A1: OneCellAbove)

-1

Vui lòng chọn toàn bộ trang tính và TRANG CHỦ> Kiểu - Định dạng có điều kiện, Quy tắc mới ..., Sử dụng công thức để xác định ô nào cần định dạngĐịnh dạng giá trị khi công thức này đúng ::

=A1<>XFD1

Format..., Chọn lựa chọn định dạng, OK, OK.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.