1. Liebe Forumsgemeinde,

    aufgrund der Bestimmungen, die sich aus der DSGVO ergeben, müssten umfangreiche Anpassungen am Forum vorgenommen werden, die sich für uns nicht wirtschaftlich abbilden lassen. Daher haben wir uns entschlossen, das Forum in seiner aktuellen Form zu archivieren und online bereit zu stellen, jedoch keine Neuanmeldungen oder neuen Kommentare mehr zuzulassen. So ist sichergestellt, dass das gesammelte Wissen nicht verloren geht, und wir die Seite dennoch DSGVO-konform zur Verfügung stellen können.
    Dies wird in den nächsten Tagen umgesetzt.

    Ich danke allen, die sich in den letzten Jahren für Hilfesuchende und auch für das Forum selbst engagiert haben. Ich bin weiterhin für euch erreichbar unter tti(bei)pcwelt.de.
    Dismiss Notice

Excel - Zellen mit Formatierung 'fusionieren'

Discussion in 'Office-Programme' started by Armani1, Aug 6, 2007.

Thread Status:
Not open for further replies.
  1. Armani1

    Armani1 ROM

    Hallo Leute,

    ich brauche Excel-Hilfe; ich möchte zwei Zellen in einer dritten fusionieren. Prinzipiell ist mir klar, daß das nach dem Schema "=A1&B1" funktioniert. Wie kann ich Excel aber dazu überreden, die Formatierung beizubehalten?

    In A1 steht z.B. Text
    In B1 steht z.B. 4711
    In C1 soll nun stehen Text4711

    Über Eure Hilfe würde ich mich freuen... :jump:

    armani
     
  2. Hascheff

    Hascheff Moderator

    Das geht nur mit Makro. Dann steht aber am Ende in der Zelle nicht mehr "=A1&B1", sondern "Text4711".
     
  3. Armani1

    Armani1 ROM

    Hab ich ja geschrieben (siehe oben!) ^^
    Wie wäre der Code, um die formatierung auszulesen und zu übernehmen???
     
  4. Beverly

    Beverly Halbes Megabyte

    Hi,

    das ließe sich z.B. mit diesem Code machen

    Code:
    Sub zusammenfuegen()
        Cells(1, 3) = Cells(1, 1) & Cells(1, 2)
        With Cells(1, 3)
            With .Characters(Start:=1, Length:=Len(Cells(1, 1))).Font
                .Name = Cells(1, 1).Font.Name
                .FontStyle = Cells(1, 1).Font.FontStyle
                .Size = Cells(1, 1).Font.Size
                .Strikethrough = Cells(1, 1).Font.Strikethrough
                .Superscript = Cells(1, 1).Font.Superscript
                .Subscript = Cells(1, 1).Font.Subscript
                .OutlineFont = Cells(1, 1).Font.OutlineFont
                .Shadow = Cells(1, 1).Font.Shadow
                .Underline = Cells(1, 1).Font.Underline
                .ColorIndex = Cells(1, 1).Font.ColorIndex
            End With
            With .Characters(Start:=Len(Cells(1, 1)) - 1, Length:=Len(Cells(1, 2))).Font
                .Name = Cells(1, 2).Font.Name
                .FontStyle = Cells(1, 2).Font.FontStyle
                .Size = Cells(1, 1).Font.Size
                .Strikethrough = Cells(1, 2).Font.Strikethrough
                .Superscript = Cells(1, 2).Font.Superscript
                .Subscript = Cells(1, 2).Font.Subscript
                .OutlineFont = Cells(1, 2).Font.OutlineFont
                .Shadow = Cells(1, 2).Font.Shadow
                .Underline = Cells(1, 2).Font.Underline
                .ColorIndex = Cells(1, 2).Font.ColorIndex
            End With
        End With
    End Sub
    
     
  5. Armani1

    Armani1 ROM

    Super danke,
    das werde ich gleich mal antesten...
     
  6. Armani1

    Armani1 ROM

    Okay, soweit macht's prinzipiell fast das richtige...

    Leider zählt er von der ersten Zellen scheinbar zwei Zeichen zu wenig und würfelt das Ganze durcheinander.
    Mein Ergebnis sieht mit dem oberen Code so aus:

    Text4711

    Wo muß ich das Skript editieren? Ausserdem würde mich noch interessieren, wie ich das Skript ändern könnte, damit es gleich eine ganze Spalte runterfusioniert.

    Jetzt wird ja aus A1+B1in C1 geschrieben. Wie kann man das Skript erweitern, damit er diese Fusion in C solange macht, solange in A und B Daten stehen. Also gleich etwas komplizierter, das Ganze...

    Danke schonmal für Eure Hilfe... :was:
     
  7. brum

    brum Kbyte

    Beim zweiten "With" muss es + 1 heissen und nicht -1...

    Wenn Du mehrere Zeilen dasselbe machen willst, kannst Du es mit einer For-Next-Schleife machen:

    Code:
    FOR Zeile=1 TO 65536
      IF IsEmpty(Cells(Zeile, 1)) THEN EXIT FOR
      Cells(Zeile, 3) = Cells(Zeile, 1) & Cells(Zeile, 2)
      ...
    NEXT Zeile
    
    (Den mittleren Teil auch noch entsprechend anpassen.)

    Gruss
    Bruno
     
  8. Armani1

    Armani1 ROM

    Danke, jetzt geht'S!
     
  9. Hascheff

    Hascheff Moderator

    In der Mitte, hinter dem ersten
    Code:
            End With
    muss aus einem - ein + werden, also:
    Code:
            With .Characters(Start:=Len(Cells(1, 1)) + 1, Length:=Len(Cells(1, 2))).Font
    
     
  10. Armani1

    Armani1 ROM

    Danke, danke!
    brum hat's mir vorher schon korrigiert! :jump:
     
  11. Hascheff

    Hascheff Moderator

    Oh, hab ich übersehen.
     
Thread Status:
Not open for further replies.

Share This Page