Wie kopiere ich bestimmte ausgewählte Daten zwischen Zellen in einer CSV-Datei in Excel oder Notepad ++?

657
Myles

Ich muss täglich Mediendatei-Datenbanken herunterladen und Metadaten aus einer CSV-Datei so ändern, dass das eindeutige numerische Präfix in Spalte B den Zellen in Spalte C als Suffix hinzugefügt wird.

Gibt es einen Weg, wie ich dies auf einmal für alle Zellen tun kann, die noch kein Suffix in den Zellnamen der Spalte C enthalten?

enter image description here

Momentan kann ich dies nur durch Hinzufügen von _01 am Ende der ersten Zelle (beginnend mit _01) tun und die Zelle nach unten ziehen, damit der Rest der Zahlen in aufsteigender Reihenfolge (wie zu sehen ist) automatisch ausgefüllt wird im Screenshot unten).

enter image description here

Ich habe versucht, die Datei in Notepad ++ zu öffnen, um zu sehen, ob es eine Möglichkeit gibt, dies zu tun, aber leider werden die Daten nicht mit Spalten angezeigt, sondern der gesamte Text wird durch Kommas getrennt in einem typischen Notizblockstil angezeigt. Ich muss die Datei im CSV-Format verwalten, damit ich die geänderten Daten auf unseren Medienserver erneut importieren kann.

Kennt jemand einen Weg, der XX_ aus Spalte B übernimmt und als _XX zu den Zellen hinzufügt, die es nicht in Spalte C haben? Ich bin gerne bereit, dies in einer anderen Software als Excel auszuprobieren. Ich habe Notepad ++ für solche Dinge in der Vergangenheit verwendet, aber niemals mit CSV-Dateien. Ich bin mir nicht sicher, ob das Dokument danach korrekt formatiert erscheint.

Spalte B:

16_9S0816YE556_GOPR0091_0S01 17_9S0816YE556_GOPR0091_1S01 18_9S0816YE556_GOPR0091_2S01 19_9S0816YE556_GOPR0091_3S01 01_9S0803SD006MN_C0001S01 02_9S0803SD006MN_C0002S01 03_9S0813ED095MN_8R7A3425S01 04_9S0813SD007MN_C0001S01 

Spalte C:

9S0815GP174_16 9S0815GP174_17 9S0815GP174_18 9S0815GP174_19 9S0816GP175 9S0816GP175 9S0816GP175 9S0816GP175 

Gewünschtes Endergebnis für Spalte C ( ohne die ersten vier Zellen zu beeinflussen ):

9S0815GP174_16 9S0815GP174_17 9S0815GP174_18 9S0815GP174_19 9S0816GP175_01 9S0816GP175_02 9S0816GP175_03 9S0816GP175_04 

Vielen Dank.

1
Ich würde empfehlen, ein richtiges Instrument zu verwenden. Sie arbeiten mit einem Array von Daten. Verwenden Sie daher zum Speichern und Verarbeiten von Daten eine beliebige Datenbank. MS Access zum Beispiel ... zumindest darüber nachdenken. Akina vor 5 Jahren 0
* Ich bin mir nicht sicher, ob das Dokument danach korrekt formatiert erscheint. * Denken Sie nicht darüber nach. Verwenden Sie CSV mit einem Trennzeichen (nicht mit fester Länge) und verwenden Sie ein Leerzeichen als Trennzeichen und die Option 'Mehrere Trennzeichen als Eins', wenn Sie wieder in Excel importieren. Akina vor 5 Jahren 0
Es tut mir leid, dass ich nicht ganz folge, was Sie hier meinen. Myles vor 5 Jahren 0
Assuming you only need the first two digits from B add to the end of C and you can use a helper column then try this formula: =C1&"_"&LEFT(B1;2) Kevin Anthony Oppegaard Rose vor 5 Jahren 0
Hallo Kevin, wird dies alle Zellen betreffen oder nur diejenigen, die nicht '_XX' haben. Ich möchte die Zahlen nicht am Ende der Zellen hinzufügen, in denen sie bereits vorhanden sind. Myles vor 5 Jahren 1
I would give [Get & Transform](https://support.office.com/en-us/article/get-transform-in-excel-881c63c6-37c5-4ca2-b616-59e18d75b4de) in Excel 2016 a try. You don't have to write macro and can do a lot of data wrangling with the UI. Ideal would be if you give some sample data. visu-l vor 5 Jahren 0
Ich meine, nachdem Sie den bearbeiteten Text wieder in Excel importiert haben, wird Ihre "beschädigte" Formatierung nach Bedarf wiederhergestellt. Akina vor 5 Jahren 0
Könnten Sie ein paar Textzeilen anstelle eines Bildes hinzufügen, dann können wir einige reale Daten testen. Toto vor 5 Jahren 0
Hi Visu-I, is Get & Transform something i can do on Excel 2010? Sorry but i also would have no idea to go about using this. Myles vor 5 Jahren 0

2 Antworten auf die Frage

1
Toto

Mit Notepad ++ können Sie Folgendes tun:

  • Ctrl+H
  • Finde was: ^([^,]*,(\d\d)_[^,]*,[^,]*)(?<!_\d\d),
  • Ersetzen mit: $1_$2,
  • Aktivieren Sie die Option Wrap around
  • Überprüfen Sie den regulären Ausdruck
  • Replace all

Erläuterung:

^ : beginning of line ( : start group 1 [^,]* : 0 or more non comma character, : 1 comma (\d\d) : group 2, 2 digits _ : underscore [^,]* : 0 or more non comma character, : 1 comma [^,]* : 0 or more non comma character ) : end group 1 (?<! : negative lookbehind, make sure we don't have before the comma _\d\d : underscore and 2 digits ) : end lookbehind, : a comma 

Ergebnis für gegebenes Beispiel:

col_A,16_9S0816YE556_GOPR0091_0S01,9S0815GP174_16,col_D col_A,17_9S0816YE556_GOPR0091_1S01,9S0815GP174_17,col_D col_A,18_9S0816YE556_GOPR0091_2S01,9S0815GP174_18,col_D col_A,19_9S0816YE556_GOPR0091_3S01,9S0815GP174_19,col_D col_A,01_9S0803SD006MN_C0001S01,9S0816GP175_01,col_D col_A,02_9S0803SD006MN_C0002S01,9S0816GP175_02,col_D col_A,03_9S0813ED095MN_8R7A3425S01,9S0816GP175_03,col_D col_A,04_9S0813SD007MN_C0001S01,9S0816GP175_04,col_D 
Ausgezeichnet! Danke, Toto, ich wusste, dass ein Notizblock ++ - Experte mich einfliegen und mich retten würde! Das hat funktioniert und genau das, was ich will! Noch einmal Danke! Frage bestätigt und beantwortet! Myles vor 5 Jahren 0
0
visu-l

Wenn Sie über Excel 2016 verfügen, verwenden Sie die Get & Transform- Power-Tools von Microsoft, um eine neue Tabelle mit der richtigen Spalte abzurufen.
(Verwenden Sie für Excel 2010-2013 das kostenlose MS-Add-In Power Query für Excel .)

Sie können schließlich direkt eine Verbindung zur Quelle (CSV-Datei, Datenbank, Excel-Datei, ...) herstellen und eine Umwandlung wie diese durchführen (Ich habe die verwendeten Spalten beibehalten, die durch einen zusätzlichen Schritt entfernt werden können, bevor Sie sie in ein laden.) Blatt):

Hier der von der Benutzeroberfläche generierte M-Code.

let Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content], #"Changed Type" = Table.TransformColumnTypes(Source,{{"Column1", Int64.Type}, {"Column2", type text}, {"Column3", type text}}), #"Add Col: Col2 Text before delimiter" = Table.AddColumn(#"Changed Type", "Col2 TextBeforeDelimiter", each Text.BeforeDelimiter([Column2], "_"), type text), #"Add Col: Col3 Text after delimiter" = Table.AddColumn(#"Add Col: Col2 Text before delimiter", "Col3 TextAfterDelimiter", each Text.AfterDelimiter([Column3], "_"), type text), #"Added Custom" = Table.AddColumn(#"Add Col: Col3 Text after delimiter", "Check Number", each [Col2 TextBeforeDelimiter] = [Col3 TextAfterDelimiter]), #"Added Custom1" = Table.AddColumn(#"Added Custom", "Col3 Transformed", each if [Check Number] = true then [Column3] else [Column3] & "_" & [Col2 TextBeforeDelimiter]) in #"Added Custom1"