Posts tagged ‘Excel’
MS Excel: Komplexe Wenn()-Formeln durch Vergleich ersetzen
Vor kurzem hatte ich eine kleine Herausforderung in Excel: Beträge in Spalte C mussten mit negativem Vorzeichen versehen werden, in Abhängigkeit einer Zahl in Spalte B (gelb markiert im Bild). Lösen lässt sich dies per verschachtelter WENN()
Funktion, bei vielen Verschachtelungen wird die Formel aber schnell unübersichtlich und fehleranfällig. Deutlich einfacher und übersichtlicher geht es über eine Mischung aus VERGLEICH()
und ISTNV()
, die ich bei stackexchange gefunden hatte.
=WENN(ISTNV(VERGLEICH([@Unterkonto];unterkonten;0));[@Amount];-1*[@Amount])
- für die Zahlen, die den Vorzeichenwechsel auslösen, habe ich einen benannten Bereich ‚unterkonten‘ festgelegt
VERGLEICH()
schaut, ob ein Wert (der erste Parameter) in einer Liste (zweiter Parameter) vorhanden ist. Wird ein Wert nicht gefunden, wird#NV
zurückgeliefert. Der zweite Parameter kann auch ein benannter Bereich sein.- Um die
#NV
Werte zu behandeln, prüfen wir mitISTNV()
die Rückgabe derVERGLEICH()
Funktion - Die Rückgabe von
ISTNV()
wird dann perWENN()
geprüft. WennISTNV()
WAHR zurückliefert, dann hatVERGLEICH()
das Konto nicht in der Liste gefunden, sonst ist der Werte aus Spalte „Amount“ mit -1 zu multiplizieren.
Mit Excel führende Leerzeichen entfernen und hinzufügen
Hier ein kurzes Beispiel, wie man mit Excel führende Leerzeichen entfernen und auch wieder hinzufügen kann.
Sei in B2 die Zahl im Format „drei Ziffern“-„10 Ziffern“:
Dann ermittelt
=WERT(LINKS(B2;FINDEN("-";B2)-1))
die Zahl vor dem Bindestrich.
=WERT(RECHTS(B2;LÄNGE(B2)-FINDEN("-";B2)))
die Zahl hinter dem Bindestrich
und
=TEXT(C2;"000") & "-" & TEXT(D2;"0000000000")
fügt die Zahl aus beiden Teilen wieder im ursprünglichen Format zusammen.
Excel-Kommentare per Funktion auslesen
Ich erhalte manchmal Excel-Dateien, in deren Zell-Kommentaren oft unzählige, nicht unwichtige Anmerkungen stehen.
Mit der folgenden benutzer-definierten Funktion lassen sich diese Kommentare auslesen.
Function GetComment(commentcell) As String On Error Resume Next GetComment = commentcell.Comment.Text End Function
Importing events into Google Calendar
Google Calendar is able to import events from CSV files. The format however is a bit different from the locale used here in Germany, so I prepared a Excel sheet. It allows you to enter the dates and then uses Excel’s TEXT()
function to build the correct format.
Namen zerlegen mit Excel
Nachdem mich am Freitag mal wieder die Frage erreichte, wie man mit Excel Namen der Form „Nachname Vorname“ in Vor- und Nachnamen zerlegen kann, hier ein kleines Tutorial.
Mit Excel Zellbereiche per Semikolon zusammenfassen
Auf http://superuser.com/questions/240858/convert-a-column-into-a-comma-separated-list habe ich eine hilfreiche VBA Funktion gefunden, um Zellbereiche per Semikolon in einer Zelle zusammenzufassen.
Function csvRange(myRange As Range) Dim csvRangeOutput For Each entry In myRange If Not IsEmpty(entry.Value) Then csvRangeOutput = csvRangeOutput & entry.Value & "; " End If Next csvRange = Left(csvRangeOutput, Len(csvRangeOutput) - 1) End Function |
Von Posaunen und Trompeten
Eine Mathematik-Klausur an der Uni Köln hat einigen Staub aufgewirbelt (http://www.spiegel.de/unispiegel/studium/0,1518,827375,00.html), die Aufgaben sind im Spiegel-Artikel verlinkt.
Aufgabe 3 fand ich interessant: Die Anzahl von Posaunen und Trompeten so zu maximieren, dass das Budget von 10’000 Euro eingehalten wird.
Auch ohne groß herum zu rechnen, lässt sich dies leicht in Excel lösen. Man bestimmt einfach die Kosten der verschiedenen Kombinationen aus $x$ Trompeten und $y$ Posaunen und schaut, welche Kombination am nächsten an den 10’000 Euro dran ist. Mit wenigen Zeilen VBA-Code und bedingter Formatierung lässt sich auch leicht eine Planungshilfe gestalten, die bei unterschiedlichen Preisen und anpassbarem Budget die optimale Lösung ausspuckt.
Excel: Prüfen, ob eine Zelle eine Formel enthält
Excel stellt leider keine Funktion bereit, um das Vorhandensein einer Formel in einer Zelle zu prüfen. Behelfen kann man sich aber mit einer selbst gestrickten Excel-Funktion (gefunden bei http://www.vbaexpress.com/kb/getarticle.php?kb_id=324):
Option Explicit Function ISFORMULA(cel As Range) As Boolean ISFORMULA = cel.HasFormula End Function |
Alle Diagramme einer Excel-Mappe als PDF exportieren
Aus Interesse heraus hab ich heute versucht, per Excel VBA alle Diagramme eines Excel-Sheets als PDF zu exportieren. Google brachte als ersten Treffer einen Blogeintrag, der mich auf die richtige Fährte brachte: http://cschleiden.wordpress.com/2009/09/28/howto-export-excel-charts-as-pdf-to-include-in-latex-document/. Dieser Eintrag, zusammen mit einem aufgezeichneten Makro eines manuellen Export-Vorgangs und einige Codeschnipsel von http://www.vbaexpress.com/kb/getarticle.php?kb_id=482 haben mich innerhalb von 20 Minuten zu dem folgenden VBA Code gebracht:
Sub ExportAllCharts() If ActiveSheet.ChartObjects.Count > 0 Then For Each Diagram In ActiveSheet.ChartObjects ActiveSheet.ChartObjects(Diagram.Name).Activate Filename = ActiveChart.Name ActiveChart.Axes(xlValue).MajorGridlines.Select ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _ "C:\Users\Uwe\Desktop\" & Filename, Quality:=xlQualityStandard, _ IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False Next Diagram End If End Sub |
Was macht dieser Code? Wenn überhaupt Diagramme im aktuellen Worksheet vorhanden sind, dann wird für jedes gefundene Diagramm der Dateiname bestimmt (als Namen des Diagramms, z.B. „Tabelle1 Diagramm 1.pdf“ oder „Tabelle1 Diagramm 2.pdf“) und die Datei auf dem Desktop als PDF abgelegt. Der Code ist noch rudimentär und kann noch beliebig erweitert werden.