server-nutzer
Goto Top

Umsortierung bzw. Zuordnung verändern (Excel)

Hallo Leute,

Excel ist nicht sooo mein Ding, wenn es um Matrix-Berechnungen geht.
Quelldatei ist eine vorgegebene CSV-Datei.

Vielleicht mag mir da jemand mal nen Schubs geben wollen face-wink
(Sicherlich kommt jetzt vielleicht der Hinweis auf Programmieren o.ä. Sorry, das ist nicht so meins und auch hier nicht meine Aufgabe.)


Aufgabenstellung:

Zuordnung Artikel zu Lagerort genau umkehren.

Dateiaufbau der CSV:
<Artikelbezeichnung>;<Artikelkurznummer>;<Lagerort1>;<Lagerort2>;<Lagerort3>;<Lagerort4>;<Lagerort_n_>;


Ich brauche es genau umgekehrt:
<Lagerort1>;<Artikelbezeichnung>;<Artikelkurznummer>
<Lagerort2>;<Artikelbezeichnung>;<Artikelkurznummer>
<Lagerort3>;<Artikelbezeichnung>;<Artikelkurznummer>
<Lagerort4>;<Artikelbezeichnung>;<Artikelkurznummer>
<Lagerort_n_>;<Artikelbezeichnung>;<Artikelkurznummer>


Kollege meinte was mit Excel umsetzen zu können mit SVERWEIS oder INDEX oder VERGLEICH.
Hat aber nicht funktioniert.

Anbei eine Testdatei, die so als Vorgabe ankommt.

Vielen Dank für Eure Tipps und

Viele Grüße mit rauchendem Hirn
Jörg

# <product-name>;<product-piece-id>;[<used-storage-id>;]+ 
#
#
#
Knopf_Z;73;11136;11179;
Knopf_Z;102;11421;11293;
Knopf_Z;119;11382;11243;
Knopf_Z;31;11201;11392;
Knopf_Z;60;11357;11181;
Knopf_Z;121;11265;11418;
Knopf_Z;59;11439;11339;
Knopf_Z;0;11202;11435;
Knopf_Z;105;11386;11279;
Knopf_Z;13;11141;11188;
Knopf_Z;26;11342;11145;
Knopf_Z;50;11312;
Knopf_Z;98;11442;11296;11362;
Knopf_Z;4;11441;11346;
Knopf_Z;46;11277;11283;10829;11288;11375;
Knopf_Z;64;11266;11305;
Knopf_Z;11;11372;11352;
Knopf_Z;118;11173;11426;
Knopf_Z;95;11149;11298;11128;
Knopf_Z;113;11356;11373;
Knopf_Z;144;11273;11425;
Knopf_Z;5;11167;11272;11321;
Knopf_Z;136;11251;11129;
Knopf_Z;23;11389;11308;
Schraube_RVZ;266;11122;469;10967;
Schraube_RVZ;257;10968;4750;11091;
Schraube_RVZ;258;11092;2404;6473;11093;
Schraube_RVZ;281;11094;1034;10989;
Schraube_RVZ;282;10990;7121;3590;7122;5194;
Schraube_RVZ;320;9084;4309;1039;
Schraube_RVZ;269;9545;6107;1711;7193;4737;128;6477;6478;11063;
Schraube_RVZ;247;11064;6480;6482;11057;
Schraube_RVZ;248;11058;6484;482;4517;11083;
Schraube_RVZ;162;11084;6488;6490;1205;7287;704;4810;6153;2975;2976;7947;3200;
Schraube_RVZ;315;9574;6502;4027;300;
Schraube_RVZ;259;10966;
Schraube_RVZ;307;10965;13092;13091;2938;2937;2936;6104;949;11586;11585;1524;5259;15189;15188;10582;1004;4670;15261;
Schraube_RVZ;252;15260;15259;11446;11445;11444;653;5918;518;6346;4180;675;6839;3236;7675;3235;7504;6616;205;10980;
Schraube_RVZ;211;
Schraube_RVZ;212;10979;4319;4042;9907;
Schraube_RVZ;205;9906;5393;10153;
Schraube_RVZ;184;10152;11114;
Schraube_RVZ;185;11113;4143;118;9720;
Schraube_RVZ;274;9719;5467;4805;4558;1324;6529;973;10978;
Schraube_RVZ;166;10977;2126;6527;4132;579;6659;1300;4695;1710;8845;8846;10985;10986;5830;4289;340;4945;11111;11112;219;6791;
Schraube_RVZ;301;11001;444;6336;
Schraube_RVZ;214;11017;10984;
Schraube_RVZ;168;11060;2670;7174;8822;1007;5684;1121;4920;5992;1031;5833;7420;1915;7798;743;6525;7048;1646;7412;7742;1503;7852;589;10352;10354;10593;5740;4510;821;7257;3668;7258;1548;8843;7967;8846;10985;10986;5830;4289;340;4945;11111;11112;219;6791;
Schraube_RVZ;177;4721;11045;
Schraube_RVZ;313;11046;5780;6016;6515;6576;9300;
Schraube_RVZ;167;11047;6375;1284;1283;1282;5528;9921;2135;5113;4065;143;4965;10988;10987;1599;6899;9528;9529;4094;10974;10973;4403;5527;58;10992;10991;5028;446;8884;8883;5035;1977;6631;2001;7089;2121;5100;10302;10304;6882;9203;9204;6711;1999;7846;11059;11060;2670;7174;8822;1007;5684;1121;4920;5992;1031;5833;7420;1915;7798;743;6525;7048;1646;7412;7742;1503;7852;589;10352;10354;10593;5740;4510;821;7257;3668;7258;1548;8843;7967;8846;10985;10986;5830;4289;340;4945;11111;11112;219;6791;
Schraube_RVZ;163;6792;4040;278;4652;1400;4754;1661;6442;9838;
Schraube_RVZ;186;10535;6555;478;6557;1176;10379;
Schraube_RVZ;297;11103;7786;6505;1776;6507;571;4223;5373;6875;11014;
Schraube_RVZ;201;11013;7382;2269;11016;
Schraube_RVZ;202;11015;9562;
Schraube_RVZ;240;1522;4972;5215;5419;5555;87;10433;
Schraube_RVZ;151;10432;6753;464;9366;9364;1602;
Schraube_ABC;316;1602;9364;9366;464;6753;10432;10433;87;5555;5419;5215;4972;1522;9562;11015;11016;2269;7382;11013;11014;6875;5373;4223;571;6507;1776;6505;7786;11103;11104;7073;7077;11041;11042;6050;2357;7080;7081;6353;9003;2235;2234;9116;10589;75;4080;618;617;6039;1813;6092;810;11102;11101;5156;7330;10972;10971;175;6591;4478;10976;11100;11099;5722;9805;9804;1106;5298;7645;2496;7386;5323;1634;9009;9010;33;34;4268;1076;
Schraube_ABC;172;6272;1442;
Schraube_ABC;170;5638;2390;2391;2392;5706;5707;654;4241;6589;376;4933;7592;10199;10198;5553;2046;5858;6237;1760;5231;2204;5847;9658;9657;10011;10010;5406;223;7370;10213;2306;5325;805;4292;4296;7266;6855;10225;10224;4401;7229;7228;348;347;4837;5396;1880;5611;43;9412;8237;9413;
Schraube_ABC;173;240;4172;4171;8816;199;9838;6442;1661;4754;1400;4652;278;4040;6792;6791;219;11112;11111;4945;340;4289;5830;10986;10985;8846;7967;8843;1548;7258;3668;7257;821;4510;5740;10593;10354;10352;589;7852;1503;7742;7412;1646;7048;6525;743;7798;1915;7420;5833;1031;5992;4920;1121;5684;1007;8822;7174;2670;11060;11059;7846;1999;6711;9204;9203;6882;10304;10302;
Schraube_ABC;174;3200;7947;2976;2975;6153;4810;704;7287;1205;6490;6488;11084;11083;4517;482;6484;11058;11057;6482;6480;11064;11063;6478;6477;128;4737;7193;1711;6107;9545;1039;4309;9084;1508;6357;77;7611;4437;877;11119;11120;2458;7722;2862;6986;4133;583;4271;6958;10550;10551;843;844;845;7099;2233;2232;5278;5715;4314;660;4094;10974;10973;4403;5527;58;10992;10991;5028;446;8884;8883;5035;1977;6631;2001;7089;2121;5100;
Schraube_ABC;175;10302;10304;6882;9203;9204;6711;1999;7846;11059;11060;2670;7174;8822;1007;5684;1121;4920;5992;1031;5833;7420;1915;7798;743;6525;7048;1646;7412;7742;1503;7852;589;10352;10354;10593;5740;4510;821;7257;3668;7258;1548;8843;7967;8846;10985;10986;5830;4289;340;4945;11111;11112;219;6791;
Schraube_ABC;317;6792;4040;278;4652;1400;4754;1661;6442;9838;199;8816;4171;4172;240;
Schraube_ABC;171;9413;8237;9412;43;5611;1880;5396;4837;347;348;7228;7229;4401;10224;10225;6855;7266;4296;4292;805;5325;2306;10213;7370;223;5406;10010;10011;9657;9658;5847;2204;5231;1760;6237;5858;2046;5553;10198;10199;7592;4933;376;6589;4241;654;5707;5706;2392;2391;2390;5638;
Feder_A;322;1442;6272;1076;4268;34;33;9010;9008;4525;92;4944;1523;5761;2691;6818;6817;6217;10131;8576;10128;1500;4756;7778;7603;496;495;10586;10585;5140;2036;6456;9137;5238;7151;6232;4957;11048;11047;6375;1284;1283;1282;5528;9921;2135;5113;4065;143;4965;10988;10987;1599;6899;9528;9529;4094;10974;10973;4403;5527;58;10992;10991;5028;446;8884;8883;5035;1977;6631;2001;7089;2121;5100;
Feder_A;176;1463;11020;11019;295;4063;6605;4182;10996;10995;10994;10993;6603;1369;4793;6925;6693;10079;10078;4013;11250;

Content-ID: 913409508

Url: https://administrator.de/contentid/913409508

Ausgedruckt am: 23.11.2024 um 08:11 Uhr

colinardo
Lösung colinardo 05.07.2021 aktualisiert um 18:50:02 Uhr
Goto Top
Servus,
konvertiere dir die CSV doch gleich mit Powershell passend in das Zielformat, die kannst du dann direkt in dein Excel importieren :
# Eingabe CSV Datei
$in = 'D:\data_in.csv'  
# Ausgabe CSV Datei
$out = 'D:\data_out.csv'  
gc $in | ?{$_ -notmatch '^\s*#'} | %{  
    $arr = $_.split(';')  
    $arr | select -skip 2 | ?{$_.trim() -ne ''} | %{[pscustomobject]@{Lagerort = $_;Artikelbezeichnung=$arr;Artikelkurznummer=$arr[1]}}  
} | export-csv $out -Delimiter ";" -NoType -Encoding UTF8  

Oder wenn du stattdessen direkt in Excel selbst mit VBA arbeiten willst. Kommentare siehe Code.
Sub ImportCSVWithQueryTable()
    ' Variablen  
    Dim CSVFILE As String, cell As Range, c As Integer, lastLagerCol As Integer, rngTarget As Range, wsTarget As Worksheet
    ' Pfad zur CSV-Datei  
    CSVFILE = "D:\data_in.csv"  
    ' Ziel Worksheet  
    Set wsTarget = Sheets(1)
    ' Startausgabe-Zelle  
    Set rngTarget = wsTarget.Range("A2")  
    
    Application.DisplayAlerts = False
    ' Spalten-Überschriften schreiben  
    With wsTarget.Range("A1:C1")  
            .Value = Array("Lagerort", "Artikelbezeichnung", "Artikelkurznummer")  
            .Font.Bold = True
    End With
    ' Temporäres Import-Sheet erstellen  
    With Sheets.Add(After:=Sheets(Sheets.Count))
        ' Import CSV as QueryTable  
        With .QueryTables.Add(Connection:="TEXT;" & CSVFILE, Destination:=.Range("$A$1"))  
            .Name = "test"  
            .AdjustColumnWidth = True
            .TextFilePlatform = 1252
            .TextFileStartRow = 5
            .TextFileParseType = xlDelimited
            .TextFileTextQualifier = xlTextQualifierDoubleQuote
            .TextFileSemicolonDelimiter = True
            .TextFileTrailingMinusNumbers = True
            .Refresh BackgroundQuery:=False
            .Delete
        End With
        ' für jede Zeile der CSV  
        For Each cell In .Range("A1:A" & .Cells(Rows.Count, "A").End(xlUp).Row)  
            ' ermittle letzte belegte Lagerzelle  
            lastLagerCol = .Cells(cell.Row, Columns.Count).End(xlToLeft).Column
            If lastLagerCol >= 3 Then
                ' für jeden Lagerort ...  
                For c = 3 To lastLagerCol
                    ' wenn Lagerort nicht leer ist  
                    If .Cells(cell.Row, c) <> "" Then  
                        ' schreibe Daten in Zielrange  
                        rngTarget.Resize(1, 3).Value = Array(.Cells(cell.Row, c), cell.Value, cell.Offset(0, 1).Value)
                        ' Zielrange 1 nach unten versetzen  
                        Set rngTarget = rngTarget.Offset(1, 0)
                    End If
                Next
            End If
        Next
        
        Application.DisplayAlerts = True
        ' temporäres sheet löschen  
        .Delete
    End With
End Sub
Grüße Uwe
Server-Nutzer
Server-Nutzer 05.07.2021 um 19:54:21 Uhr
Goto Top
Hallo Uwe.

Oh, das ist ja prima!

Powershell hab ich ausprobiert und gleich hinbekommen.

Bei der VBA-Variante wüsste ich gar nicht, dass in Excel reinzubekommen. Kurz dort den VBA-Editor gestartet und nach Überforderung gleich wieder geschlossen...
(Man möge mir meine Unwissenheit verzeihen face-wink )

Morgen teste ich das an Echtdaten, bin ganz gespannt!

Vielen lieben Dank!

Schönen Abend noch
Grüße sendet
Jörg