Tabulatorbegrenzten Text aus einer bestimmten Spalte in Excel abrufen

452
SinTan1729

Ich habe eine MS Excel 2013-Kalkulationstabelle, in der ich die Liste einiger an einer Konferenz teilnehmender Personen, deren Adresse, Telefonnummer usw. in verschiedenen Registerkarten habe. Nun wurde ich gebeten, eine tabulatorabhängige Liste der Teilnehmer für eine Broschüre zu erstellen. Gibt es eine Möglichkeit, dies zu tun, ohne dass ich dazu gezwungen werden muss, jede einzelne Datenzeile der Daten erneut einzugeben / kopieren und einzufügen? Ich brauche nur die Namensspalte. Ich möchte die Broschüre zu MS Publisher 2013 vorbereiten. Jede Hilfe wird gebeten.

1
Öffentliche Funktion get_list (rng As Range) As String: Dim str As String, i Solange: i = 1: While Len (rng (i) .Value): str = str & "," & rng (i) .Value : i = i + 1: Wend: get_list = Mid (str, 2): End Function`: D Dirk Reichel vor 8 Jahren 1
@DirkReichel Kannst du mir bitte sagen, welche Sprache das ist und wie man es in die Tabelle einfügt? SinTan1729 vor 8 Jahren 0
Dies ist vba ... Wenn Sie mit v + f11 zum Modul vba wechseln und dann ein Modul einfügen, können Sie den Code einfach dort kopieren / einfügen. Fügen Sie dann in Ihr Arbeitsblatt `= get_list (A: A)` (oder in welchem ​​Bereich sich Ihre Namen befinden) ein, und es wird eine getrennte Liste aller Zellenwerte in dem angegebenen Bereich ausgegeben (stoppt bei der ersten leeren Zelle). ... Entschuldigung, aber ich hatte es eilig und telefonisch, auf diese Weise keine große Antwort mit einer Erklärung: P Dirk Reichel vor 8 Jahren 1
Sie müssen jedoch `,` in ein `vbTab` umwandeln. Sie können jedoch keine Registerkarten in einer Zelle festlegen. Auf diese Weise würde sie nicht wie gewünscht funktionieren: P Dirk Reichel vor 8 Jahren 1
@DirkReichel Danke. Ich freue mich darauf, VBA zu lernen. SinTan1729 vor 8 Jahren 0

2 Antworten auf die Frage

1
Pimp Juice IT

Tabulatorbegrenzten Text aus einer bestimmten Spalte in Excel abrufen

Ich habe gebeten, eine tabulatorgetrennte Liste der Teilnehmer für eine Broschüre zu erstellen. Gibt es eine Möglichkeit, dies zu tun, ohne dass ich dazu gezwungen werden muss, jede einzelne Datenzeile der Daten erneut einzugeben / kopieren und einzufügen? Ich brauche nur die Namensspalte.

Führen Sie die folgenden Schritte aus, um dies manuell und schnell mit Notepad ++ durchzuführen, falls Sie nach einer manuellen Methode suchen, um dies ganz einfach ohne Code zu erledigen . Außerdem haben Sie Ihre Frage ebenfalls markiert text.

  1. Öffnen Sie Ihre Excel-Tabelle mit der Spalte, aus der Sie die Datenwerte abrufen möchten, z. B. der Namensspalte.

  2. Klicken Sie auf diese Spalte, um alle Werte hervorzuheben, und drücken Sie dann Ctrl+ C(oder klicken Sie mit der rechten Maustaste und wählen Sie Copy).

  3. Öffnen Sie Notepad ++ und ein neues leeres Dokument. Drücken Sie dann Ctrl+ V(oder klicken Sie Pastemit der rechten Maustaste und wählen Sie aus ), um die Werte der gerade kopierten Spalte einzufügen.

  4. Drücken Sie in Notepad ++ mit den eingefügten Datenwerten Ctrl+ A, um alles, was Sie eingefügt haben, auszuwählen, gehen Sie nach oben, wählen Sie EditAuswählen Line Operationsund anschließendRemove Empty Lines (Containing Blank characters)

  5. Gehen Sie in Notepad ++ mit den noch hervorgehobenen Datenwerten nach oben, wählen Sie Editselect Blank Operationsund dannTrim Leading and Trailing Space

  6. Drücken Sie in Notepad ++ mit den noch hervorgehobenen Datenwerten Ctrl+ und Hgehen Sie auf die ReplaceRegisterkarte, geben Sie die Werte ein und stellen Sie sicher, dass die Optionen wie unten gezeigt ausgewählt sind. Replace AllDrücken Sie die Option und die Registerkarte sollte alle Ihre Datenwerte einschränken.

  7. Von dort aus können Sie die neu formatierten Werte als neues Textdokument speichern oder in diesem Format (durch Tabulatoren getrennt) in Ihre anderen Anwendungen kopieren und einfügen, falls erforderlich.

Bitte beachten Sie, dass ich dies getestet und bestätigt habe, dass es wie erwartet funktioniert hat. Dann wurde es wieder rechts herum gedreht und als Tabulatorzeichen in Excel importiert, und alles scheint als Tabulatorzeichen und Importe richtig zu sein.


Bildschirmfoto

enter image description here

Quelle: Notepad ++ - Reguläre Ausdrücke

\ n

  • Das LF-Steuerzeichen 0x0A (Zeilenvorschub). Dies ist das reguläre Zeilenende unter Unix-Systemen.

\ r

  • Das CR-Steuerzeichen 0x0D (Wagenrücklauf). Dies ist Teil der DOS / Windows-Zeilenende-Sequenz CR-LF und war das EOL-Zeichen auf Mac 9 und früheren Versionen. OSX und spätere Versionen verwenden \ n.

\ t

  • Das TAB-Steuerzeichen 0x09 (Registerkarte oder harte Registerkarte, horizontale Registerkarte).

Zusätzliche Anmerkung

Es gibt auch die Ctrl+ Aund Ctrl+ J-Funktion von Notepad ++, aber es wird nicht die Registerkarte hinzugefügt, sondern Leerzeichen. Ich bin mir nicht sicher, ob Ihre "Name" -Spalte sowohl der erste als auch der letzte Name ist, oder nur ein Name, den Sie möglicherweise als "Leerzeichen" kennzeichnen können, wenn Sie dies benötigen, und das in Ihrem Fall funktioniert.

Ja. Es enthält sowohl den Vor- als auch den Nachnamen. Und dein Prozess hat funktioniert. Für meinen Zweck habe ich jedoch festgestellt, dass das Hinzufügen mehrerer Leerzeichen besser ist als Tabs, da ich einen einheitlichen Abstand benötige. Ich helfe einer NGO und es war eine Arbeit in letzter Minute. Danke für Ihre Hilfe. Ich stelle auch Code in den Kommentaren fest. Kannst du mir bitte sagen, welche Sprache das ist und wie man sie benutzt? SinTan1729 vor 8 Jahren 0
@SayantanSantra Ich bin froh, dass Ihr Problem für Ihre unmittelbare Not gelöst wurde. Danke für die Frage! Der Code in dem Kommentar von einer anderen Person scheint VB oder VBA zu sein. Es ist nicht richtig formatiert, da es sich um einen Kommentar handelt, aber VB aus meiner Sicht. Pimp Juice IT vor 8 Jahren 1
Ja. Vielen Dank. Ich kenne C ++, aber nicht VB oder VBA. Ich freue mich darauf, es zu lernen. SinTan1729 vor 8 Jahren 0
Sie können es auch in eine Zeile "transponieren" und dann als tabulatorgetrenntes "csv" speichern Dirk Reichel vor 8 Jahren 0
1
Dirk Reichel

Ich gehe davon aus, dass Sie mit der Programmierung einige Kenntnisse haben. Auf diese Weise sollten die Vornamen alles erklären. (Also werde ich nicht erklären, wie der Code funktioniert.)

So zeigen Sie eine geeignete Methode für die Verwendung von VBA auf (und machen sie für andere Anwendungen verfügbar) Sie können dieses Skript verwenden:

Öffnen Sie zuerst Ihr VBA-Fenster über Alt+ F11. Dann "Einfügen" und "Modul". Sie können den Code einfach dort kopieren / einfügen

Option Explicit Sub Put_All_Names_to_Clipboard() Dim Name_In_Cell As Variant, Name_List As String For Each Name_In_Cell In Selection.Value If Len(Name_In_Cell) = 0 Then Exit For ElseIf Len(Name_List) Then Name_List = Name_List & vbTab & Name_In_Cell Else Name_List = Name_In_Cell End If Next Dim Object_For_Clipboard As Object Set Object_For_Clipboard = CreateObject("new:") Object_For_Clipboard.SetText Name_List Object_For_Clipboard.PutInClipboard Set Object_For_Clipboard = Nothing End Sub 

Es wird nun eine durch Tabulatoren getrennte Liste (Textzeichenfolge) aller ausgewählten Anrufwerte abgelegt (sie stoppt bei der ersten leeren Zelle, auf diese Weise können Sie eine ganze Spalte auswählen). Nachdem das Makro ausgeführt wurde, können Sie die Zeichenfolge einfach "einfügen", wo immer Sie möchten. Ich schlage jedoch vor, es direkt an der richtigen Stelle in Ihrer Publisher-Datei einzufügen, wodurch 1 Schritt eingespart und die Zwischenablage für andere Aufgaben sauber gehalten wird.

Sie können das Makro direkt starten, indem Sie den Textcursor an einer beliebigen Stelle im Sub-Bereich befinden und drücken F5. Sie können das Makro auch einer Schaltfläche zuweisen oder zur Symbolleiste hinzufügen

Als letzten Hinweis: Sie können ein Makro auch direkt in MS-Publisher erstellen und diese Zeichenfolge aus der Excel-Datei "holen". Aber das können Sie später tun, wenn Sie sich mit VBA besser fühlen. :)

Ja. Ich habe etwas Erfahrung. Ich bin ein Amateur C ++ Programmierer. Ihre Antwort erklärt das ganz gut. Aber wie die andere Antwort war benutzerfreundlicher und für jeden nutzbar. Das hat mir geholfen, die Arbeit in der Stunde der Not zu erledigen. Also akzeptierte ich das stattdessen. Trotzdem danke ich Ihnen für diese großartige Antwort. Ich werde versuchen, mich in naher Zukunft mit VBA vertraut zu machen. SinTan1729 vor 8 Jahren 0
@SayantanSantra Ich bin nicht hier, um "Punkte" oder ähnliches zu bekommen. Meine Mission ist es, anderen Leuten zu helfen, besser zu werden. Und WENN Sie in der Lage sind, Ihre Fähigkeiten zu verbessern, als ich alles bekam, wonach ich gesucht hatte :) Dirk Reichel vor 8 Jahren 1
Das versuche ich sicher zu stellen. SinTan1729 vor 8 Jahren 1