Saya memiliki Formulir Google tempat pengguna memasukkan informasi, beberapa di antaranya berisi angka nol di depan (mis. Kode pos, nomor ID).
Namun, ketika data ini disimpan ke Google Sheet, itu tidak memperlakukannya sebagai teks biasa dan menghapus nol. Bidang formulir adalah bidang teks tanpa validasi.
Saya telah mencoba memformat rentang sel yang berisi nilai-nilai ini sebagai teks biasa, tetapi sepertinya Sheets tidak mengatur pemformatan sebagai teks biasa kecuali sudah ada teks dalam sel. Jadi saya bisa memformat kolom sebagai teks biasa, mengirimkan formulir, dan nol di depannya masih akan dikupas.
Saya mencoba menulis skrip aplikasi untuk mengatasi hal ini, tetapi tidak ada cara yang baik bagi saya untuk menyebarkannya ke pengguna yang membutuhkannya.
Bagaimana saya bisa mengatasi ini tanpa harus menginstruksikan pengguna untuk menambahkan satu kutipan ke entri formulir mereka? Ini adalah hal yang sangat kecil, tetapi saya tidak dapat menemukan solusi sederhana yang bagus untuk apa yang tampaknya menjadi masalah umum. Jika saya tidak bisa membuatnya berfungsi, saya mungkin harus meninggalkan Google Formulir / Lembar sama sekali.
Jawaban:
Sebagian dari jawaban saya adalah: ini adalah bug yang dikenal (pengiriman formulir yang baru diterima tidak menghormati format kolom tempat mereka masuk, seperti yang mereka lakukan dalam versi lembaran yang lama).
Bergantung pada apa yang Anda lakukan dengan data sesudahnya, opsi lain adalah mereproduksi pengiriman formulir pada lembar lain, dengan format yang benar. Misalnya, jika kolom E berisi kode pos yang panjangnya 5 digit dan termasuk nol di depan (jika diperlukan), maka Anda bisa menggunakan:
=ArrayFormula(TEXT('Form Responses'!E:E,"00000"))
di lembar lain.
Anda perlu membawa semua kolom Anda yang lain juga. Tanpa menjadi terlalu rumit, ini dapat dengan mudah dicapai dalam Sheets versi baru, dan memformat kolom yang diinginkan, dengan (misalnya):
=QUERY('Form Responses'!A:G,"select * format E '00000'",1)
sumber
Saya baru saja mengalami masalah ini, tetapi sayangnya saya tidak tahu jumlah digit yang saya harapkan jadi saya tidak tahu berapa banyak nol yang mungkin hilang. Untungnya saya memikirkan ini sebelum saya mengirimkan formulir, jika Anda sudah memiliki tanggapan maka ini tidak akan membantu (kecuali jika Anda mengirimnya lagi).
Untuk mengatasi masalah ini saya punya:
^\[\d+\]$
Ekspresi reguler ini memaksa pengguna untuk memasukkan braket persegi terbuka di awal respons mereka yang kemudian harus diikuti oleh setidaknya satu digit dan harus diakhiri dengan braket persegi tertutup. Misalnya [0021314] akan menjadi entri yang valid. Perhatikan bahwa ini hanya akan memungkinkan angka, jika Anda hanya ingin memaksa tanda kurung siku, Anda dapat menggunakannya
^\[.+\]$
.Dalam lembar, ini akan ditampilkan sebagai [0021314], jadi Anda kemudian harus menghapus tanda kurung siku yang dapat dilakukan dengan rumus seperti di
=mid(A1,2,len(A1)-2)
mana A1 adalah sel yang berisi [0021314]. Isi otomatis dan format sel sebagai teks biasa harus melakukan apa yang Anda butuhkan.Anda juga dapat mengubah ekspresi reguler untuk memaksa pengguna memasukkan satu kutipan pada awal entri mereka
sumber
Cara yang panjang lebar untuk mengatakan "Saya tidak tahu bagaimana" ditambah dengan "tampaknya tidak mungkin" (tapi sayang sekali):
Yang terbaik (tapi lemah) yang bisa saya kelola adalah mengharapkan input (dan juga output) satu digit pada satu waktu menggunakan Skala 0 hingga 9 untuk setiap digit.
sumber
Solusi yang diusulkan di sini dan di utas lainnya hanya berfungsi untuk angka dengan jumlah digit tetap. Seperti 5 untuk kode pos yang dipertimbangkan di atas.
Saya harus menjaga nol di depan nomor telepon Belgia.
Garis tanah Belgia memiliki struktur 025382172 (9 digit)
Sementara ponsel memiliki struktur 0475123456 (10 digit)
Saya pikir saya telah menemukan solusi menduplikasi data di tab baru. Untuk melakukan ini, saya menggunakan dua array terpisah untuk memuat kelompok kolom.
Array pertama menyalin semua kolom hingga kolom nomor telepon G, tidak termasuk.
=ARRAYFORMULA('Form Responses'!A2:F302)
Array kedua menyalin semua kolom setelah kolom nomor telepon G sampai yang terakhir.
=ARRAYFORMULA('Form Responses'!H2:P302)
Di kolom nomor telepon saya punya rumus sederhana untuk menambahkan nol sebelum nilai disalin:
=("0"&'Form Responses'!G2)
... sayangnya, ini hanya berfungsi dalam mode statis.
Dalam mode dinamis, ketika baris baru datang dari Formulir Google, rumus di kolom nomor telepon G kacau, bahkan jika array tidak seharusnya mempengaruhi kolom ini.
Sebenarnya rumus
=("0"&'Form Responses'!G2)
bergeser ke baris berikutnya yang kosong=("0"&'Form Responses'!G3)
meninggalkan sel dengan nilai frustasi 0.Akan melanjutkan penyelidikan saya dengan kembali ke 1 array tunggal untuk semua kolom dalam satu blok, menambahkan kolom nomor telepon duplikat di sebelah kanan di luar zona array dan cukup memasukkan rumus berikut:
=("0"&G3)
... ingin tahu apakah itu akan berfungsi ... Jika ya, saya akan menutupi kolom nomor telepon "asli" dan hanya menampilkan yang diproses (sayangnya tidak pada tempat yang tepat di halaman).sumber
Ini adalah pos lama, tetapi saya akan merekomendasikan yang berikut ...
Di tab hasil, A1:
=QUERY('Form Responses'!A:F)
Di G1:
=ArrayFormula(IF(ROW('Form Responses'!G:G)=1, 'Form Responses'!G1, IF('Form Responses'!G:G="", "", "0"&'Form Responses'!G:G)))
Dalam H1:
=QUERY('Form Responses'!H:P)
Pendekatan serupa dapat ditambahkan untuk memodifikasi data kolom mana saja yang perlu dimodifikasi.
sumber
Saya memecahkan masalah kode pos saya yang dimulai dengan "0" dengan cara ini ... Sorot kolom, buka tab format, klik "angka", "lebih banyak format" dan kemudian "format angka kustom" Karena kode pos saya hanya 5 digit yang saya ketikkan "00000" dan tekan berlaku. dan itu berhasil!
sumber