Rumus referensi sel daripada nilai di Excel?

1

Katakanlah di A1 saya punya "= ROW ()". Sel menunjukkan '1' karena ini adalah baris pertama dalam sheet.

Sekarang di A2, saya meletakkan "= A1". Sayangnya, ini merujuk pada VALUE A1, bukan rumus. Jika referensi rumus, maka sebaliknya A2 akan memberikan nilai '2' sebagai gantinya (yang saya inginkan).

Jika saya kemudian mengubah rumus di A1 setelahnya, maka nilai A2 juga akan berubah, karena itu bergantung pada rumus di A1.

Bagaimana saya melakukannya?

Dan W
sumber
Salin A1 dan tempel di A2. Itu menyalin rumus ke A2. Jika rumus berisi referensi sel, mereka akan secara otomatis menyesuaikan kecuali Anda jangkar baris dan / atau kolom dengan $.
fixer1234
@ fixer1234: Cukup menyalin seperti ini tidak bekerja seolah-olah Anda kemudian mengubah A1, maka A2 juga tidak akan berubah. Saya telah mengedit Q untuk mengklarifikasi.
Dan W
Sepertinya Anda ingin mengatakan bahwa A1 berisi fungsi ROW (), jadi Anda ingin merujuknya dengan cara dari baris berikutnya yang akan ditafsirkan sebagai ROW (A1) +1. A2 perlu mengandung formula independennya sendiri yang memenuhi apa yang Anda inginkan. Tidak ada cara untuk memasukkan rumus A1 ke dalam apa yang dilakukan A2. Jika Anda mendeskripsikan bagaimana Anda ingin menggunakannya, kami dapat menyarankan solusi.
fixer1234
@ fixer1234: Saya sudah rejigged sedikit, dan mudah-mudahan diklarifikasi, meskipun saya pikir itu sangat jelas sebelumnya. Bisakah Anda membatalkan pemungutan suara dekat Anda, atau sebaliknya menyarankan agar saya bisa membuatnya lebih jelas jika Anda benar-benar berpikir itu mungkin? Btw, saya tidak ingin yang seperti "ROW (A1) +1" di A2. Hanya saja, menjadi baris kedua, ia secara otomatis mengambil fungsi ROW (), dan menerapkannya ke sel itu, memberikan nilai 2.
Dan W
Itu seperti Anda mendeskripsikan rumus untuk A2 yang setara dengan: = Use_A1's_formula_adjusted_for_here. Excel tidak memiliki mekanisme untuk secara dinamis menggunakan rumus sel lain dengan mereferensikan sel itu. Setiap sel membutuhkan rumusnya sendiri (yang dapat mereferensikan hasil dari sel lain). Anda dapat menyalin / menempelkan formula sel lain, dan Anda dapat memperbarui secara otomatis jika formula berubah (solusi VBA seperti Scarlet Manuka). Jika Anda memiliki versi Excel terbaru, FORMULATEXT akan memberi Anda teks rumus di sel lain, meskipun Anda tidak bisa menjalankannya seperti rumus.
fixer1234

Jawaban:

1

Tidak ada cara untuk melakukan ini secara asli dengan fungsi lembar kerja Excel. Jika Anda membutuhkan fungsi ini, Anda harus menggunakan VBA.

Anda bisa menggunakan acara Worksheet_Change (). Ini akan menyala ketika konten sel diubah, tetapi tidak dengan perhitungan ulang sederhana. Ini memiliki parameter yang menunjukkan sel-sel yang telah diubah; Anda dapat menggunakan ini untuk melihat apakah Anda perlu melakukan sesuatu. Kode ini harus masuk dalam area kode untuk lembar kerja yang Anda gunakan. (Buka VBA dengan Alt + F11; di panel kiri, klik dua kali pada lembar kerja. Anda akan melihat sesuatu seperti "Microsoft Visual Basic - nama file - [ sheetname (Kode)]" di bilah judul.)

Jelas, perbarui nama sheet dan rentang seperti yang disyaratkan dalam kode di bawah ini.

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim test As Range, src As Range, dest As Range

    Set src = Worksheets("Sheet1").Range("A1")
    Set dest = Worksheets("Sheet1").Range("A2")
    Set test = Intersect(Target, src)
    If Not (test Is Nothing) Then
        dest.Formula = src.Formula
    End If
End Sub

Kode di atas akan menyalin rumus dengan tepat - jika Anda merujuk ke sel F3 di sel A1, Anda juga akan memiliki referensi ke sel F3 di sel A2. Jika Anda tidak ingin ini terjadi, ubah baris di dalam pernyataan Jika ke dest.FormulaR1C1 = src.FormulaR1C1. Ini akan mengubah referensi relatif apa pun dalam rumus Anda dengan tepat.

Anda bisa mengubah destke rentang yang lebih besar jika Anda ingin mengatur banyak sel sekaligus berdasarkan rumus di sel A1.

Satu catatan adalah bahwa ini tidak akan secara otomatis mengembalikan rumus di sel jika Anda mengubah sel-sel - yaitu jika Anda mengubah rumus di A2, ini tidak akan secara otomatis mengembalikannya, karena kami hanya melakukan pembaruan ketika sel A1 perubahan. Jika Anda ingin melindungi dari ini, ubah jalurnya

Set test = Intersect(Target, src)

untuk

Set test = Intersect(Target, Union(src, dest))
Scarlet Manuka
sumber
0

Anda dapat mencapainya dengan tabel (dari Excel 2007: pilih rentang Anda lalu: Sisipkan - Tabel; baris pertama harus berisi judul ).
Setiap kali Anda mengubah rumus, rumus itu akan diperbarui di seluruh kolom (atau Anda akan ditanya apakah Anda ingin memperbaruinya jika rumus di kolom itu tidak sama sebelum perubahan).

Memperbarui

Di sini Anda menemukan deskripsi terperinci cara membuat kolom terhitung dalam tabel.
Sekarang jika Anda mengubah rumus di salah satu sel seluruh kolom akan diperbarui. (Dukungan Office)
Jika bukan itu masalahnya, pastikan bahwa "isi rumus dalam tabel untuk membuat kolom terhitung" dicentang di File - Options - Proofing - "AutoFormat as You Type" tab.

Máté Juhász
sumber
Bisakah Anda mengklarifikasi lebih lanjut? Konten apa yang saya miliki di sel A1, dan A2?
Dan W