Saya punya Lembar Google yang ditautkan ke formulir yang mengumpulkan balasan dari tiga orang berbeda pada subjek yang sama menggunakan formulir yang sama dan mengedit tiga kali. Ini membuat lembar yang berisi tiga kolom yang menyatakan di mana ketiga orang itu berada.
Saya perlu menghasilkan tampilan / permintaan yang mengambil tiga kolom dan menempatkan mereka 'di bawah' satu sama lain, dan tidak di sebelah satu sama lain. Dalam sebuah database saya akan melakukan sesuatu seperti query di bawah ini, saya telah memanggil 'sheet' tblMain saya, dan menyatakan empat kolom yang relevan (saya juga memerlukan ID subjek).
tblMain:
ID RALocation RBLocation RCLocation
Pertanyaan:
Select ID, RALocation as Location, 'RA' as Role from tblMain
Union
Select ID, RBLocation as Location, 'RB' as Role from tblMain
Union
Select ID, RCLocation as Location, 'RC' as Role from tblMain
Adakah yang tahu jika ada cara untuk melakukan ini di Google Sheets? Saya tidak keberatan membangun lebih dari satu lembar dan kemudian menggabungkannya di bagian akhir, tapi saya agak bingung bagaimana melakukan ini.
Jawaban:
Saya menawarkan dua versi, tergantung pada apakah sel kosong harus disimpan. Ide dasarnya sama:
CHAR
).JOIN
perintah untuk masing-masing dari tiga kolom.SPLIT
string bersambung dengan karakter yang sama.TRANSPOSE
hasil.Sebagai contoh:
di mana untuk bergabung / membelah, saya memilih karakter
CHAR(57344)
, yang ditujukan untuk penggunaan pribadi dan karenanya tidak boleh ada dalam input yang valid.Rumus di atas menghapus entri kosong , karena ini yang
SPLIT
dilakukan. Ini mungkin nyaman jika data Anda tidak memiliki kosong: menyelamatkan Anda dari kesulitan pelacakan di mana baris terakhir data berada. Tetapi di lain waktu, kekosongan harus dipertahankan.Untuk menjaga kekosongan, saya mengikuti jawaban oleh Jacob Jan Tuinstra kecuali bahwa saya menggunakan Unicode penggunaan pribadi alih-alih ruang (siapa tahu, mungkin Anda memiliki beberapa sel yang hanya berisi ruang dan Anda ingin menyimpannya). Ini melibatkan dua langkah tambahan: setelah menggabungkan semuanya seperti sebelumnya, saya gunakan
SUBSTITUTE
untuk menggantiCHAR(57344)
denganCHAR(57344)&CHAR(57345)
, lalu membagi seperti sebelumnya, dan menggantiCHAR(57345)
dengan string kosong.Hasil lengkapnya terlihat seperti ini (perhatikan bahwa sekarang saya menentukan di mana baris data terakhir):
Satu peringatan lagi: string dalam Google Sheets tidak boleh lebih dari 50.000 karakter. Jika data Anda terlalu besar untuk pendekatan berbasis string untuk bekerja, gunakan skrip ( ini adalah tempat yang baik untuk memulai).
sumber
Dimungkinkan untuk membuat penyatuan di Google Spreadsheet dengan sangat mudah saat ini dengan rumus ini:
Lihat info lebih lanjut di Bantuan Google Documents: Menggunakan array di Google Sheets
sumber
Jawaban singkat
Google Sheets adalah alat yang sangat kuat yang memiliki beberapa alternatif untuk mencapai hasil yang mirip dengan UNION-SELECT.
Alternatif
Array tertanam
Alternatif untuk menggunakan cara SPLIT-TRANSPOSE-JOIN-CHAR adalah dengan menggunakan array yang disematkan. Salah satu keuntungan dari metode ini adalah tidak perlu membuat / mendekonstruksi string, sehingga batas jumlah karakter tidak relevan.
Penyaringan
Di atas dapat digunakan dalam kombinasi dengan FILTER () untuk kasus-kasus yang memerlukan penyaringan untuk memiliki perilaku yang sama dari UNION-SELECT. Contoh
Juga dapat digunakan dalam kombinasi dengan QUERY () tetapi hasilnya termasuk baris header. Untuk mempelajari tentang cara menyingkirkan tajuk, lihat Singkirkan baris dalam hasil kueri Google Spreadsheets .
Cara membuat kolom nilai
Gunakan TRANSPOSE-SPLIT-REPT untuk membuat kolom nilai.
Juga QUERY () dapat digunakan untuk membuat kolom nilai, tetapi menghapus baris header bisa membuat rumus lebih rumit. Gunakan hanya jika batasan panjang string menyebabkan masalah.
Solusi menggunakan Array Tertanam dan TRANSPOSE-SPLIT-REPT
Asumsikan rentang tblMain adalah A1: D7, di mana A1: D1 adalah header tabel, dan data dalam A2: D7.
Referensi
Menambahkan array spreadsheet google - StackOverflow
sumber