Excel Frage Auflistung chronologisch?
Hallo zusammen,
ich möchte mit Hilfe einer Excel-Datei die Aufzählung für eine Word-Datei erstellen.
Konkret geht es dabei um Auflagen zu einer Genehmigung.
Ich habe 18 "Standard"auflagen, die immer wieder Bestandteil der Genehmigung sind.
Diese 18 Auflagen habe ich in Excel aufgeführt und davor jeweils ein Kontrollkästchen gesetzt.
Jetzt kann man per Haken auswählen, ob die Auflage in die Genehmigung soll oder nicht (Wahr/Falsch).
Um das Ganze in Word abzubilden, möchte ich jetzt, dass mir Excel die Auflagen in einer neuen Mappe chronologisch untereinander schreibt.
Sprich es sind die Auflagen 1 bis 4 ausgewählt. Dann soll Excel das in der neuen Mappe so auflisten:
A1: Auflage 1
A2: Auflage 2
A3: Auflage 3
A4: Auflage 4
Das geht auch soweit ohne Probleme.
Problemtisch wird es wenn beispielsweise die Auflagen 2, 6, 11 und 16 ausgewählt sind. Dann soll Excel das wie folgt ausspucken:
A1: Auflage 2
A2: Auflage 6
A3: Auflage 11
A4: Auflage 16
Hat hier jemand eine Formel für mich?
Ich bekomme es einfach nicht hin.
Danke im Voraus.
4 Antworten
Das geht mittlerweile ganz einfach mit der Funktion FILTER.
Die Auswahlboxen müssen halt mit den entsprechenden Feldern in einer Spalte verknüpft sein.
Hey, ich habe mal vor einiger Zeit ein Tool gebaut, womit ich einen kleinen Text Editor in Excel habe. Der eingegebene Text wurde dann anhand von Tags formatiert, ähnlich den HTML Tags. Also um eine Schrift fett zu machen, konnte man den Text auswählen, dann auf einen Button klicken und davor und danach wurde ein <b> bzw. </b> gesetzt. Also z.B.: "Hier ist mein <b>fettes</b> Wort".
Die Tags wurde dann in die Word Datei mit geschrieben und anschließend in Word formatiert. So kann man in Excel Texte schreiben, formatieren mittels Tag und anschließend in Word automatisch formatieren lassen.
Es gehen auch Aufzählungen, einfach mittels <ul> und </ul>
Du könntest also z.B. in deiner Excel Arbeitsmappe die Aufzählungen erstellen und davor ein <ul> und dahinter ein </ul> setzen. (Für Aufzählungen oder ein <ol> und </ol> für Nummerierungen) Dann das Makro entsprechend verwenden und anpassen und es sollte gehen. Hier das Makro. Habe ich selbst erstellt:
Sub TagConverter(wordApp As Word.Application)
' This sub converts certain Tags to Word formatting and inserts images
' Tags might be: <b>text</b> to bold text
' Images have the form <Bild [path]> with [path] being the path to the image, e.g. c:\example.jpg
' Tags are aligned to some HTML tags, but also individual ones are used
' Replacement.Style Enumeration numbers: https://learn.microsoft.com/de-de/office/vba/api/word.wdbuiltinstyle
Application.ScreenUpdating = False
With wordApp.ActiveDocument.Range.Find
' Introduction
.ClearFormatting
.Format = True
.Forward = True
.MatchWildcards = True
.Wrap = wdFindContinue
.Replacement.text = "\2"
' Headline 1 <h1>
.Replacement.ClearFormatting
.text = "\<(h1\>)(*)\</\1"
.Replacement.Font.size = 24
.Replacement.Style = wdStyleHeading1
.Execute Replace:=wdReplaceAll
' Headline 2 <h2>
.Replacement.ClearFormatting
.text = "\<(h2\>)(*)\</\1"
.Replacement.Font.size = 18
.Replacement.Style = wdStyleHeading2
.Execute Replace:=wdReplaceAll
' Headline 3 <h3>
.Replacement.ClearFormatting
.text = "\<(h3\>)(*)\</\1"
.Replacement.Font.size = 14
.Replacement.Style = wdStyleHeading3
.Execute Replace:=wdReplaceAll
' Text Underline <u>
.Replacement.ClearFormatting
.text = "\<(u\>)(*)\</\1"
.Replacement.Font.Underline = True
.Execute Replace:=wdReplaceAll
' Bold text <b>
.Replacement.ClearFormatting
.text = "\<(b\>)(*)\</\1"
.Replacement.Font.Bold = True
.Execute Replace:=wdReplaceAll
' Italic <i>
.Replacement.ClearFormatting
.text = "\<(i\>)(*)\</\1"
.Replacement.Font.Italic = True
.Execute Replace:=wdReplaceAll
' unordered list (bullet list) <ul>
.Replacement.ClearFormatting
.text = "\<(ul\>)(*)\</\1"
.Replacement.Style = wdStyleListBullet
.Execute Replace:=wdReplaceAll
' ordered list (numbered list) <ol>
.Replacement.ClearFormatting
.text = "\<(ol\>)(*)\</\1"
.Replacement.Style = wdStyleListNumber
.Execute Replace:=wdReplaceAll
' Keep text together in paragraph (between page change)
.Replacement.ClearFormatting
.text = "\<(ktt\>)(*)\</\1"
.Replacement.ParagraphFormat.KeepWithNext = True
.Replacement.ParagraphFormat.KeepTogether = True
.Execute Replace:=wdReplaceAll
' Carriage Return / Line Shift, next line <br>
.Replacement.ClearFormatting
.text = "<br>"
.Replacement.text = "^p"
.Execute Replace:=wdReplaceAll
End With
' Insert images at specific positions in Word
' Image is structured: <Bild [path]> So e.g. <Bild C:\Data\Example.jpg>
' So within Word, a search is made for "<Bild" and for ">" Everything in between is the path.
Dim strPath As String
With wordApp.ActiveDocument.Content.Find
.text = "\<Bild " & "(*)" & "\>"
.Forward = True
.Wrap = wdFindStop
.MatchWildcards = True
.Replacement.text = ""
.Execute ' Find first one
Do While .Found = True
strPath = Mid(.Parent.text, 7, Len(.Parent.text) - 7)
.Parent.Delete
wordApp.ActiveDocument.InlineShapes.AddPicture fileName:=strPath, LinkToFile:=False, SaveWithDocument:=True, Range:=.Parent
.Execute ' Find next ones
Loop
End With
Application.ScreenUpdating = True
End Sub
z.B. so ... in einer Hilfsspalte die Auswahl zählen lassen und per SVerweis abholen.
schönes Tool, nur inwiefern hilft das bei der Auflistung der Werte, bei denen der Haken gesetzt ist.
z.B. so
=ZEILENWAHL(A1:A28;ZUZEILE(WENN(B1:B28=WAHR;ZEILE(1:28);#NV);2))
=FILTER(A1:A28;B1:B28=WAHR)
wobei ich den Filter bevorzugen würde.
Edit Filter bitte ignorieren, @DaCypher hat schon die gleiche Antwort gegeben, die helfen sollte, die sogar noch ein ticken kürzer ist.