Archive for the ‘MS Office & VBA’ Category.

Using Document Properties in Microsoft Word 2007

What I really like about LaTeX is the way one can easily define own commands that get expanded in the text whenever needed. Word has a similar feature, called document variables. Unfortunately these can only be set by VBA macros, there is (according to my knowledge) to way to manage them via GUI. Fortunately Word has another feature which provides a more or less similar functionality with the name „Document properties“.

Here’s a brief tutorial how to define and use a new variable:

1) Open the properties of the document

01

2) Open the extended properties

02

3) Create a new variable, here I used „Projekt“ with the value „MeinProjekt“

03

4) To use this new variable simply insert a new field:

04

05

5) and select the corresponding variable

06

6) The internal syntax is the following (when you press Alt-F9 you get this „internal“ view)

07

Uwe

Uwe Ziegenhagen likes LaTeX and Python, sometimes even combined. Do you like my content and would like to thank me for it? Consider making a small donation to my local fablab, the Dingfabrik Köln. Details on how to donate can be found here Spenden für die Dingfabrik.

More Posts - Website

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 mit ISTNV() die Rückgabe der VERGLEICH() Funktion
  • Die Rückgabe von ISTNV() wird dann per WENN() geprüft. Wenn ISTNV() WAHR zurückliefert, dann hat VERGLEICH() das Konto nicht in der Liste gefunden, sonst ist der Werte aus Spalte „Amount“ mit -1 zu multiplizieren.

Download der Excel-Datei

Excel Vergleich ISTNV

Uwe

Uwe Ziegenhagen likes LaTeX and Python, sometimes even combined. Do you like my content and would like to thank me for it? Consider making a small donation to my local fablab, the Dingfabrik Köln. Details on how to donate can be found here Spenden für die Dingfabrik.

More Posts - Website

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.

excel_zehn

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.

Uwe

Uwe Ziegenhagen likes LaTeX and Python, sometimes even combined. Do you like my content and would like to thank me for it? Consider making a small donation to my local fablab, the Dingfabrik Köln. Details on how to donate can be found here Spenden für die Dingfabrik.

More Posts - Website

MS Excel: Werte auf Basis einer Werteliste extrahieren

Hier ein Beispiel, wie man anhand einer einfachen Liste und einer recht komplexen Formel Werte aus einer Spalte ziehen kann.

Gegeben ist eine Liste von Firmennamen, die als letzten Bestandteil (getrennt vom Namen durch ein Leerzeichen) die Rechtsform enthält. Nur durch das Hinzufügen einer neuen Rechtsform zur Liste sollen alle entsprechenden Rechtsformen extrahiert werden.

excel_20131013

Excel_lookup

Uwe

Uwe Ziegenhagen likes LaTeX and Python, sometimes even combined. Do you like my content and would like to thank me for it? Consider making a small donation to my local fablab, the Dingfabrik Köln. Details on how to donate can be found here Spenden für die Dingfabrik.

More Posts - Website

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

Uwe

Uwe Ziegenhagen likes LaTeX and Python, sometimes even combined. Do you like my content and would like to thank me for it? Consider making a small donation to my local fablab, the Dingfabrik Köln. Details on how to donate can be found here Spenden für die Dingfabrik.

More Posts - Website

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.

gcal

GCal_20130601

Uwe

Uwe Ziegenhagen likes LaTeX and Python, sometimes even combined. Do you like my content and would like to thank me for it? Consider making a small donation to my local fablab, the Dingfabrik Köln. Details on how to donate can be found here Spenden für die Dingfabrik.

More Posts - Website

Unterschiedliche Kopfzeilen in MS Word

Im Vergleich zu LaTeX ist Word natürlich Mist (obwohl es schon besser geworden ist), aber beruflich muss ich halt damit arbeiten. Hier ein Tipp, wie man unterschiedliche Kopfzeilen in einem Dokument nutzen kann: http://mstechnology.wordpress.com/2009/08/17/unterschiedliche-kopfzeilen-in-einem-dokument-mit-word-2007/.

Uwe

Uwe Ziegenhagen likes LaTeX and Python, sometimes even combined. Do you like my content and would like to thank me for it? Consider making a small donation to my local fablab, the Dingfabrik Köln. Details on how to donate can be found here Spenden für die Dingfabrik.

More Posts - Website

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.

MustermannMax.xlsx

Uwe

Uwe Ziegenhagen likes LaTeX and Python, sometimes even combined. Do you like my content and would like to thank me for it? Consider making a small donation to my local fablab, the Dingfabrik Köln. Details on how to donate can be found here Spenden für die Dingfabrik.

More Posts - Website

Namen zerlegen mit Excel

Vor ein paar Tagen hatte ich die Aufgabe, Namen der Form „Mustermann Max und Manuela“ in die einzelnen Bestandteile zu zerlegen, um die Namen der einzelnen Ehepartner getrennt ausgeben zu können. Es wäre zwar einfacher gewesen, ein entsprechendes VBA Makro zu schreiben, das die vier Werte zurückliefert, die Lösung wollte ich aber nur mit Formeln bauen. Die folgenden vier Formeln wurden für die Lösung genutzt:

  • Länge("Zelle"): Gibt die Länge des Inhalts einer Zelle aus, als z.B. 5, wenn eine Zelle „abcde“ enthält.
  • Links("Zelle"; "Zeichen"): Gibt vom Zellinhalt in „Zelle“ die linken „Zeichenzahl“ Zeichen zurück.
  • Rechts("Zelle"; "Zeichen"): Gibt vom Zellinhalt in die rechten „Zeichenzahl“ Zeichen zurück.
  • Finden("Suchtext","Zelle",[Startposition]): sucht den Inhalt von „Suchtext“ in Zelle „Zelle“. Optional kann über [Startposition] angegeben werden, ab welchem Zeichen die Funktion mit dem Suchen beginnen soll.

Mit der Kombination dieser vier Formeln können wir jetzt die Zeichenkette bearbeiten:

Mustermann

Das „Mustermann“ zu isolieren ist noch relativ einfach: Zum Nachnamen gehört alles bis zum ersten Leerzeichen. Das Leerzeichen finden wir dynamisch, indem wir mittels Finden() danach suchen. Als Formel erhalten wir (wenn der komplette Name in Zelle B3 steht):

=LINKS(B3;FINDEN(" ";B3))

Max

Um den „Max“ aus der Zeichenkette zu extrahieren, gibt es verschiedene Möglichkeiten. Neben der gleich vorgestellten könnten wir auch mittels wechseln() das „Mustermann“ aus dem String löschen und dann die oben genutzte Formel nutzen. Ich mache es jedoch ein wenig anders, indem ich nach dem zweiten Leerzeichen suche und mir mit Links() den Text links davon zurückgeben lasse:

=LINKS(B3;FINDEN(" ";B3;1+FINDEN(" ";B3)))

Ich nutze dabei die Tatsache, dass ich Finden() mitgeben kann, an welcher Stelle es denn mit der Suche beginnen soll. Und diese Stelle ist genau die Position des ersten Leerzeichens plus 1.

Jetzt habe ich „Mustermann Max“ in einer Zelle. Nun kann ich a) die Länge dieser Zeichenkette bestimmen, b) das Leerzeichen suchen und c) aus der Differenz zwischen Länge und Fundort die Anzahl der Zeichen ermitteln, die ich von rechts entnehmen muss:

=RECHTS(D3;LÄNGE(D3)-FINDEN(" ";D3))

Manuela

Der einfachste Weg, das „Manuela“ zu extrahieren, wäre über eine VBA Funktion, die die Zeichenkette umdreht, dort das dann erste Leerzeichen sucht und den entsprechenden Text zurückgibt. Geht aber auch kompliziert, in diesem Fall auch ohne Hilfsspalte.

Wie eben schon nutze ich Rechts() um den String zu extrahieren. Ich nutze aber eine dreifach verschachtelte Finden() Funktion, um das dritte Leerzeichen zu ermitteln. Alles, was rechts vom dritten Leerzeichen steht, ist unser gesuchter Name.

=RECHTS(B3;LÄNGE(B3)-FINDEN(" ";B3;1+FINDEN(" ";B3;1+FINDEN(" ";B3))))

Uwe

Uwe Ziegenhagen likes LaTeX and Python, sometimes even combined. Do you like my content and would like to thank me for it? Consider making a small donation to my local fablab, the Dingfabrik Köln. Details on how to donate can be found here Spenden für die Dingfabrik.

More Posts - Website

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

Uwe

Uwe Ziegenhagen likes LaTeX and Python, sometimes even combined. Do you like my content and would like to thank me for it? Consider making a small donation to my local fablab, the Dingfabrik Köln. Details on how to donate can be found here Spenden für die Dingfabrik.

More Posts - Website