tutorials.de Buch-Aktion 05/2012
Like Tree2Danke
  • 1 Beitrag von Yaslaw
  • 1 Beitrag von Yaslaw
ERLEDIGT
NEIN
ANTWORTEN
4
ZUGRIFFE
615
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Avatar von Frezl
    Frezl Frezl ist offline Mitglied Brokat
    Registriert seit
    Oct 2003
    Beiträge
    473
    Hallo allerseits,

    ich weiß leider nicht so genau, nach welchem Begriff ich eigentlich suche - daher auch die etwas schammige Formulierung im Titel - deshalb beschreibe ich einfach mal mein Problem:

    Ich habe eine Tabelle von Datensätzen. Jeder Datensatz repräsentiert ein Bauteil, das durch eine eindeutige Nomenklatur benannt ist. Manche Bauteile sind von anderen Abhängig, dann ist die Nomenklatur des "Eltern"-Bauteils in einer extra Spalte gespeichert:

    |nomenclature|dieses|jenes|reference_component|
    |Capacitor Al-Elko abc (100mg)|a|b|null|
    |Capacitor Al-Elko xyz (300mg)|c|d|Capacitor Al-Elko abc (100mg)|

    Ich möchte die Tabelle so umbauen, dass jedes Bauteil eine ID bekommt und die Referenzierung über die ID erfolgt:
    |id|nomenclature|dieses|jenes|reference_component|
    |1|Capacitor Al-Elko abc (100mg)|a|b|null|
    |2|Capacitor Al-Elko xyz (300mg)|c|d|1|

    Die Spalte mit den IDs einzubauen ist in Excel ja kein Problem, aber wie kann ich automatisch die Referenzen ersetzen?

    Freue mich über hilfreiche Tipps!

    Viele Grüße,
    Frezl
     
    Wenn du das Gefühl hast "Cool, der Kerl konnte mir echt helfen!", dann teil es mir mit, indem du mich entsprechend bewertest!

  2. #2
    Avatar von Yaslaw
    Yaslaw Yaslaw ist offline n/a
    tutorials.de Moderator
    Registriert seit
    Dec 2007
    Ort
    Winterthur(CH)
    Beiträge
    5.205
    mit einem Lookup

    Das folgende willst du:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    
      || A  | B     | C           | D
    ========================================
    1 || ID | CODE1 | CODE_PARENT | ID_PARENT
    2 || 1  | A     |             |
    3 || 2  | B     | A           | 1
    4 || 3  | C     | D           | 4
    5 || 4  | D     |             | 
    6 || 5  | E     | A           | 1
    Die Formel für D2 ist dann
    Code :
    1
    
    =IFERROR(LOOKUP(C2;$B$2:$B$6;$A$2:$A$6);"")
    Diese dann über die restlichen Zeilen kopieren.
    Frezl bedankt sich. 
    ---------------------------------------------------------------------------------------------------
    item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
    item: Tutorial: [PHP][MySQL] Debug Queries
    item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
    item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben

  3. #3
    Avatar von Frezl
    Frezl Frezl ist offline Mitglied Brokat
    Registriert seit
    Oct 2003
    Beiträge
    473
    Hey Yaslaw,

    vielen Dank für deine Antwort. Ein Kollege hatte "irgendwas mit VERWEIS" im Hinterkopf. Zusammen mit deinem Tipp hab ich's dann hingebogen. Im Anhang ein Beispiel.

    Was man noch dazu sagen sollte: bei VERWEIS (bzw. LOOKUP) muss die Tabelle vorher nach der Spalte mit dem Suchvektor (im Bild grün markiert) sortiert sein. K. a. warum, aber wenn es nicht so ist, kommt Müll raus.

    Wie man sieht, hatte ich die IDs vergeben, bevor ich die Tabelle sortiert habe. Sieht nicht schön aus, aber es funktioniert. Werd jetzt mal versuchen, das auf meine eigentliche Tabelle anzuwenden.

    Vielen Dank und viele Grüße,
    Fred
    Miniaturansicht angehängter Grafiken Miniaturansicht angehängter Grafiken [Excel 2010] Feldinhalte nach Abhängigkeit ersetzen-screenshot_verweis.jpg  
    Geändert von Frezl (24.01.12 um 14:50 Uhr)
     
    Wenn du das Gefühl hast "Cool, der Kerl konnte mir echt helfen!", dann teil es mir mit, indem du mich entsprechend bewertest!

  4. #4
    Avatar von Frezl
    Frezl Frezl ist offline Mitglied Brokat
    Registriert seit
    Oct 2003
    Beiträge
    473
    Sodele, hab's jetzt endlich geschafft, die Operation auch auf meine produktive Tabelle anzuwenden. War gar nicht so einfach. Für diejenigen, die das gleiche vor haben, folgende Tipps:

    1. Die Zellen, die verglichen werden sollen, dürfen keine Formeln enthalten! Also sicherheitshalber vorher die ganze Spalte kopieren und nur die Werte wieder einfügen.

    2. Ich habe alle Strings vorher etwas überarbeitet, bevor ich sie verglichen habe. Dazu habe ich folgende Funktion verwendet:

    Code :
    1
    
    =KLEIN(SÄUBERN(WECHSELN(WECHSELN(WECHSELN(WECHSELN(WECHSELN(WECHSELN(WECHSELN(WECHSELN(WECHSELN(E2;"""";"");"-";"");"&";"");".";"");"/";"");",";"");")";"");"(";"");" ";"")))

    Sie entfernt Leerzeichen und eine Auswahl an Sonderzeichen. Außerdem macht es den kompletten String lower case.

    Das hilft, wenn die Daten von Menschenhand eingegeben wurden und daher evtl. kleine Fehler (, statt . oder ein Leerzeichen zu viel) enthalten. Evtl. arbeitet dann auch die Vergleichsfunktion zuverlässiger, aber das habe ich nicht getestet.

    Meine Frage an die Excel-Cracks: Wie kann ich solche Ersetzungen einfacher vornehmen, ohne VB verwenden zu müssen? Habe versucht, als Suchkriterium von WECHSELN eine Tabellenspalte zu verwenden, aber das funktioniert leider nicht

    3. Wie oben bereits erwähnt, muss die Spalte mit dem Suchvektor alphabetisch sortiert sein. Natürlich nach den ganzen Überarbeitungen, also direkt, bevor VERWEIS angewandt wird.

    Viele Grüße,
    Frezl
    Geändert von Frezl (26.01.12 um 11:54 Uhr)
     
    Wenn du das Gefühl hast "Cool, der Kerl konnte mir echt helfen!", dann teil es mir mit, indem du mich entsprechend bewertest!

  5. #5
    Avatar von Yaslaw
    Yaslaw Yaslaw ist offline n/a
    tutorials.de Moderator
    Registriert seit
    Dec 2007
    Ort
    Winterthur(CH)
    Beiträge
    5.205
    Ohne VBA ist mir nix bekannt, mit VBA ists aber einfach

    Die folgende Funktion in ein neues Modul kopieren
    Code vb:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    
    Public Function substitutePlus( _
        ByRef text As Range, _
        ByRef oldText As Range, _
        Optional ByVal NewText As String = vbNullString _
    ) As String
        Dim c       As Range
     
        substitutePlus = text.Value2
        For Each c In oldText.Cells
            substitutePlus = Replace(substitutePlus, c.Value2, NewText)
        Next c
    End Function
    Und schon kannst du die Formel so schreiben
    Code :
    1
    
    =substitutePlus(A1;$G$1:$G$10)
    Wobei A1 der originaltext ist,
    $G$1:$G$10 ein Range mit den zu ersetzenden Zeichen. Extra mit $, damit beim Kopieren der Formel immer auf densleben Range gezeigt wird.
    Der Dritte Parameter kann man setzen, wenn man etwas anderes als ein "" haben will
    Frezl bedankt sich. 
    ---------------------------------------------------------------------------------------------------
    item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
    item: Tutorial: [PHP][MySQL] Debug Queries
    item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
    item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben

Ähnliche Themen

  1. Mehrere Worksheets zu Excel in VB 2010 hinzufügen
    Von Vika89 im Forum .NET Datenverwaltung
    Antworten: 1
    Letzter Beitrag: 29.07.11, 08:04
  2. Zwischenspeicher in VS 2010 für Excel
    Von Vika89 im Forum .NET Datenverwaltung
    Antworten: 4
    Letzter Beitrag: 27.07.11, 07:40
  3. Excel 2010: Mehrstufiges Balkendiagramm
    Von grotten im Forum Office-Anwendungen
    Antworten: 5
    Letzter Beitrag: 26.05.11, 12:08
  4. [Outlook 2010] DropDownList mit Werten aus Excel füllen
    Von Brainyac im Forum Office-Anwendungen
    Antworten: 0
    Letzter Beitrag: 25.08.10, 10:30
  5. Excel:Zelle freigeben in Abhängigkeit von Listenfeld
    Von Ilias_bo im Forum Office-Anwendungen
    Antworten: 0
    Letzter Beitrag: 11.11.08, 09:27