Làm thế nào để ngăn chặn việc cắt và dán dữ liệu thay đổi tài liệu tham khảo trong công thức?


49

Google Sheets có một tính năng trong đó nếu bạn có tham chiếu đến ô dữ liệu trong công thức và bạn cắt dữ liệu từ ô đó và dán vào vị trí mới, tham chiếu trong công thức được cập nhật để trỏ đến vị trí ô mới.

Tôi muốn có thể cắt và dán dữ liệu của mình mà không cần thay đổi công thức.

Tôi đã từng làm một số điều ghê tởm trong quá khứ liên quan đến INDIRECT()chức năng để làm việc với tính năng này, nhưng có vẻ như đó là một cách dễ dàng hơn. Bất kỳ đề xuất?


2
buồn cười ... tôi chưa bao giờ nghĩ tính năng này là một lỗi. Nó đã làm việc này là trong Excel trong nhiều thập kỷ.
mhoran_psprep

1
Bạn đã tìm thấy thời gian để kiểm tra các câu trả lời được đưa ra? Có lẽ bạn có thể đánh dấu một trong số đó là câu trả lời tốt nhất.
Jacob Jan Tuinstra

1
Nhiều câu hỏi khác nhau được trả lời dưới đây. Câu hỏi có thể được làm sạch? Tôi nghĩ một ví dụ về vấn đề của bạn sẽ là: Ô A2 chứa công thức như "= B1 + 5". B1 chứa "42". A2 hiển thị "47", như mong đợi. Nhưng bạn đã nhận ra rằng B1 không nên có "42" trong đó, C1 nên có "42" và B1 nên có "58". Bạn bấm vào B1, "cắt", bấm vào C1, dán. B1 hiện trống (dự kiến), C1 hiện là "42" (dự kiến) nhưng A2 vẫn hiển thị "47", vì A2 đã tự động cập nhật thành "= C1 + 5", để theo dõi cắt và dán (không mong đợi). Những gì bạn muốn là A2 ở lại "= B1 + 5". Tôi có đúng không
Caesoid

Câu trả lời:


22

Các =$A$1ký hiệu cũng có thể được tự động chuyển nếu giá trị trong (nói) A1được thay đổi.

Giải pháp chắc chắn duy nhất là gửi kèm tất cả các tài liệu tham khảo của bạn INDIRECT, ví dụ =INDIRECT("$A$1")hoặc thậm chí chỉ =INDIRECT("A1").

Khó khăn với một trong những giải pháp này là bạn có nhiều công thức giống nhau, vd

=A1
=A2
=A3
...
=A99

Thông thường, bạn sẽ điền vào đầu tiên =A1và sau đó sao chép và dán (hoặc kéo xuống bằng cách sử dụng tự động điền) để tự động điền vào công thức liên tiếp. Tuy nhiên, nếu công thức đầu tiên là =$A$1hoặc =INDIRECT("A1")sau đó thì thủ thuật này sẽ không hoạt động (thực tế, đây $là công cụ dành cho - để ngăn chặn nó được tự động thay đổi).

Nếu bạn có nhiều công thức liên tiếp, một giải pháp là:

  1. Tạo công thức như bình thường (sử dụng đơn giản =A1và tự động điền)
  2. Sử dụng hộp thoại thay thế ( Ctrl+ H) và sử dụng "tìm kiếm trong công thức" để bọc tất cả =A1, =A2... =A99trong =INDIRECT("A1")v.v ... Lưu ý bạn có tùy chọn sử dụng biểu thức thông thường khi thực hiện tìm và thay thế.

Câu trả lời được cập nhật để đề xuất sử dụng tìm và thay thế tốt hơn trong Bảng tính Google mới, có thể thay thế công thức và sử dụng biểu thức chính,
Motti Strom

1
Bạn có thể đưa ra một ví dụ về các tham số tìm kiếm / thay thế sẽ bao bọc tất cả các tham chiếu ô trong công thức với INDIRECT không?
Michael

Bạn có thể sử dụng INDIRECT kết hợp với ROW () để có công thức hoạt động trên hàng hiện tại. Ví dụ: = A1 + B1 trở thành = INDIRECT ("A" & ROW ()) + INDIRECT ("B" & ROW ())
Evil Pigeon

31

Từ diễn đàn Google Docs :

Chọn phạm vi của các ô. Sau đó sử dụng Ctrl+ C(sao chép; điều này sẽ đặt các ô và công thức của chúng vào bộ đệm dán).

Bây giờ kéo (di chuột qua cạnh của lựa chọn cho đến khi con trỏ chuột thay đổi thành bàn tay; bây giờ bạn có thể kéo) các ô đã chọn sang vị trí mới.

Quay trở lại vị trí trên cùng bên trái của các ô được sao chép và sử dụng Ctrl+ V(dán).

Bây giờ bạn nên có hai bộ công thức cả hai tham chiếu cùng một ô.


6
Đây là câu trả lời duy nhất bảo tồn các công thức.
amcnabb

3
Đồng ý - đây là câu trả lời đúng duy nhất.
stevemidgley

1
Cảm ơn! Tôi đã ngạc nhiên rằng có một sự khác biệt giữa "Kéo" và sao chép / dán!
RCreswick

Vì vậy, nếu bạn muốn cắt và dán, bạn chỉ cần chọn phạm vi chọn + kéo, nhưng nếu bạn muốn sao chép, bạn cần các bước bổ sung khác để giữ nguyên bản gốc.
Mu Tâm

2
Phương pháp tốt hơn: Sao chép trang tính, cắt từ bản sao của trang tính, dán vào trang tính gốc ở vị trí mới nơi bạn cần. Khi bạn đã hoàn tất, xóa bản sao của trang tính. Bằng cách này, các tài liệu tham khảo vẫn không bị ảnh hưởng.
ADTC

30

Đã tìm ra vấn đề tương tự và cuối cùng đã tìm ra giải pháp cho Excel dường như hoạt động hoàn hảo trong Bảng tính Google.

Đối với các tham chiếu ô bạn không muốn thay đổi khi dán chỉ cần thêm $trước mỗi phần.

Vì vậy, G12sẽ trở thành$G$12

Một ô từ bảng tính tôi đang sử dụng thực hiện những gì tôi cần, trông giống như thế này:

 =$G$1&Sheet1!B3&Sheet1!A3&$G$2

1
Điều này đã không làm việc cho tôi. Xem thay thế của tôi bên dưới webapps.stackexchange.com/questions/22558/ấc
Motti Strom

@Leonard, Wow cú pháp thật kinh khủng . Nó trực quan hơn nhiều nếu nó ngược lại, tức là các ô tương đối sử dụng $trong khi các ô tuyệt đối là mặc định.
Pacerier

@Pacerier Tôi hoàn toàn đồng ý với bạn, mặc dù nó hoạt động, nó thật kinh khủng và khó đọc. Tôi không sử dụng bảng tính thường xuyên đủ để hiểu những gì bạn đề xuất mặc dù. Bạn có thể giải thích?
Leonard

@Leonard, ý tôi là hành vi mặc định là khác nhau, vì vậy thay vì $G$1&Sheet1!B3&Sheet1!A3&$G$2, chúng tôi làm G1&Sheet1!$B$3&Sheet1!$A$3&G2.
Pacerier

1
@grahamparks: Sau đó downvote và có thể để lại nhận xét tại sao nó không phải là một giải pháp. Đừng cố thêm bình luận của riêng bạn vào câu trả lời.
ale

7

Trong Bảng tính Google, để cắt và dán các ô mà không tự động dịch chuyển công thức của chúng, bạn sử dụng Ctrl+ Xđể cắt (hoặc Ctrl+ Cđể sao chép) và Ctrl+ Shift+ Vđể dán.

Điều này Shiftnói với Google Sheets để lại công thức của bạn một mình.


fyi, nếu bạn đang sử dụng các ứng dụng như Flycut (mac) với phím tắt CTRL + SHIFT + V đã hoạt động, thì nó sẽ xung đột với phím tắt bảng tính và khóa công thức sẽ không hoạt động. Shortcut Disable Flycut ứng dụng, hoặc chỉ bỏ nó đầu tiên trước khi làm tổ hợp phím CTRL + SHIFT + V .
Hlung

13
Sửa đổi dán với Shift xuất hiện để tạo các giá trị dán Bảng tính Google thay vì các công thức chưa sửa đổi.
Matt McClure

4
Điều này không chính xác - ctrl-shift-v sẽ chỉ dán "giá trị" công thức của bạn. Điều này sẽ ngăn chuyển đổi dữ liệu của bạn, nhưng các ô kết quả sẽ chứa các giá trị tĩnh không phải là công thức.
stevemidgley

1
Không hoạt động , -1.
Pacerier

1
Tôi không bao giờ cắt. Khi bạn dán bằng ctrl+ shift+ v, nó luôn sao chép các giá trị, ngay cả khi bạn đã ctrl+ xtrên các ô nguồn.
sparebytes

5

Làm việc theo cách này giống như trong Excel:

SAO CHÉP và dán dữ liệu, sau đó quay lại và xóa nó khỏi vị trí ban đầu.


3

Cắt (thay vì Sao chép) dường như hoạt động với tôi, có thể vì lý do tương tự kéo các ô được chọn hoạt động - tức là hoạt động tương tự. Đây cũng là cách duy nhất tôi biết để dán vào một trang khác mà không thay đổi công thức.

Nếu bạn đang cố gắng thực hiện Sao chép thay vì Di chuyển, hãy sử dụng phương pháp kéo (sao chép trước khi kéo) hoặc sao chép nó ở một nơi khác trên trang trước.


2

Để di chuyển một phạm vi ô đến một vị trí mới trong Google Sheets:

1. Chọn phạm vi ô bạn muốn di chuyển
2. Di chuyển chuột đến bất kỳ cạnh nào của lựa chọn cho đến khi con trỏ chuyển sang tay
3. Kéo các ô của bạn đến vị trí mới

Điều này thực hiện những gì nó cần - nó di chuyển chúng - vì vậy tất cả thông tin di động sẽ vẫn chính xác như ở vị trí ban đầu của chúng.

ps. Google cũng đã hướng dẫn điều này ở đây nhưng họ không nói rằng bạn có thể kéo từ bất kỳ cạnh nào, chỉ là đỉnh cao nhất và đó là lý do tại sao hướng dẫn của tôi tốt hơn! :) Ngoài ra, cũng tốt để lưu ý rằng các ô bạn chọn cần phải liền kề để làm việc này.


Bắt rất đẹp!
marikamitsos

Phương pháp tương tự cũng được đề cập ở đây . Vẫn. Điều này được nghiên cứu và giải thích tốt hơn.
marikamitsos

1

Tạo bản sao văn bản của công thức thay vì bản sao ô: Sử dụng chuột để chọn văn bản công thức và nhấn CTRL + C. Sau đó chọn trường đích và nhấn CTRL + V. Điều này bảo tồn công thức


1
Nhưng bạn sẽ phải lặp lại điều này cho mỗi ô .... Có cách nào để sao chép văn bản qua nhiều ô không?
Pacerier

0

Cách dễ nhất là chỉ cần chọn tất cả các ô bạn muốn di chuyển và kéo / thả đến nơi bạn muốn. Nếu bạn có các công thức trong các ô khác được tham chiếu trở lại vị trí ban đầu của các ô bạn đã di chuyển, các công thức tham chiếu sẽ tự động cập nhật đến vị trí mới của các ô bạn đã di chuyển. Hi vọng điêu nay co ich! (Giả sử điều này hoạt động trong Excel, nhưng tôi chỉ thực hiện nó trong Google Sheets).


0
  1. Chọn các ô bằng chuột
  2. Sao chép bảng tạm
  3. Di chuyển các ô đã chọn đến một vị trí mới bằng chuột của bạn thông qua việc chụp cạnh của nhóm
  4. Dán từ bảng ghi tạm vào khoảng trống bạn vừa di chuyển mọi thứ khỏi

0

Tôi chỉ Tìm và Thay thế tất cả các trường hợp của '=' bằng '' (hoặc càng nhiều công thức tôi đang cố gắng sao chép càng tốt) để biến tất cả các công thức thành văn bản thuần túy. Tôi sao chép và dán các ô, sau đó thêm lại '=' .

Lưu ý: điều này có thể sẽ không hoạt động đối với các trang tính lớn, vì nó có thể gây ra hậu quả ngoài ý muốn bằng cách chỉnh sửa các ô khác, nhưng nó thường hoạt động cho mục đích của tôi.


0

Đây là một lựa chọn khác:

  1. Chuyển sang chế độ "Hiển thị công thức" (trong menu Xem)
  2. sao chép vùng mong muốn
  3. Dán vào một số trình soạn thảo văn bản bên ngoài
  4. Thực hiện một số thay đổi - có thể đơn giản như thêm một không gian ở đâu đó
  5. Sao chép các công thức từ trình soạn thảo văn bản bên ngoài
  6. Dán vào vùng mục tiêu trong trang tính
  7. Tắt hiển thị công thức

Mặc dù điều này có vẻ như là một thủ tục dài, nhưng trong thực tế, nó chỉ là một vài nét chính. Ngoài ra, bước # 4 là bắt buộc trong thiết lập của tôi - không có nó, Sheets vẫn sẽ cập nhật các vị trí ô như thể nó là bản sao và dán trực tiếp. YMMV.


0

Sử dụng INDIRECT()các công việc tuyệt vời để bảo vệ vị trí tuyệt đối của các tham chiếu sau khi các mục tiêu đã được sao chép và dán, nhưng vấn đề là nó cũng giữ được vị trí tuyệt đối khi công thức được sao chép, có nghĩa là bạn không thể dễ dàng mở rộng công thức để bao quát một công thức lớn phạm vi khi sử dụng nó.

Giải pháp là kết hợp INDIRECT()với ROW(), COLUMN()ADDRESS()lập trình tạo vị trí của ô mục tiêu dựa trên ô của công thức.

Trong trường hợp đơn giản nhất, chẳng hạn như khi ô mục tiêu có một cột cố định và luôn ở cùng một hàng với công thức, điều này có thể được thực hiện như sau:

INDIRECT("A"&ROW())

Để giới thiệu độ lệch động từ ô công thức, bạn có thể sử dụng ADDRESS():

INDIRECT(ADDRESS(ROW()-1,COL()-4))

Trong ảnh chụp màn hình bên dưới, các công thức trong B1:E1được mở rộng thành 16 hàng bên dưới, và sau đó chuỗi số trong A7:A10được cắt và dán 6 ô xuống. Như bạn có thể thấy, các công thức đơn giản nhất được tự động điều chỉnh và đồng bộ hóa, trong khi việc sử dụng ngây thơ INDIRECT()không ngoại suy trên tất cả các hàng một cách chính xác, nhưng hai công thức sử dụng INDIRECT()cùng với truy xuất theo vị trí của hàng và cột có thể duy trì các tham chiếu của chúng:

Hình ảnh trình diễn


-1

Bạn có thể nhấn F4để xoay vòng qua các tùy chọn tham chiếu tuyệt đối khác nhau khi con trỏ ở trên ô hoặc phạm vi. Điều này hoạt động trên Mac và Windows.

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.