Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

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, 4826 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 ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
VB for Applications
gelöst Excel VBA Eine oder mehrere Zellen Verschieben (2)

Frage von batchnewbie zum Thema VB for Applications ...

Microsoft Office
gelöst Excel 2010 Zellen mit bestimmten Inhalt mit Makro formartierten (5)

Frage von packmann2016 zum Thema Microsoft Office ...

Heiß diskutierte Inhalte
Microsoft
Ordner mit LW-Buchstaben versehen und benennen (20)

Frage von Xaero1982 zum Thema Microsoft ...

Outlook & Mail
gelöst Outlook 2010 findet ost datei nicht (19)

Frage von Floh21 zum Thema Outlook & Mail ...

Netzwerkmanagement
gelöst Anregungen, kleiner Betrieb, IT-Umgebung (18)

Frage von Unwichtig zum Thema Netzwerkmanagement ...

Festplatten, SSD, Raid
M.2 SSD wird nicht erkannt (14)

Frage von uridium69 zum Thema Festplatten, SSD, Raid ...