Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Excel Zellen zusammenfügen und formatieren

Frage Microsoft Microsoft Office

Mitglied: dehein2

dehein2 (Level 1) - Jetzt verbinden

22.07.2012 um 15:22 Uhr, 4963 Aufrufe, 6 Kommentare

Hallo,
ich habe folgendes vor und habe mich gefragt ob ich das einfach mit Excel hinbekommen kann, und wenn ja, wie? Smile
Ich habe die angehängte Tablle (Auszug) mit einigen Spalten, diese Spalten haben Überschriften. Nicht in jeder Zeile ist in jeder Spalte etwas eingetragen.
Das Ziel ist es alle Spalten einer Zeile in einer Zelle zu verknüpfen, also so etwas wie Text A1 + B1 + C1, diesen dabei aber zu formatieren, also mit html Tags zu versehen. Diese Tags sollen abhängig von der Überschriften Spalte sein.

Also z.B für A1: A1<br> + B1 <br> .... der htmlcode soll natürlich nicht erscheinen, wenn C1 z.b. leer ist. Welcher Code eingefügt werden soll hängt von der Überschirft der Zeile ab, beinhaltet diese z.B. "Def" solles ein <b> sein, beinhaltet dieses ein Example soll am Ende ein <br> und am Anfang ein - erscheinen.

Ich hoffe ich habe mich halbwegs verständlich ausgedrückt ;) Ich habe zur Verdeutlichung noch eine Bsp. Tabelle angehängt.
Leider habe ich mit VBA keine Erfahrung, daher meine Frage.. geht das? und ist es ihne Vorkenntnisse relativ einfach zu bewerkstelligen? ;)

http://www.dehein.de/files/Bsp.xls


Vielen Dank
Dennis
Mitglied: bastla
22.07.2012, aktualisiert um 20:08 Uhr
Hallo dehein2!

Was noch nicht klar aus Deiner Beschreibung hervorgeht: Soll es für jede nicht leere Zelle einen "<br>"-Tag geben, und was ist bei Spalten, in deren Überschrift sowohl "Def" als auch "Example" enthalten sind, gewünscht?

Schließlich: Wohin soll der entstehende String geschrieben werden?

Wie sähe denn zB für eine Zeile Deiner Beispieldatei das Ergebnis aus?
Unabhängig von den fehlenden Details könnte das schematisch etwa so aussehen:
01.
Sub MakeHTML() 
02.
UeberZeile = 1 'Zeile mit Überschriften 
03.
UeberAbSpalte = 1 '= A; Spalte mit erster Überschrift 
04.
 
05.
Dim Pre, Post 
06.
UeberSpalteMax = Cells(UeberZeile, UeberAbSpalte).End(xlToRight).Column 
07.
ReDim Pre(UeberSpalteMax), Post(UeberSpalteMax) 
08.
For Spalte = UeberAbSpalte To UeberSpalteMax 
09.
    Post(Spalte) = "<br>" 'nach jedem nicht leeren Wert 
10.
    If InStr(Cells(UeberZeile, Spalte).Value, "Example") > 0 Then 'wenn Überschrift "Example" enthält 
11.
        Pre(Spalte) = "- " 'vor dem Wert einzufügen 
12.
        Post(Spalte) = Post(Spalte) & "<br>" 'nach dem Wert zusätzlich einzufügen 
13.
    End If 
14.
    If Cells(UeberZeile, Spalte).Value Like "Def*" Then 'wenn Überschrift mit "Def" beginnt 
15.
        Pre(Spalte) = "<b>" 'vor dem Wert einzufügen 
16.
        Post(Spalte) = "</b>" & Post(Spalte) 'nach dem Wert einzufügen 
17.
    End If 
18.
Next 
19.
 
20.
Zeile = UeberZeile + 1 
21.
HTML = "" 
22.
Do While Cells(Zeile, UeberAbSpalte).Value <> 0 'alle Zeilen bearbeiten, in denen in der ersten Spalte ein Wert steht 
23.
    For Spalte = UeberAbSpalte To UeberSpalteMax 
24.
        Inhalt = Cells(Zeile, Spalte).Value 
25.
        If Inhalt <> "" Then HTML = HTML & Pre(Spalte) & Inhalt & Post(Spalte) 'HTML-Code um Wert + Präfix + Postfix ergänzen 
26.
    Next 
27.
    HTML = HTML & "<br><br>" 'am Ende jeder Zeile hinzufügen 
28.
    Cells(Zeile, Spalte).Value = HTML 'HTML-Code in die erste Spalte, die keine Überschrift hat, eintragen 
29.
    Zeile = Zeile + 1 
30.
Loop 
31.
End Sub
Grüße
bastla
Bitte warten ..
Mitglied: dehein2
22.07.2012, aktualisiert um 20:09 Uhr
Hallo,
also wenn nichts in der Spalte steht soll auch nichts in der Ausgabe stehen, also auch kein <br>.
Die Spalten mit Def Exmaple sind eigentlich nur Example, das könnte ich entsprechend umbennenen, sind also eigenständig.
Es sollen quasi alle "Def i" i=1-? eine Formatiereung haben und alle "Def Example i" i=1-? eine andere.

Der entstehende String sollte einfach in irgendeiner Spalte stehen, ich kann ihn ja später hinkopieren wo ich möchte ;)

Für die erste Zeile stelle ich mir das so vor: (habe es mal mit Zeilenumbruch aufgeschrieben)

01.
<b>abandon</b> - verb<br> 
02.
<a href="xyz.com">abandon</a> 
03.
<p> <b> - to leave somebody, especially somebody you are responsible for, with no intention of returning</b> <br> 
04.
--The baby had been abandoned by its mother.<br> 
05.
--People often simply abandon their pets when they go abroad.<br> 
06.
--The study showed a deep fear among the elderly of being abandoned to the care of strangers.<br> 
07.
 
08.
<p><b> - to leave a thing or place, especially because it is impossible or dangerous to stay Synonym leave</b><br> 
09.
-- Snow forced many drivers to abandon their vehicles. <br> 
10.
 
11.
usw.....
wie ganz genau ich die html Sachen mache habe ich mir noch nicht überlegt, muss ich dann einmal sehen wie es aussieht. Das ganze ist für ein Flashcard Programm auf dem iPad, welches html versteht.

Vielen Dank
Dennis
Bitte warten ..
Mitglied: bastla
22.07.2012, aktualisiert 23.07.2012
Hallo dehein2!

Angepasst sähe das dann so aus:
01.
Sub MakeHTML() 
02.
UeberZeile = 1 'Zeile mit Überschriften 
03.
UeberAbSpalte = 1 '= A; Spalte mit erster Überschrift 
04.
 
05.
Dim Pre, Post 
06.
UeberSpalteMax = Cells(UeberZeile, UeberAbSpalte).End(xlToRight).Column 
07.
ReDim Pre(UeberSpalteMax), Post(UeberSpalteMax) 
08.
For Spalte = UeberAbSpalte To UeberSpalteMax 
09.
    UeberText = Cells(UeberZeile, Spalte).Value 
10.
 
11.
    Select Case UeberText 'für alle Fälle, in denen die Überschrift genau angegeben werden kann 
12.
        Case "Type" 
13.
            Post(Spalte) = "<br>" 
14.
        Case "Url" 
15.
            Pre(Spalte) = "<a href=""" 
16.
            Post(Spalte) = """>" 
17.
        Case "Vocab" 
18.
            Post(Spalte) = "</a>" 
19.
    End Select 
20.
     
21.
    If UeberText Like "Def*" Then 'wenn Überschrift mit "Def" beginnt 
22.
        Pre(Spalte) = "<p> <b>- " 'vor dem Wert einzufügen 
23.
        Post(Spalte) = "</b> <br>" & Post(Spalte) 'nach dem Wert einzufügen 
24.
    End If 
25.
     
26.
    If UeberText Like "*Example*" Then 'wenn Überschrift "Example" enthält 
27.
        Pre(Spalte) = "--" 'vor dem Wert einzufügen 
28.
        Post(Spalte) = Post(Spalte) & "<br>" 'nach dem Wert einzufügen 
29.
    End If 
30.
Next 
31.
 
32.
Zeile = UeberZeile + 1 
33.
Do While Cells(Zeile, UeberAbSpalte).Value <> 0 'alle Zeilen bearbeiten, in denen in der ersten Spalte ein Wert steht 
34.
    HTML = "<b>" & Cells(Zeile, UeberAbSpalte + 2).Value & "</b> - " 'jede Zeile mit diesem Code beginnen 
35.
 
36.
    For Spalte = UeberAbSpalte To UeberSpalteMax 'alle Spalten der Reihe nach durchgehen 
37.
        Inhalt = Cells(Zeile, Spalte).Value 
38.
        If Inhalt <> "" Then HTML = HTML & Pre(Spalte) & Inhalt & Post(Spalte) 'HTML-Code um Wert + Präfix + Postfix ergänzen 
39.
    Next 
40.
 
41.
    HTML = HTML & "<br><br>" 'am Ende jeder Zeile hinzufügen 
42.
    Cells(Zeile, Spalte).Value = HTML 'HTML-Code in die erste Spalte, die keine Überschrift hat, eintragen 
43.
    Zeile = Zeile + 1 
44.
Loop 
45.
End Sub
wobei die Stuktur der Tabelle noch nicht optimal ist - der obige Code setzt daher voraus, dass die Spaltenreihenfolge
"Type" - "Url" - "Vocab" - Rest wie bisher
lautet.

Grüße
bastla
Bitte warten ..
Mitglied: dehein2
23.07.2012 um 07:45 Uhr
Wow. VIELEN DANK. Das klappt ja super, leider verstehe ich es auf den ersten Blick noch nicht komplett ;) aber es funktioniert ja ^^.
Eine kleine Frage daher noch, das habe ich oben leider vergessen. Am Ende folgen ja noch die Spalten "Usage Note Head" und mehrere "Usage Note Ex i".. wie würde ich jetzt weitere Spalten einbauen?

nochmal vielen, vielen Dank
Bitte warten ..
Mitglied: bastla
23.07.2012 um 08:45 Uhr
Hallo dehein2!
wie würde ich jetzt weitere Spalten einbauen?
Einfach hinzufügen - es werden alle zusammenhängenden Spalten, für die es eine Überschrift in der in Zeile 2 des Codes festgelegten Überschriftenzeile gibt, verarbeitet ...
leider verstehe ich es auf den ersten Blick noch nicht komplett ;)
Riskiere einfach noch ein paar weitere Blicke ...

Grundsätzlich wird in den Zeilen 11 bis 29 für jede Spalte ermittelt, ob vor oder nach dem Wert dieser Spalte noch ein Eintrag erfolgen muss (stehen dann in Pre() und Post()) - in den ersten Fällen ("Type", "Url", "Vocab") wird exakt mit der Spaltenüberschrift verglichen und bei Übereinstimmung jeweils der "Vorspann" und "Nachspann" festgelegt; die Zeilen 21 - 24 stehen für die Variante "Beginn der Überschrift prüfen" und 26 - 29 (habe ich noch etwas leichter nachvollziehbar geschrieben) sind ein Beispiel für die Fragestellung "Enthält die Überschrift den Suchbegriff?").

Hinsichtlich der einzufüenden Tags / Zeichen ist eigentlich nur eine Besonderheit zu beachten: Enthält der String ein Anführungszeichen, so muss dieses verdoppelt werden (siehe Zeilen 15 und 16).

Bei der Zuweisung kann entweder die Schreibweise
Post(Spalte) = ...
verwendet werden, um nur diesen Eintrag für diese Spalte zu verwenden, oder
Post(Spalte) = Post(Spalte) & ...
um zusätzlich zu einem schon vorher gesetzten "Nachspann" noch mehr anzufügen (falls eine Spalte in mehrere Kategorien fallen könnte, was nach derzeitigem Stand aber eher nicht zutreffen solle - ich hab's aber mal für die "Example"-Spalten so eingetragen).

Die Zeilen 34 und 41 definieren jeweils Beginn und Ende der HTML-Zeile - so wird in Zeile 34 zunächst schon mal der Wert aus der dritten Datenspalte (UeberAbSpalte + 2) mit der entsprechenden Formatierung an den Anfang der Zeile gestellt und in Zeile 41 an das Ende der Zeile noch "<br><br>" geschrieben.

Grüße
bastla
Bitte warten ..
Mitglied: dehein2
23.07.2012 um 12:18 Uhr
ich glaube, ich habe es hinbekommen... nochmals vielen Dank
Bitte warten ..
Ähnliche Inhalte
Microsoft Office
Daten aus Excel Tabelle zusammenfügen
gelöst Frage von BackgammonMicrosoft Office6 Kommentare

Hallo, ich bin leider ein völlig unbeleckter Excel- Nutzer. Ich möchte für unseren Verein die Spieletabelle in Excel führen. ...

Batch & Shell
Excel mit Powershell formatieren
Frage von TastuserBatch & Shell13 Kommentare

Hallo, ist es möglich eine Excel-Datei mit Powershell zu formatieren? - Bestimmte Zellen bekommen eine bestimmte Größe - Bestimmte ...

Microsoft Office
Excel: Excelfile automatisch formatieren
gelöst Frage von simsMicrosoft Office5 Kommentare

Hallo Leute! Ich brauch mal wieder eurer know how! :-) Ist es möglich ein excelfile, bestehend aus mehreren Spalten ...

Microsoft Office
Excel Geburtstage formatieren
gelöst Frage von Matze1508Microsoft Office6 Kommentare

Servus, im Anhang ist ein Bild von der Excel Datei. Das Ziel ist es die 1. Zeile auf alle ...

Neue Wissensbeiträge
Batch & Shell

Open Object Rexx: Eine mittlerweile fast vergessene Skriptsprache aus dem Mainframebereich

Information von Penny.Cilin vor 12 StundenBatch & Shell8 Kommentare

Ich kann mich noch sehr gut an diese Skriptsprache erinnern und nutze diese auch heute ab und an noch. ...

Humor (lol)

"gimme gimme gimme": Automatischer Test stolpert über Easter Egg im man-Tool

Information von Penny.Cilin vor 14 StundenHumor (lol)6 Kommentare

Interessant, was man so alles als Easter Egg implementiert. Ist schon wieder Ostern? "gimme gimme gimme": Automatischer Test stolpert ...

MikroTik RouterOS

Mikrotik - Lets Encrypt Zertifikate mit MetaROUTER Instanz auf dem Router erzeugen

Anleitung von colinardo vor 1 TagMikroTik RouterOS8 Kommentare

Einleitung Folgende Anleitung ist aus der Lage heraus entstanden das ein Kunde auf seinem Mikrotik sein Hotspot Captive Portal ...

Sicherheit

Sicherheitslücke in HP-Druckern - Firmware-Updates stehen bereit

Information von BassFishFox vor 1 TagSicherheit1 Kommentar

Ein weiterer Grund, dass Drucker keinerlei Verbindung nach "auswaerts" haben sollen. Unter Verwendung spezieller Malware können Angreifer aus der ...

Heiß diskutierte Inhalte
Windows Server
RDP macht Server schneller???
Frage von JaniDJWindows Server17 Kommentare

Hallo Community, wir betrieben seit geraumer Zeit diverse virtuelle Maschinen und Server mit Windows Server 2012. Leider haben wir ...

Windows 10
Windows 10 dunkler Bildschirm nach Umfallen
Frage von AkcentWindows 1015 Kommentare

Hallo, habe hier einen Windows 10 Rechner der von einem User umgefallen wurde (Beine übers Knie, an den PC ...

Windows 10
Bitlocker nach Verschlüsselung nicht mehr aufrufbar!
gelöst Frage von alexlazaWindows 1013 Kommentare

Hallo, ich besitze ein HP ZBook 17 G4 mit einem Windows 10 Pro Betriebssystem. Bei diesem Problem handelt sich, ...

Batch & Shell
Neuste Datei via PowerShell kopieren
gelöst Frage von kaiuwe28Batch & Shell11 Kommentare

Hallo zusammen, ich hatte mir mit Hilfe der Suche im Forum einen kleinen Code von colinardo rausgesucht und versucht ...