Jak skopiować określone wybrane dane między komórkami w pliku CSV w programie Excel lub Notepad ++?

1

Muszę codziennie pobierać bazy danych plików multimedialnych i modyfikować metadane z pliku csv, aby unikalny prefiks numeryczny w kolumnie B był dodawany jako przyrostek do komórek w kolumnie C.

Czy jest sposób, aby to zrobić za jednym razem dla wszystkich komórek, które nie zawierają jeszcze sufiksu w nazwach komórek w kolumnie C?

wprowadź opis zdjęcia tutaj

W tej chwili jedynym sposobem, w jaki mogę to zrobić, jest dodanie _01 na końcu pierwszej komórki (początek _01) i przeciągnięcie komórki w dół, aby automatycznie wypełniła pozostałe liczby w porządku rosnącym (jak widać na zrzucie ekranu poniżej).

wprowadź opis zdjęcia tutaj

Próbowałem otworzyć plik w Notepad ++, aby sprawdzić, czy istnieje sposób, aby to zrobić, ale niestety nie wprowadza danych z kolumnami, a zamiast tego pokazuje cały tekst oddzielony przecinkami w typowym stylu notatnika. Muszę zachować plik w formacie .csv, aby móc ponownie zaimportować zmodyfikowane dane na nasz serwer multimediów.

Czy ktoś zna sposób, który pobierze XX_ z kolumny B i doda go jako _XX do komórek, które nie mają go w kolumnie C? Jestem otwarty na wypróbowanie tego w dowolnym oprogramowaniu innym niż Excel. W przeszłości korzystałem z Notatnika ++, ale nigdy z plikami CSV i nie jestem pewien, czy dokument wyjdzie poprawnie sformatowany później.

Kolumna 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

Kolumna C:

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

Pożądany wynik końcowy dla kolumny C ( bez wpływu na pierwsze cztery komórki ):

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

Dzięki.

Myles
źródło
Polecam używać odpowiedniego instrumentu. Pracujesz z tablicą danych, więc używaj dowolnej bazy danych do przechowywania i przetwarzania danych. MS Access, na przykład ... pomyśl o tym przynajmniej.
Akina
nie jestem pewien, czy dokument wyjdzie później poprawnie sformatowany. Nie myśl o tym. Użyj CSV z separatorem (nie o stałej długości), używając symbolu spacji jako separatora i opcji „wielokrotnego separatora jako jednego” podczas importu z powrotem do Excela.
Akina
Przepraszam, nie do końca rozumiem, co masz na myśli?
Myles,
Zakładając, że potrzebujesz tylko dwóch pierwszych cyfr z B, dodaj na końcu C i możesz użyć kolumny pomocniczej, a następnie wypróbuj tę formułę: = C1 i „_” i LEWO (B1; 2)
Kevin Anthony Oppegaard Rose
1
Cześć Kevin, czy wpłynie to na wszystkie komórki lub tylko te, które nie mają „_XX”. Nie chcę dodawać liczb na końcu komórek, które już je mają.
Myles,

Odpowiedzi:

1

Za pomocą Notepad ++ możesz:

  • Ctrl+H
  • Znajdź co: ^([^,]*,(\d\d)_[^,]*,[^,]*)(?<!_\d\d),
  • Zamienić: $1_$2,
  • zaznacz opcję Zawiń się
  • zaznacz Wyrażenie regularne
  • Replace all

Wyjaśnienie:

^           : 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

Wynik dla podanego przykładu:

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
Toto
źródło
Doskonały! Dziękuję Toto, wiedziałem, że ekspert ++ przylatuje i mnie uratuje! To zadziałało i zrobiło dokładnie to, czego chcę! Jeszcze raz dzięki! Pytanie przegłosowane i udzielono odpowiedzi!
Myles,
0

Jeśli masz Excel 2016, należy użyć Microsoft Get & Transform elektronarzędzia dla uzyskania nowej tabeli z właściwej kolumnie.
(W przypadku programu Excel 2010-2013 użyj bezpłatnego dodatku MS Power Query dla programu Excel .)

Możesz w końcu połączyć się bezpośrednio ze źródłem (plik csv, baza danych, plik Excel, ...) i wykonać transformację taką jak ta (zachowałem używane kolumny, które można usunąć przez dodatkowy krok przed załadowaniem go do arkusz):

wprowadź opis zdjęcia tutaj

Tutaj kod M generowany przez interfejs użytkownika.

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"
visu-l
źródło