Microsoft Excel

Herbers Excel/VBA-Archiv

Zellinhalte verbinden/zusammenführen

Betrifft: Zellinhalte verbinden/zusammenführen von: Werner
Geschrieben am: 11.08.2014 08:47:35

Hallo!

Ich bräuchte mal eure Hilfe.
Man hat mir eine Datei mit ca. 4000 Datensätzen geschickt.
In Spalte A Stehen hier Werte (Zahlen / Texte).
Zum Teil sind dabei auch Zellen über mehrere Zeilen verbunden.
In Spalte B stehen Texte, die zu jeweiligen Position in Spalte A gehören.
Die Texte in Spalte B sind teilweise über mehrere Zeilen aufgeteilt.

Als Anlage habe ich mal ein Muster beigefügt.
https://www.herber.de/bbs/user/92007.xlsx

Also z.B. gehören die Zellen B1 bis B8 zum Wert in Zelle A1.
Der wichtige Text zur Position in Spalte A hat Schriftart Arial 10 und bleibt so wie er ist stehen.
Darunter stehen dann oft andere Texte in Arial 8. Diese dienen der Erläuterung des Textes darüber und sind zum Teil über mehrere Zeilen vertielt.

Ich möchte nun, dass die Werte in Spalte (z. B.) B2 bis B8 in EINER Zelle zusammengeführt werden. Absätze sollen auch noch hinzugefügt werden, damit es ein ordentlicher Satz wird.
Dabei muss dann geprüft werden, ob links von den Zellen in Spalte A noch der passende Wert steht.
Sobald in Spalte A ein neuer Wert auftaucht (also hier Ab Zelle A9) muss dann der Wert aus den Zellen B10 bis ... in einer Zelle zusammengeführt werden.
usw.
Kompliziert. Ich weis.
In der Datei sind auch Muster dabei, wie es aussehen soll.

Ich hoffe, dafür gibt es eine VBA-Lösung.
Das alles von Hand zu erledigen ist wahnsinnig viel Arbeit.
Gruß und DANKE!!!

  

Betrifft: nachgefragt ... ... von: neopa C (paneo)
Geschrieben am: 11.08.2014 09:41:11

Hallo Namensvetter,

... eine Formellösung würde hier schon reichen oder willst Du zwingend VBA?

Gruß Werner
.. , - ...


  

Betrifft: mein Lösungsvorschlag ... von: neopa C (paneo)
Geschrieben am: 11.08.2014 09:53:30

Hallo,

... wäre so In Hilfsspalte H: ab H2:

=WENN(A2>0;"";H1&WENN((A3>0)*(A1>0);B2;WENN(A3>0;"";ZEICHEN(10)&B3)))
und nach unten kopieren.

In der Ergebnisspalte-Zelle-Zeile 1 (muss also nicht E1 sein)
 E
1
-       bei den Augen: beidseitige Inspektion des äußeren Auges, beidseitige Untersuchung der vorderen und mittleren Augenabschnitte sowie des Augenhintergrunds
-       bei dem HNO-Bereich: Inspektion der Nase, des Naseninnern, des Rachens, beider Ohren, beider äußerer Gehörgänge und beider Trommelfelle, Spiegelung des Kehlkopfs;
-       bei dem stomatognathen System: Inspektion der Mundhöhle, Inspektion und Palpation der Zunge und beider Kiefergelenke sowie vollständiger Zahnstatus;
-       bei den Nieren und ableitenden Harnwegen: Palpation der Nierenlager und des Unterbauchs, Inspektion des äußeren Genitale sowie Digitaluntersuchung des Enddarms, bei Männern zusätzlich Digitaluntersuchung der Prostata, Prüfung der Bruchpforten sowie Inspektion und Palpation der Hoden und Nebenhoden;
-       bei dem Gefäßstatus: Palpation und gegebenenfalls Auskultation der Arterien an beiden Handgelenken, Ellenbeugen, Achseln, Fußrücken, Sprunggelenken, Kniekehlen, Leisten sowie der tastbaren Arterien an Hals und Kopf, Inspektion und gegebenenfalls Palpation der oberflächlichen Bein- und Halsvenen.
Die Leistung nach Nummer 6 ist neben den Leistungen nach den Nummern 5, 7 und/oder 8 nicht berechnungsfähig.

Formeln der Tabelle
ZelleFormel
E1{=WENN(A1>0;INDEX(H:H;ZEILE(A1)-2+VERGLEICH(1;(A2:A4999>0)+0;0)); "")}
Enthält Matrixformel:
Umrandende
{ } nicht miteingeben,
sondern Formel mit STRG+SHIFT+RETURN abschließen!


Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4

und nach unten kopieren.

Gruß Werner
.. , - ...


  

Betrifft: AW: mein Lösungsvorschlag ... von: Werner
Geschrieben am: 11.08.2014 10:17:52

Hallo Werner

Supi
Ich dachte das es nur mit VBA machbar wäre.

Gruß und Danke!
Werner


  

Betrifft: AW: Zellinhalte verbinden/zusammenführen von: Daniel
Geschrieben am: 11.08.2014 09:47:27

Hi

Ohne Vba ließe sich das so lösen:

1. Zwei Hilfsspalten einfügen(C und D)

2. Folgende Formel in C1, Formel bis ans Datenende kopieren:

=WENN(A1<>"";B1;WENN(A2<>"";B1;B1&ZEICHEN(10)&ZEICHEN(10)&C2))
3. Spalten C kopieren und an selber Stelle als wert einfügen

4. In D1 kommt der Wert 0

5. In D2 kommt folende Formel, welche du bis ans Datenende weiterziehst:
=WENN(A1&A2<>"";ZEILE();0)
6. Wende auf die Spalten A:D die Excelfunktion Daten - Datentools - Duplikate entfernen an.
Wähle die Spalten D als Kriterium und die Option "keine Überschrift"

Gruß Daniel


  

Betrifft: AW: Zellinhalte verbinden/zusammenführen von: fcs
Geschrieben am: 11.08.2014 10:32:24

Hallo Werner,

du hast verschwiegen, dass es auch noch ausgeblendetet Zeilen gibt.

Nachfolgend mein Versuch der Aufbereitug.
Die Ausgabe der Daten erfolgt in einem neu angelegten separaten Blatt, da so der Ablauf der Datenaufbereitung besser gesteuert werden kann und auch die meist störenden verbundenen Zellen in Spalten A und C bereinigt werden können.

Gruß
Franz

Sub Zeilen_zusammenfassen()
  Dim wksQ As Worksheet, wksZ As Worksheet
  Dim ZeileQ As Long, ZeileZ As Long
  Dim anzZeilen As Long, ZeileM As Long
  Dim strText As String
  Set wksQ = ActiveSheet
  ActiveWorkbook.Worksheets.Add After:=wksQ
  Set wksZ = ActiveSheet
  ZeileZ = 1
  With wksZ
    .Cells.VerticalAlignment = xlTop
    .Cells(ZeileZ, 1) = "GOÄ-Nr."
    .Cells(ZeileZ, 2) = "Leistungsbeschreibung"
    .Cells(ZeileZ, 3) = "Erstattungsfähig"
    .Cells(ZeileZ, 4) = "Leistungsbeschreibung-Detail"
    With .Columns(1)
      .Font.Name = "Arial"
      .Font.Size = 10
      .ColumnWidth = 10
    End With
    With .Columns(2)
      .Font.Name = "Arial"
      .Font.Size = 10
      .ColumnWidth = 54
      .WrapText = True
    End With
    With .Columns(3)
      .Font.Name = "Arial"
      .Font.Size = 10
      .ColumnWidth = 10
    End With
    With .Columns(4)
      .Font.Name = "Arial"
      .Font.Size = 8
      .ColumnWidth = 54
      .WrapText = True
    End With
  End With
  With wksQ
    For ZeileQ = 1 To .Cells(.Rows.Count, 2).End(xlUp).Row
      If .Cells(ZeileQ, 1).EntireRow.Hidden = True Then GoTo Next_ZeileQ
      ZeileZ = ZeileZ + 1
      wksZ.Cells(ZeileZ, 1).Value = .Cells(ZeileQ, 1).Value
      wksZ.Cells(ZeileZ, 2).Value = .Cells(ZeileQ, 2).Value
      wksZ.Cells(ZeileZ, 3).Value = .Cells(ZeileQ, 3).Value
        strText = ""
        If .Cells(ZeileQ, 1).MergeCells = True Then
          anzZeilen = .Cells(ZeileQ, 1).MergeArea.Rows.Count
          For ZeileM = 2 To anzZeilen
            ZeileQ = ZeileQ + 1
            If strText = "" Then
              strText = .Cells(ZeileQ, 2).Text
            Else
              strText = strText & vbLf & .Cells(ZeileQ, 2).Text
            End If
          Next
        Else
          strText = ""
        End If
        wksZ.Cells(ZeileZ, 4).Value = strText
Next_ZeileQ:
    Next ZeileQ
  End With
End Sub



  

Betrifft: AW: Zellinhalte verbinden/zusammenführen von: Werner
Geschrieben am: 11.08.2014 10:35:11

Oh je. Stimmt. Sorry.

Ich probiere es gleich mal aus.
Danke!


  

Betrifft: AW: Zellinhalte verbinden/zusammenführen von: Werner
Geschrieben am: 11.08.2014 10:59:21

Das hat funktioniert.
Genial!
Ich habe es Stichprobenartig geprüft und es scheint zu passen.

DANKE!!!
Werner


  

Betrifft: Dazu wärst du auch im Archiv fündig geworden! orT von: Luc:-?
Geschrieben am: 11.08.2014 14:10:22

RECHERCHE ist dir fremd…? :-[
Gruß, Luc :-?


  

Betrifft: AW: Dazu wärst du auch im Archiv fündig geworden! orT von: Werner
Geschrieben am: 11.08.2014 14:12:46

Hallo

Warum das denn?
Ich habe gesucht. Aber vielleicht nach dem Falschen oder mit den falschen Begriffen.
Jedenfalls konnte ich keine Lösung finden.

Gruß
Werner


 

Beiträge aus den Excel-Beispielen zum Thema "Zellinhalte verbinden/zusammenführen"