Menggunakan Google Spreadsheets, Anda dapat menulis kueri . Namun, jika Anda memiliki huruf kolom dalam tanda kutip, maka tidak diperbarui sebagai perubahan urutan kolom.
Apakah ada cara untuk menulis kueri ini sehingga tidak perlu diperbarui setiap kali kolom ditambahkan atau dihapus?
Apakah mungkin menggunakan rentang bernama dalam kueri untuk mengatasi masalah ini?
Berikut ini sebuah contoh: Jika Anda menambahkan kolom setelah 'F', maka kolom 'G' akan didorong ke 'H' dan arti dari rumus berubah.
= Permintaan (B: J, "pilih grup avg (J) oleh G")
Pertanyaan-pertanyaan Terkait
Pertanyaan ini tidak sama dengan Menggunakan Kueri dengan tajuk kolom alih-alih huruf kolom karena yang ini difokuskan pada penggunaan rentang bernama.
Ya, Anda bisa menggunakan rentang bernama alih-alih tajuk kolom bawaan, tetapi ide dasarnya sama dengan jawaban lain, pertanyaan serupa lainnya di situs ini menyarankan: spreadsheet harus disetel untuk membuat string SQL dinamis .
Katakanlah itu
J
danG
sesuai dengan rentang yang disebutkanGrades
danClass
masing - masing.Pendekatan berikut hanya berfungsi ketika kolom berada di antara kolom A dan Z
CELL("address",Grades)
akan kembali"$J:$J"
. Untuk mendapatkan referensi kolom, gunakanMID(CELL("address",Grades),2,1)
untuk mendapatkan"J"
. Rumus terakhirnya adalahPendekatan berikut berfungsi untuk semua kasus
COLUMN(Grades)
akan mengembalikan integer (sejumlah bentuk 1,2,3 dll.) Untuk menyederhanakan rumus untuk membuat argumen pernyataan SQL saya sarankan untuk memaksa SQL untuk menggunakan referensi kolom dari bentuk COL1, COL2, dll. dengan menggunakan array notasi ({B:J}
). Rumus terakhirnya adalahLembar Kerja Demo
Referensi
Menggunakan array di Google Sheets - Bantuan editor Google Documents
sumber
Jawaban Ruben tidak menyelesaikan masalah untuk semua kasus karena
MID(CELL("address",Grades),2,1)
gagal jikaGrades
rentang dipindahkan ke kolom dua huruf seperti$AA:$AA
.Dalam hal ini, formula
MID(CELL("address",Grades),2,2)
diperlukan. Untuk rentang bernama rentang atau batas$Z:$AA
rentang, rumus ini menjadi bermasalah.Formula
REGEXEXTRACT( CELL("address", Grades), "\$([a-zA-Z]+)\$")
memecahkan masalah untuk kasus umum, tapi saya sangat mempertanyakan efisiensi CPU-nya ketika digunakan di seluruh spreadsheet besar.sumber
Saya menemukan halaman ini di infoinspired.com yang menjelaskan salah satu cara melakukannya. Saya mengujinya persis seperti pada contoh yang dia berikan dan berhasil. Pengaturan:
Penjelasannya tentang F1: Formula ADDRESS yang mencakup fungsi ROW dan COLUMN mengembalikan alamat sel B1. Fungsi LEFT mengekstrak huruf pertama yang merupakan judul kolom dari itu.
--- Klik pada sel F1 dan kemudian pergi ke menu Data> Rentang yang dinamai dan beri nama rentang "Usia" (tanpa tanda kutip)
Sekarang Anda dapat merumuskan permintaan Anda sebagai:
=QUERY(A:B,"Select "&Age)
Dia punya contoh yang lebih rumit di halamannya yang akan saya uji sekarang, tapi saya didorong bahwa contoh pertama berhasil!
Sunting - maaf jika ini persis seperti yang diajukan orang lain dengan jawaban mereka. Saya baru saja menemukan contoh ini sebening kristal dan dapat mengetahuinya. Kupikir itu bisa membantu orang lain dengan pertanyaan yang sama.
sumber