Lexikon-struktur in Tabelle?

Dieses Thema Lexikon-struktur in Tabelle? im Forum "Microsoft Office Suite" wurde erstellt von mario_mellone, 17. März 2005.

Thema: Lexikon-struktur in Tabelle? Hallo, ich hab folgendes problem, vielleicht kennt sich hier ja jemand damit aus: ich habe eine Tabelle (word) und...

  1. Hallo,
    ich hab folgendes problem, vielleicht kennt sich hier ja jemand damit aus:

    ich habe eine Tabelle (word) und möchte diese so darstellen, dass einträge (aus spalte1), die zweimal und öfter vorhanden sind nur einmal angezeigt werden. in Spalte 2 steht der nächste eintrag, also wie im telefonbuch, blöd zu erklären....

    kleines beispiel:

    momentan sieht meine tabelle so aus:

    1.spalte  2.spalte

    müller       bernd
    müller       bruno
    müller       marion

    schmidt    andrea
    schmidt     ivonne
    schmidt    markus

    und so soll es aussehen:

    müller
        bernd
        bruno
        marion

    schmidt
         andrea
         ivonne
         markus

    hat irgend jemand hier eine idee, wie man das einfach anstellen könnte (sind so ca 3000 datenbankeinträge und ich hab keine lust, die alle abzuschreiben)

    bin schon seit stunden am rumsuchen, das muss doch irgendwie gehen....

    schon mal vielen dank!!
     
  2. Hallo,

    ich hab das mal in Word 2000 getestet, geht.

    Du hast die Einträge in einer Tabelle, dann markier die Spalte die ersetzt haben willst und sortiere die Einträge alphabetisch.

    Dann markierst (Doppelklick) du den ersten Namen aus der Liste der zu löschenden (Müller) und klickst im Menü Bearbeiten - Ersetzen

    Im Feld Suchen nach steht jetzt dein Müller
    Klicke auf Erweitert
    Wähle Suchrichtung nach unten
    Setze ein Häckchen bei Mit Mustervergleich
    Klicke auf Ersetzen

    Jetzt bleibt der erste Müller stehen und du wirst für jeden weiteren Müller gefragt ob du löschen willst.

    Wenn die Müllers durch sind, fragt er dich ob er nochmal oben anfangen soll, da würde er den ersten Müller auch löschen.

    So kannst du alle Namen durchgehen.

    lummo
     
  3. Ups was vergessen,

    Das Feld Ersetzen durch lässt du leer,

    lummo
     
  4. Viel einfacher (bevor du 1000 verschiedene Namen suchst und ersetzt):
    Du kopierst die Tabelle in ein Excel-Blatt (wo Tabellen naturgemäß wohnen!)
    In Zeile 1 sind die Spaltenköpfe: Name, Vorname, Name1, Vorname1.
    Ich gehe davon aus, daß entsprechend deinem Beispiel die 2. Zeile leer ist und nach jedem Namensblock eine Leerzeile. Demzufolge steht in der 3. Zeile der Müller Bernd.
    In die 2.Zeile der 3.Spalte schreibst du: =WENN(A2=;A3;)
    In die 2. Zeile der 4. Spalte schreibst du: =WENN(B2=;;B2)
    Beide Formeln ziehst du bis ans Ende deiner Liste runter.
    Dann markierst du Spalte 3 und 4 --> Strg+C --> Bearbeiten > Inhalte einfügen > Werte > OK
    Die Ergebnistabelle kopierst du dann wieder nach Word zurück. Feddisch.
     
  5. Oder so ... ;)
     
  6. Hei das ging ja flott!! :D :D
    danke toll! und funktionieren tuts auch noch!

    hab mich leider noch nie mit exel richtig beschäftigt, ausser für summe und mwst berechnen habe ich das glaub noch nicht gebraucht, aber jetzt...

    *freu*

    das einzige wehrmutströpfchen:  :'( mein ergebnis sieht jetzt so aus:

    müller
                  bernd
                  bruno
                  marion

    was mir aus platzgründen aber wichtig wäre:

    müller
        bernd
        bruno
        marion

    also müsste man irgendwie spalte 2 als funktion von spalte 1 laufen lassen, geht sowas?

    aber in jedem fall schon mal:
    vielen herzlichen dank!
     
  7. Hallo mario.mellone,

    hab dir das mal als Word-Makro geschrieben.

    Gruß Matjes  :)

    Code:
    '******************************************************************************
    Public Sub NamenTabelle2SpaltigIn1Spaltig()
    '  1.spalte  2.spalte
    '
    'müller bernd
    'müller bruno
    'müller marion
    '
    'schmidt andrea
    'schmidt ivonne
    'schmidt markus
    '
    'und so soll es aussehen:
    '
    'müller
    '    bernd
    '    bruno
    '    marion
    '
    'schmidt
    '     andrea
    '     ivonne
    '     markus
    'Output:
    '   In einem neuen Document wird eine einspaltige Tabelle angelegt
    '   Namen, Vornamen werden nach obigem Muster ausgerichtet
    '******************************************************************************
     ->Spaltendefinition
      Const c_SPName = 1
      Const c_SPVorname = 2
     ->Formatangaben der Ausgabe-Tabelle
      Const c_Tab2_Width = 5->Breite in cm
      Const c_Tab2_Einzug = 0.5->Einzug bei Vornamen
      
      Dim doc1 As Document, tab1 As Table, doc2 As Document, tab2 As Table
      Dim s_Name As String, s_lastName As String, s_Vorname As String
      Dim z1 As Long, z2 As Long, l_EinzugPoints As Long
     
      l_EinzugPoints = CentimetersToPoints(c_Tab2_Einzug)
     
      Set doc1 = ActiveDocument
      
     ->1. schauen, ob Selection in einer Tabelle steht
      If Not PruefenEineTabelleSelektiert Then GoTo Aufraeumen
      Set tab1 = Selection.Tables(1)
    
     ->2. Spaltenanzahl 2 prüfen
      If Not PruefenTabelleSpaltenAnzahl(tab1, 2) Then GoTo Aufraeumen
      
     ->3. neues Document anlegen
      Documents.Add
      Set doc2 = ActiveDocument
      
     ->4. Tabelle einfügen
      doc2.Tables.Add Range:=Selection.Range, NumRows:=1, NumColumns:=1
      Set tab2 = doc2.Tables(1)
      
     ->5. Tabelle formatieren
      With tab2.Columns(1)
        .SetWidth _
          ColumnWidth:=CentimetersToPoints(c_Tab2_Width), _
          RulerStyle:=wdAdjustFirstColumn
      End With
      With tab2.Rows
        .Alignment = wdAlignRowLeft:
        .AllowBreakAcrossPages = True
      End With
    
     ->Tabelle abarbeiten
      s_lastName = xxxxxxxxxxxxxxxxxxxx
      z2 = 0
      For z1 = 1 To tab1.Rows.Count
       ->aktuelle Zeile Ziel-Tabelle hochzählen
        z2 = z2 + 1
       ->Zeile in Zieltabelle einfügen
        tab2.Rows(z2).Select
        Selection.InsertRows 1
       ->Namen aus Quell-Tabelle
        s_Name = tab1.Cell(Row:=z1, Column:=c_SPName).Range.Text
       ->ggf. anhängende Leerzeichen und Steuerzeichen abschneiden
        Call AnhaengendeSteuerUndLeerzeichenAbschneiden(s_Name)
       ->Vorname aus Quell-Tabelle
        s_Vorname = tab1.Cell(Row:=z1, Column:=c_SPVorname).Range.Text
       ->ggf. anhängende Leerzeichen und Steuerzeichen abschneiden
        Call AnhaengendeSteuerUndLeerzeichenAbschneiden(s_Vorname)
        
        If s_Name =  Then
         ->Leerzeile -> nur Einzug
          tab2.Rows(z2).SetLeftIndent _
                LeftIndent:=l_EinzugPoints, _
                RulerStyle:=wdAdjustFirstColumn
        ElseIf s_Name = s_lastName Then
         ->Name wie Vorgänger -> Einzug und Vornamen eintragen
          tab2.Rows(z2).SetLeftIndent _
                LeftIndent:=l_EinzugPoints, _
                RulerStyle:=wdAdjustFirstColumn
          tab2.Cell(Row:=z2, Column:=1).Range.Text = s_Vorname
        Else
         ->neuer Name
         ->kein Einzug, Namen eintragen
          tab2.Rows(z2).SetLeftIndent _
                LeftIndent:=0, _
                RulerStyle:=wdAdjustFirstColumn
          tab2.Cell(Row:=z2, Column:=1).Range.Text = s_Name
         ->Namen für nächste Vergleiche merken
          s_lastName = s_Name
         ->weitere Zeile mit Einzug und Vornamen eintragen
          z2 = z2 + 1
          tab2.Rows(z2).Select
          Selection.InsertRows 1
          tab2.Rows(z2).SetLeftIndent _
                LeftIndent:=l_EinzugPoints, _
                RulerStyle:=wdAdjustFirstColumn
          tab2.Cell(Row:=z2, Column:=1).Range.Text = s_Vorname
        End If
      Next z1
     ->letzte Zeile löschen
      tab2.Rows(tab2.Rows.Count).Delete
     ->Cursor in erste Tabellen-Spalte setzen
      tab2.Rows(1).Select
      Selection.Collapse
    Aufraeumen:
      Set doc1 = Nothing: Set doc2 = Nothing: Set tab1 = Nothing: Set tab2 = Nothing
    End Sub
    '******************************************************************************
    Private Function PruefenTabelleSpaltenAnzahl( _
                                  mytab As Table, _
                                  l_anzCol As Long) As Boolean
     ->Spaltenanzahl der Tabelle prüfen
      If mytab.Columns.Count <> l_anzCol Then
        MsgBox ( _
          Die Tabelle hat  & mytab.Columns.Count &  Spalten. & vbCrLf & _
          Erwartet wird eine Tabelle mit  & l_anzCol &  Spalten.)
        PruefenTabelleSpaltenAnzahl = False
      Else
        PruefenTabelleSpaltenAnzahl = True
      End If
    End Function
    '******************************************************************************
    Private Function AnhaengendeSteuerUndLeerzeichenAbschneiden(s_Str As String)
     ->ggf. anhängende Leerzeichen und Steuerzeichen abschneiden
      Dim s As String
      Do
        s = Right(s_Str, 1)
        Select Case s
          Case Chr(0) To Chr(32): s_Str = Left(s_Str, Len(s_Str) - 1)
          Case Else: Exit Do
        End Select
      Loop
    End Function
    '******************************************************************************
    Private Function PruefenEineTabelleSelektiert() As Boolean
     ->1. schauen, ob Selection in einer Tabelle steht
      If Selection.Tables.Count <> 1 Then
        If Selection.Tables.Count = 0 Then
          MsgBox ( _
            Der Cursor steht nicht in einer Tabelle. & vbCrLf & _
            Bitte setzen Sie den Cursor in die Namen-Tabelle.)
        Else
          MsgBox ( _
            In der Selection sind  & Selection.Tables.Count & _
             Tabellen selektiert. & vbCrLf & _
            Bitte setzen Sie den Cursor in eine Namen-Tabelle.)
        End If
        PruefenEineTabelleSelektiert = False
      Else
        PruefenEineTabelleSelektiert = True
      End If
    End Function
     
  8. Für das Platzproblem gibt es eine Variante:
    Zeile 2, Spalte 3: =WENN(A2=;A3;WENN(B2=;;     &B2))
    Die Formel in der 4. Spalte entfällt. Ansonsten alles identisch.
    Die Anzahl der Leerzeichen in den Anführungszeichen vor dem kaufmännische und (&) kannst du je nach Platzangebot variieren.

    Nicht so bomforzionös wie ein Makro, aber immerhinque, wie der Lateiner sagt.
     
  9. na jungs....ich bin sprachlos!

    bin leider bis heute nicht dazugekommen, werd aber gleich nacher mal eure vorschläge ausprobieren.

    vielen dank schonmal!!!
     
Die Seite wird geladen...

Lexikon-struktur in Tabelle? - Ähnliche Themen

Forum Datum
Excel Tabelle Werte zu ordnen Microsoft Office Suite 23. Sep. 2016
Einzelne Zeilen aus Tabelle Drucken. StarOffice, OpenOffice und LibreOffice 15. März 2016
Excel 2013 SVERWEIS ergibt bei Tabellenübergreifender Nutzung 0 Microsoft Office Suite 16. Sep. 2015
Excel Tabellen erstellen mit mehreren Prüfungen Microsoft Office Suite 28. Juli 2015
Fußballtabelle Excel #NV Windows 8 Forum 1. Apr. 2015