Bagaimana mencegah cut dan paste data yang mengubah referensi dalam formula?

49

Google Sheets memiliki fitur di mana jika Anda memiliki referensi ke sel data dalam rumus, dan Anda memotong data dari sel itu dan menempelnya di lokasi baru, referensi dalam rumus diperbarui untuk menunjuk ke lokasi sel baru.

Saya ingin dapat memotong dan menempelkan data saya tanpa mengubah formula saya.

Saya telah melakukan beberapa hal mengerikan di masa lalu yang melibatkan INDIRECT()fungsi untuk memperbaiki fitur ini, tetapi sepertinya harus ada cara yang lebih mudah. Ada saran?

grahampark
sumber
2
lucu ... Saya tidak pernah menganggap fitur ini sebagai bug. Ini telah berhasil di Excel selama beberapa dekade.
mhoran_psprep
1
Apakah Anda menemukan waktu untuk memeriksa jawaban yang diberikan? Mungkin Anda dapat menandai salah satunya sebagai jawaban terbaik.
Jacob Jan Tuinstra
1
Banyak pertanyaan berbeda dijawab di bawah ini. Bisakah pertanyaannya dibersihkan? Saya pikir contoh masalah Anda adalah ini: Sel A2 berisi rumus seperti "= B1 + 5". B1 mengandung "42". A2 menampilkan "47", seperti yang diharapkan. Tetapi Anda telah menyadari bahwa B1 seharusnya tidak memiliki "42" di dalamnya, C1 seharusnya memiliki "42", dan B1 seharusnya memiliki "58". Anda klik pada B1, "potong", klik pada C1, tempel. B1 sekarang kosong (diharapkan), C1 sekarang "42" (diharapkan) tetapi A2 masih menampilkan "47", karena A2 secara otomatis diperbarui ke "= C1 + 5", untuk mengikuti cut dan paste (tidak diharapkan). Yang Anda inginkan adalah A2 untuk tetap "= B1 + 5". Apakah saya benar?
cesoid

Jawaban:

22

The =$A$1notasi juga dapat secara otomatis dipindahkan jika nilai di (katakanlah) A1berubah.

Satu-satunya solusi pasti adalah dengan menyertakan semua referensi Anda INDIRECT, misalnya =INDIRECT("$A$1")atau bahkan adil =INDIRECT("A1").

Kesulitan dengan salah satu solusi ini adalah di mana Anda memiliki banyak rumus yang sama, misalnya

=A1
=A2
=A3
...
=A99

Biasanya, Anda akan mengisi yang pertama =A1dan kemudian salin dan tempel (atau seret menggunakan autofill) untuk mengisi formula berturut-turut secara otomatis. Namun, jika rumus pertama adalah =$A$1atau =INDIRECT("A1")kemudian trik ini tidak berfungsi (sebenarnya, inilah gunanya $- untuk mencegahnya diubah secara otomatis).

Jika Anda memiliki banyak rumus berurutan, satu solusinya adalah:

  1. Buat formula seperti biasa (gunakan polos =A1dan isi ulang otomatis)
  2. Gunakan dialog ganti ( Ctrl+ H) dan gunakan "cari dalam rumus" untuk membungkus semua =A1, =A2... =A99di =INDIRECT("A1")dll. Perhatikan Anda memiliki opsi untuk menggunakan ekspresi reguler saat melakukan pencarian-dan-ganti.
Motti Strom
sumber
Jawaban yang diperbarui untuk menyarankan penggunaan temukan-dan-ganti yang lebih baik di Google Spreadsheets Baru, yang dapat melakukan penggantian dalam rumus dan menggunakan regexps,
Motti Strom
1
Bisakah Anda memberikan contoh apa parameter pencarian / penggantian akan membungkus semua referensi sel dalam formula dengan INDIRECT?
Michael
Anda dapat menggunakan INDIRECT dalam kombinasi dengan ROW () untuk memiliki formula yang beroperasi pada baris saat ini. Misalnya: = A1 + B1 menjadi = TIDAK LANGSUNG ("A" & ROW ()) + TIDAK LANGSUNG ("B" & ROW ())
Evil Pigeon
31

Dari forum Google Documents :

Pilih rentang sel. Kemudian gunakan Ctrl+ C(salin; ini akan menempatkan sel dan formula mereka di buffer paste).

Sekarang seret (arahkan kursor ke tepi seleksi sampai kursor mouse berubah menjadi tangan; sekarang Anda dapat menyeret) sel yang dipilih ke posisi baru.

Kembali ke posisi kiri-atas asli sel yang disalin dan gunakan Ctrl+ V(tempel).

Sekarang Anda harus memiliki dua set rumus yang keduanya merujuk sel yang sama.

Matt McClure
sumber
6
Ini adalah satu-satunya jawaban yang mempertahankan formula.
amcnabb
3
Setuju - ini adalah satu-satunya jawaban yang benar.
stevemidgley
1
Terima kasih! Saya terkejut bahwa ada perbedaan antara "Seret" dan salin / tempel!
rcreswick
Jadi jika Anda ingin memotong dan menempelkan Anda hanya perlu rentang pilih + seret bagian, tetapi jika Anda ingin menyalin Anda memerlukan langkah-langkah tambahan lainnya untuk mempertahankan yang asli.
Mu Mind
2
Metode yang lebih baik: Gandakan lembar, potong dari klon lembar, tempel ke lembar asli di lokasi baru di mana Anda membutuhkannya. Setelah selesai, hapus klon lembar itu. Dengan cara ini, referensi tetap tidak terpengaruh.
ADTC
30

Datangi ini mencari masalah yang sama dan akhirnya menemukan solusi untuk Excel yang tampaknya berfungsi dengan baik di Google Spreadsheets.

Untuk referensi sel yang tidak ingin Anda ubah pada tempel, tambahkan saja $sebelum setiap bagian.

Jadi G12akan menjadi$G$12

Sel dari spreadsheet yang saya gunakan yang melakukan apa yang saya butuhkan, terlihat seperti ini:

 =$G$1&Sheet1!B3&Sheet1!A3&$G$2
Leonard
sumber
1
Ini tidak berhasil untuk saya. Lihat alternatif saya di bawah ini webapps.stackexchange.com/questions/22558/…
Motti Strom
@ Leonard, Wow sintaksinya mengerikan . Ini jauh lebih intuitif jika sebaliknya, yaitu sel relatif digunakan $sementara sel absolut adalah default.
Pacerier
@Pacerier Saya setuju dengan Anda sepenuhnya, meskipun berfungsi, itu mengerikan dan sulit dibaca. Saya tidak cukup sering menggunakan spreadsheet untuk memahami apa yang Anda sarankan. Bisakah Anda menguraikan?
Leonard
@ Leonard, maksud saya perilaku default berbeda, jadi alih-alih $G$1&Sheet1!B3&Sheet1!A3&$G$2, kita lakukan G1&Sheet1!$B$3&Sheet1!$A$3&G2.
Pacerier
1
@ grahamparks: Lalu turunkan suaranya dan mungkin tinggalkan komentar mengapa itu bukan solusi. Jangan mencoba menambahkan komentar Anda sendiri ke dalam jawabannya.
ale
7

Di Google Spreadsheets, untuk memotong dan menempelkan sel tanpa menggeser rumusnya secara otomatis, Anda menggunakan Ctrl+ Xuntuk memotong (atau Ctrl+ Cuntuk menyalin), dan Ctrl+ Shift+ Vuntuk menempel.

The Shiftmemberitahu Google Sheets untuk meninggalkan formula Anda sendiri.

penguin yang penuh semangat
sumber
fyi, jika Anda menggunakan aplikasi seperti Flycut (mac) dengan pintasan CTRL + SHIFT + V sudah aktif, maka itu akan bertentangan dengan pintasan spreadsheet dan penguncian rumus tidak akan berfungsi. Shortcut Disable Flycut aplikasi, atau hanya berhenti terlebih dahulu sebelum melakukan CTRL + SHIFT + V .
Hlung
13
Memodifikasi tempel dengan Shift muncul untuk menjadikan nilai tempel Google Spreadsheet daripada rumus yang tidak dimodifikasi.
Matt McClure
4
Ini tidak benar - ctrl-shift-v hanya akan menempelkan "nilai" dari rumus Anda. Ini akan mencegah transpos data Anda, tetapi sel-sel yang dihasilkan akan berisi nilai-nilai statis bukan formula.
stevemidgley
1
Tidak berfungsi , -1.
Pacerier
1
Saya tidak pernah memotong. Saat Anda menempel dengan ctrl+ shift+ v, itu selalu menyalin nilai, bahkan jika Anda ctrl+ xpada sel sumber.
sparebytes
5

Atasi ini dengan cara yang sama seperti di Excel:

SALIN dan tempel data, lalu kembali dan hapus dari tempat aslinya.

MaryC.dariNZ
sumber
3

Potong (bukannya Salin) tampaknya bekerja untuk saya, mungkin karena alasan yang sama menyeret sel yang dipilih berfungsi - yaitu operasi yang sama. Ini juga satu-satunya cara saya tahu untuk menempel ke halaman lain tanpa mengubah formula.

Jika Anda mencoba melakukan Salin alih-alih Pindah, gunakan metode seret (salin sebelum menyeret), atau salin di tempat lain di halaman terlebih dahulu.

Peter Tseng
sumber
2

Untuk memindahkan rentang sel ke lokasi baru di Google Sheets:

1. Pilih rentang sel yang ingin Anda pindahkan
2. Gerakkan mouse Anda ke tepi pilihan hingga kursor berubah menjadi tangan
3. Seret sel Anda ke lokasi baru

Ini melakukan apa yang seharusnya - itu menggerakkan mereka - sehingga semua informasi sel akan tetap sama persis seperti di lokasi semula.

ps. Google juga telah menginstruksikan ini di sini, tetapi mereka tidak mengatakan Anda dapat menyeret dari ujung mana pun, hanya yang teratas, dan itulah mengapa instruksi saya lebih baik! :) Juga baik untuk dicatat bahwa sel-sel yang Anda pilih harus berdekatan agar ini berfungsi.

Dniz
sumber
Tangkapan yang sangat bagus!
marikamitsos
Metode yang sama juga disebutkan di sini . Masih. Yang ini lebih baik diteliti dan dijelaskan.
marikamitsos
1

Lakukan salinan teks formula dan bukan salinan sel: Gunakan mouse untuk memilih teks formula dan tekan CTRL + C. Kemudian pilih bidang tujuan dan tekan CTRL + V. Ini mempertahankan formula

Claus Rasmussen
sumber
1
Tetapi Anda harus mengulangi ini untuk setiap sel .... Apakah ada cara untuk menyalin teks melalui beberapa sel?
Pacerier
0

Cara termudah adalah dengan memilih semua sel yang ingin Anda pindahkan dan seret / jatuhkan ke tempat yang Anda inginkan. Jika Anda memiliki rumus di sel lain yang merujuk kembali ke lokasi asli sel yang Anda pindahkan, rumus referensi akan secara otomatis memperbarui ke lokasi baru sel yang Anda pindahkan. Semoga ini membantu! (Anggap ini berfungsi di Excel, tapi saya baru melakukannya di Google Sheets).

Danny
sumber
0
  1. Pilih sel dengan mouse
  2. Salin co clipboard
  3. Pindahkan sel yang dipilih ke lokasi baru dengan mouse Anda melalui menangkap tepi grup
  4. Tempel dari clipboard ke ruang kosong yang baru saja Anda pindahkan
Alex Debkaliuk
sumber
0

Saya hanya Temukan dan Ganti semua contoh '=' dengan '' (atau sebanyak mungkin rumus yang saya coba salin) untuk membuat semua rumus menjadi teks biasa. Saya menyalin dan menempelkan sel, lalu menambahkan kembali '=' .

Catatan: ini mungkin tidak akan berfungsi untuk lembaran besar, karena dapat memiliki konsekuensi yang tidak diinginkan dengan mengedit sel lain, tetapi biasanya berfungsi untuk tujuan saya.

Luke Redmore
sumber
0

Ini pilihan lain:

  1. Beralih ke mode "Tampilkan formula" (di bawah menu Lihat)
  2. salin area yang diinginkan
  3. Rekatkan di beberapa editor teks eksternal
  4. Buat beberapa perubahan - bisa sesederhana menambahkan ruang di suatu tempat
  5. Salin rumus dari editor teks eksternal
  6. Rekatkan di area target di lembar
  7. Matikan Tampilkan rumus

Meskipun ini tampak seperti prosedur yang panjang, dalam praktiknya itu hanya beberapa pukulan kunci. Selain itu, langkah # 4 wajib dalam pengaturan saya - tanpanya Sheets masih akan memperbarui lokasi sel seolah-olah itu adalah copy dan paste langsung. YMMV.

eran
sumber
0

Menggunakan INDIRECT()karya yang bagus untuk mempertahankan posisi absolut referensi setelah target telah disalin dan ditempelkan, tetapi masalahnya adalah ia juga mempertahankan posisi absolut ketika rumus disalin, artinya Anda tidak dapat dengan mudah memperluas rumus untuk mencakup besar Kisaran saat menggunakannya.

Solusinya adalah menggabungkan INDIRECT()dengan ROW(),, COLUMN()dan secara ADDRESS()terprogram menghasilkan posisi sel target berdasarkan pada sel rumus.

Dalam kasus paling sederhana, seperti ketika sel target memiliki kolom tetap dan selalu tetap di baris yang sama dengan rumus, ini dapat dilakukan sebagai berikut:

INDIRECT("A"&ROW())

Untuk memperkenalkan offset dinamis dari sel rumus, Anda dapat menggunakan ADDRESS():

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

Dalam tangkapan layar di bawah ini, rumus di B1:E1diperluas ke 16 baris di bawah, dan kemudian urutan nomor dalam A7:A10dipotong dan ditempelkan 6 sel ke bawah. Seperti yang Anda lihat, rumus paling sederhana secara otomatis disesuaikan dan tidak sinkron, sementara penggunaan naif INDIRECT()tidak mengekstrapolasi di semua baris dengan benar, tetapi dua rumus yang digunakan INDIRECT()bersama dengan pengambilan terprogram dari lokasi baris dan kolom mampu mempertahankan referensi mereka:

Gambar Demonstrasi

Will Chen
sumber
-1

Anda dapat menekan F4untuk menggilir berbagai opsi referensi absolut ketika kursor berada di sel atau rentang. Ini berfungsi pada Mac dan Windows.

Mick Liubinskas
sumber