Wie kann ich Google Sheets dazu bringen, meine vom Formular gesendeten Zeichenfolgen als einfachen Text zu behandeln und führende Nullen beizubehalten?

8

Ich habe Google Forms, in denen Benutzer Informationen eingeben, von denen einige führende Nullen enthalten (z. B. Postleitzahlen, ID-Nummern).

Wenn diese Daten jedoch in Google Sheet gespeichert werden, werden sie nicht als einfacher Text behandelt und die Null wird entfernt. Die Formularfelder sind Textfelder ohne Validierung.

Ich habe versucht, den Zellenbereich, der diese Werte enthält, als einfachen Text zu formatieren, aber es scheint, dass Sheets die Formatierung nicht als einfachen Text festlegt, es sei denn, eine Zelle enthält bereits Text. So kann ich eine Spalte als einfachen Text formatieren, das Formular senden und die führende Null wird weiterhin entfernt.

Ich habe versucht, ein Apps-Skript zu schreiben, um damit umzugehen, aber es gibt keine gute Möglichkeit für mich, es für die Benutzer bereitzustellen, die es benötigen würden.

Wie kann ich das umgehen, ohne die Benutzer anweisen zu müssen, ihrem Formulareintrag ein einzelnes Angebot voranzustellen? Das ist so eine kleine Sache, aber ich kann keine gute einfache Lösung für das finden, was anscheinend ein häufiges Problem ist. Wenn dies nicht funktioniert, muss ich möglicherweise Google Forms / Sheets ganz löschen.

res
quelle
1
Willkommen bei Webanwendungen ! Gute Frage, ich habe es leicht bearbeitet, um das Lesen zu erleichtern. Haben Sie gesehen, wie ich Google Text & Tabellen dazu bringen kann, die Formatierung einer Formularantwort als Datum zu beenden?
Vidar S. Ramdal
1
Ja, und wie oben erwähnt, habe ich versucht, was die "akzeptierte Antwort" vorschlägt, aber es ist für eine ältere Version von Blättern und das funktioniert nicht mehr.
Res

Antworten:

3

Ein Teil meiner Antwort wäre: Dies ist ein bekannter Fehler (neu empfangene Formularübermittlungen berücksichtigen nicht das Format der Spalten, in denen sie landen, wie in der alten Version der Blätter).

Je nachdem, was Sie anschließend mit den Daten tun, besteht eine andere Möglichkeit darin, die Formularübermittlungen auf einem anderen Blatt mit dem richtigen Format zu reproduzieren. Wenn Spalte E beispielsweise Postleitzahlen enthält, die 5-stellig sein sollten und führende Nullen enthalten (falls erforderlich), können Sie Folgendes verwenden:

=ArrayFormula(TEXT('Form Responses'!E:E,"00000"))

auf einem anderen Blatt.

Sie müssten jedoch auch alle anderen Spalten übernehmen. Ohne zu kompliziert zu werden, kann dies in der neuen Version von Sheets relativ einfach erreicht werden, und formatieren Sie die Spalte (n) wie gewünscht mit (z. B.):

=QUERY('Form Responses'!A:G,"select * format E '00000'",1)

AdamL
quelle
2

Ich habe gerade dieses Problem festgestellt, aber leider weiß ich nicht, wie viele Ziffern ich erwarte, sodass ich nicht weiß, wie viele Nullen möglicherweise fehlen. Zum Glück habe ich darüber nachgedacht, bevor ich das Formular verschickt habe. Wenn Sie bereits Antworten haben, hilft dies nicht (es sei denn, Sie senden es erneut).

Um dieses Problem zu lösen, habe ich:

  1. Stellen Sie den Fragentyp auf "Text"
  2. Unter "Erweiterte Einstellungen" habe ich "Regulärer Ausdruck" ausgewählt.
  3. Im nächsten Dropdown-Feld habe ich "Übereinstimmungen" ausgewählt.
  4. In das Textfeld habe ich eingegeben ^\[\d+\]$

Dieser reguläre Ausdruck zwingt den Benutzer, zu Beginn seiner Antwort eine offene eckige Klammer einzugeben, auf die mindestens eine Ziffer folgen muss und die mit einer geschlossenen eckigen Klammer abgeschlossen werden muss. Zum Beispiel wäre [0021314] ein gültiger Eintrag. Beachten Sie, dass dies nur Ziffern zulässt. Wenn Sie nur die eckigen Klammern erzwingen möchten, können Sie ^\[.+\]$stattdessen verwenden.

In dem Blatt wird dies als [0021314] angezeigt, sodass Sie dann die eckigen Klammern entfernen müssen. Dies kann mit einer Formel erfolgen, =mid(A1,2,len(A1)-2)bei der A1 die Zelle ist, die [0021314] enthält. Das automatische Ausfüllen und Formatieren der Zellen als einfacher Text sollte den Rest Ihrer Aufgaben erledigen.

Sie können auch den regulären Ausdruck ändern, um Benutzer zu zwingen, zu Beginn ihrer Eingabe ein einfaches Anführungszeichen einzugeben

Rob C.
quelle
0

Eine langatmige Art zu sagen "Ich weiß nicht wie" in Verbindung mit "scheint nicht möglich zu sein" (aber eine echte Schande):

Das Beste (aber Schwache), das ich schaffen kann, ist, eine Eingabe (und damit auch Ausgabe) jeweils eine Ziffer zu erwarten, wobei für jede Ziffer eine Skala von 0 bis 9 verwendet wird.

pnuts
quelle
0

Die hier und in anderen Threads vorgeschlagenen Lösungen funktionieren nur für Zahlen mit einer festen Anzahl von Ziffern. Wie 5 für die oben betrachtete Postleitzahl.

Ich muss die führende Null der belgischen Telefonnummern behalten.
Belgische Festnetzanschlüsse haben die Struktur 025382172 (9 Ziffern),
während Mobiltelefone die Struktur 0475123456 (10 Ziffern) haben.

Ich dachte, ich hätte eine Problemumgehung gefunden, bei der die Daten in einem neuen Tab dupliziert wurden. Zu diesem Zweck verwende ich zwei separate Arrays, um Gruppen von Spalten stapelweise zu laden.

Ein erstes Array kopiert alle Spalten bis zur Telefonnummer Spalte G, nicht enthalten. =ARRAYFORMULA('Form Responses'!A2:F302)
Ein zweites Array kopiert alle Spalten nach der Telefonnummernspalte G bis zur letzten.=ARRAYFORMULA('Form Responses'!H2:P302)

In der Spalte mit der Telefonnummer habe ich eine einfache Formel, um vor dem kopierten Wert eine Null anzuhängen: =("0"&'Form Responses'!G2)

... funktioniert leider nur im statischen Modus.
Wenn im dynamischen Modus eine neue Zeile aus einem Google Form eingeht, wird die Formel in der Telefonnummernspalte G durcheinander gebracht, auch wenn die Arrays diese Spalte nicht beeinflussen sollen.

Tatsächlich wechselt die Formel =("0"&'Form Responses'!G2)zur nächsten leeren Zeile und =("0"&'Form Responses'!G3)verlässt die Zelle mit einem frustrierenden Wert von 0.

Ich werde meine Untersuchungen fortsetzen, indem ich zu einem einzelnen Array für alle Spalten in einem Block zurückkehre, rechts außerhalb der Array-Zone eine doppelte Telefonnummernspalte hinzufüge und einfach die folgende Formel eingebe: =("0"&G3)... neugierig, ob es funktionieren wird ... Wenn Wenn dies der Fall ist, maskiere ich die Spalte "native" Telefonnummer und zeige nur die verarbeitete (leider nicht an der richtigen Stelle auf der Seite).

Pierre Becquart
quelle
Die beschriebene Lösung FUNKTIONIERT, vorausgesetzt, die konvertierte Telefonnummernspalte wird NICHT zwischen zwei Arrays gequetscht. Es muss sich außerhalb des Bereichs befinden, in dem Daten automatisch hinzugefügt werden. Entweder rechts oder links. HURRA! Amicalement de Belgique. Pierre
Pierre Becquart
0

Dies ist ein älterer Beitrag, aber ich würde folgendes empfehlen ...

Auf der Registerkarte Ergebnis wird A1:

=QUERY('Form Responses'!A:F)

In G1:

=ArrayFormula(IF(ROW('Form Responses'!G:G)=1, 'Form Responses'!G1, IF('Form Responses'!G:G="", "", "0"&'Form Responses'!G:G)))

In H1:

=QUERY('Form Responses'!H:P)

Ein ähnlicher Ansatz kann hinzugefügt werden, um die Daten der Spalten zu ändern, die geändert werden müssen.

Erik Tyler
quelle
0

Ich habe mein Postleitzahlproblem gelöst, das auf diese Weise mit einer "0" beginnt ... Markieren Sie die Spalte, gehen Sie zur Registerkarte "Format", klicken Sie auf "Nummer", "Weitere Formate" und dann auf "Benutzerdefinierte Nummernformate", da meine Postleitzahlen nur 5 sind Ziffern habe ich "00000" eingegeben und auf "Anwenden" geklickt. und es hat funktioniert!

Pam Vienneau
quelle