<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Posts on Bernd Plumhoff</title>
    <link>https://www.berndplumhoff.de/post/</link>
    <description>Recent content in Posts on Bernd Plumhoff</description>
    <generator>Hugo</generator>
    <language>en</language>
    <lastBuildDate>Mon, 01 Jun 2026 17:59:00 +0100</lastBuildDate>
    <atom:link href="https://www.berndplumhoff.de/post/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Verteilung nach Restmenge (Excel / VBA)</title>
      <link>https://www.berndplumhoff.de/verteilung_nach_restmenge_de/</link>
      <pubDate>Mon, 01 Jun 2026 17:59:00 +0100</pubDate>
      <guid>https://www.berndplumhoff.de/verteilung_nach_restmenge_de/</guid>
      <description>&lt;h2 id=&#34;abstract&#34;&gt;Abstract&lt;/h2&gt;&#xA;&lt;p&gt;Die Arbeit ausscheidender Mitarbeiter wird auf die verbliebenen gemäß ihrer&#xA;bisherigen Leistung (gemessen am Budget) verteilt.&#xA;Wie können Sie dies korrekt durchführen?&lt;/p&gt;&#xA;&lt;h3 id=&#34;ein-einfacher-ansatz&#34;&gt;Ein einfacher Ansatz&lt;/h3&gt;&#xA;&lt;p&gt;Eine einfache Formel ist &lt;em&gt;=RUNDEN(C3*$B$2/$C$2;2)&lt;/em&gt;, die Sie von D3 nach D12&#xA;hinunterkopieren können:&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://www.berndplumhoff.de/Verteilung_nach_Restmenge_Einfach.png&#34; alt=&#34;Verteilung_nach_Restmenge_Einfach&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Sie können die Anteile der ausscheidenden Mitarbeiter einfach in Spalte C&#xA;löschen. Die Reihenfolge der Löschungen ist egal.&lt;/p&gt;&#xA;&lt;p&gt;Der offensichtliche Nachteil besteht in einem möglichen Rundungsfehler, weil&#xA;die Summe gerundeter Summanden nicht notwendig der gerundeten Summe der nicht gerundeten&#xA;Summanden entspricht. Das obige Beispiel ergibt eine Differenz von &lt;em&gt;0,02&lt;/em&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Zuweisen von Arbeitseinheiten vermindert um geleistete (Excel / VBA)</title>
      <link>https://www.berndplumhoff.de/zuweisen_von_arbeitseinheiten_vermindert_um_geleistete_de/</link>
      <pubDate>Sun, 31 May 2026 14:44:00 +0100</pubDate>
      <guid>https://www.berndplumhoff.de/zuweisen_von_arbeitseinheiten_vermindert_um_geleistete_de/</guid>
      <description>&lt;h2 id=&#34;abstract&#34;&gt;Abstract&lt;/h2&gt;&#xA;&lt;p&gt;Wie können Sie Ihren Mitarbeitern Arbeitseinheiten fair zuweisen,&#xA;wenn Sie bereits geleistete Arbeit berücksichtigen wollen?&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://www.berndplumhoff.de/Zuweisen_von_Arbeitseinheiten_vermindert_um_geleistete.png&#34; alt=&#34;Zuweisen_von_Arbeitseinheiten_vermindert_um_geleistete&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Gelbe Zellen sind Eingabezellen, grüne zeigen Zwischenergebnisse, und&#xA;blaue kennzeichnen endgültige Ergebnisse.&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Hinweis:&lt;/strong&gt; Sie müssen &lt;em&gt;Units done&lt;/em&gt; in absteigender Reihenfolge eingeben.&lt;/p&gt;&#xA;&lt;p&gt;In diesem Beispiel wurden bereits 90,6 Einheiten geliefert, aber 86 weitere Einheiten&#xA;sollen 28 Lehrern noch zugewiesen werden. Ein fairer Anteil wäre für jeden Lehrer&#xA;&lt;em&gt;(90.6 + 86) / 28 = 6,3&lt;/em&gt;, aber 7 Lehrer haben bereits mehr als das geliefert.&lt;/p&gt;</description>
    </item>
    <item>
      <title>sbNextFloat (VBA)</title>
      <link>https://www.berndplumhoff.de/sbnextfloat_de/</link>
      <pubDate>Sun, 31 May 2026 10:18:00 +0100</pubDate>
      <guid>https://www.berndplumhoff.de/sbnextfloat_de/</guid>
      <description>&lt;h2 id=&#34;example&#34;&gt;Example&lt;/h2&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://www.berndplumhoff.de/sbNextFloat.png&#34; alt=&#34;sbNextFloat&#34;&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;appendix-programmcode-sbnextfloat&#34;&gt;Appendix Programmcode sbNextFloat&lt;/h2&gt;&#xA;&lt;p&gt;Bitte den Haftungsausschluss im &lt;a href=&#34;https://www.berndplumhoff.de/about/impressum_de/&#34; title=&#34;Impressum&#34;&gt;Impressum&lt;/a&gt; beachten.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-VB.net&#34; data-lang=&#34;VB.net&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Option&lt;/span&gt; Explicit&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Function&lt;/span&gt; sbNextFloat(d &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Double&lt;/span&gt;, &lt;span style=&#34;color:#00f&#34;&gt;Optional&lt;/span&gt; bUp &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Boolean&lt;/span&gt; = &lt;span style=&#34;color:#00f&#34;&gt;True&lt;/span&gt;) &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Double&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;Returns the smallest double which is greater than the input (bUp = True)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;or the greatest double which is smaller than the input value (bUp = False).&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;Source (EN): https://www.sulprobil.de/sbnextfloat_en/&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;Source (DE): https://www.berndplumhoff.de/sbnextfloat_de/&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;(C) (P) by Bernd Plumhoff 03-Oct-2010 PB V0.11&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&lt;/span&gt;sbNextFloat = d - (2# * bUp + 1#) * &lt;span style=&#34;color:#00f&#34;&gt;CDbl&lt;/span&gt;(&lt;span style=&#34;color:#a31515&#34;&gt;&amp;#34;1e&amp;#34;&lt;/span&gt; &amp;amp; Right(Format(d, &lt;span style=&#34;color:#a31515&#34;&gt;&amp;#34;.&amp;#34;&lt;/span&gt; &amp;amp; _&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;              &lt;span style=&#34;color:#2b91af&#34;&gt;String&lt;/span&gt;(15, &lt;span style=&#34;color:#a31515&#34;&gt;&amp;#34;0&amp;#34;&lt;/span&gt;) &amp;amp; &lt;span style=&#34;color:#a31515&#34;&gt;&amp;#34;E+000&amp;#34;&lt;/span&gt;), 4) - 15)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;End&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;Function&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;download&#34;&gt;Download&lt;/h2&gt;&#xA;&lt;p&gt;Bitte den Haftungsausschluss im &lt;a href=&#34;https://www.berndplumhoff.de/about/impressum_de/&#34; title=&#34;Impressum&#34;&gt;Impressum&lt;/a&gt; beachten.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Erhöhe die geringste signifikante Ziffer (Excel)</title>
      <link>https://www.berndplumhoff.de/increment_lowest_significant_digit_de/</link>
      <pubDate>Sun, 31 May 2026 10:17:00 +0100</pubDate>
      <guid>https://www.berndplumhoff.de/increment_lowest_significant_digit_de/</guid>
      <description>&lt;h2 id=&#34;abstract&#34;&gt;Abstract&lt;/h2&gt;&#xA;&lt;p&gt;Wie können Sie die geringste signifikante Ziffer einer Zahl erhöhen?&lt;/p&gt;&#xA;&lt;p&gt;Beispiel: Gegeben sei die Zahl 123,4567. Sie benötigen eine Funktion,&#xA;um 0,0001 zu ermitteln und auf die gegebene Zahl zu addieren.&lt;/p&gt;&#xA;&lt;p&gt;Lösung:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;=10^(--RECHTS(TEXT(ABS(A1);&amp;#34;#.###############E+000&amp;#34;),4)+7-LÄNGE(TEXT(ABS(A1);&amp;#34;#.###############E+000&amp;#34;)))&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;img src=&#34;https://www.berndplumhoff.de/Increment_Lowest_Significant_Digit.png&#34; alt=&#34;Increment_Lowest_Significant_Digit&#34;&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;download&#34;&gt;Download&lt;/h2&gt;&#xA;&lt;p&gt;Bitte den Haftungsausschluss im &lt;a href=&#34;https://www.berndplumhoff.de/about/impressum_de/&#34; title=&#34;Impressum&#34;&gt;Impressum&lt;/a&gt; beachten.&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://www.berndplumhoff.de/Increment_Lowest_Significant_Digit.xlsx&#34;&gt;Increment_Lowest_Significant_Digit.xlsx&lt;/a&gt; [10 KB Excel Datei, ohne jegliche Gewährleistung]&lt;/p&gt;</description>
    </item>
    <item>
      <title>sbReducePoints (VBA)</title>
      <link>https://www.berndplumhoff.de/sbreducepoints_de/</link>
      <pubDate>Sun, 31 May 2026 02:28:00 +0100</pubDate>
      <guid>https://www.berndplumhoff.de/sbreducepoints_de/</guid>
      <description>&lt;h2 id=&#34;abstract&#34;&gt;Abstract&lt;/h2&gt;&#xA;&lt;p&gt;Falls Sie die Anzahl von Kurvenpunkten auf solche mit signifikanter Steigungsänderung reduzieren möchten:&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://www.berndplumhoff.de/sbReducePoints.png&#34; alt=&#34;sbReducePoints&#34;&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;literatur&#34;&gt;Literatur&lt;/h2&gt;&#xA;&lt;p&gt;Falls dieser einfache Ansatz der Steigungsänderung nicht ausreicht, empfiehlt sich der&#xA;(externer Link!) &lt;a href=&#34;https://de.wikipedia.org/wiki/Douglas-Peucker-Algorithmus&#34;&gt;Douglas-Peucker-Algorithmus&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;h2 id=&#34;appendix-sbreducepoints-code&#34;&gt;Appendix sbReducePoints Code&lt;/h2&gt;&#xA;&lt;p&gt;Bitte den Haftungsausschluss im &lt;a href=&#34;https://www.berndplumhoff.de/about/impressum_de/&#34; title=&#34;Impressum&#34;&gt;Impressum&lt;/a&gt; beachten.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-VB.net&#34; data-lang=&#34;VB.net&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Option&lt;/span&gt; Explicit&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Function&lt;/span&gt; sbReducePoints(rX &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; Range, rY &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; Range, _&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#00f&#34;&gt;Optional&lt;/span&gt; dMaxSlopeDelta &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Double&lt;/span&gt; = 0.001) &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Variant&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;sbReducePoints eliminates points from a given set&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;in case the slopes between these points do not differ&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;too much.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;Source (EN): https://www.sulprobil.de/sbreducepoints_en/&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;Source (DE): https://www.berndplumhoff.de/sbreducepoints_de/&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;(C) (P) by Bernd Plumhoff 29-Mar-2023 PB V0.1&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Dim&lt;/span&gt; bNewSlope               &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Boolean&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Dim&lt;/span&gt; dSlope12                &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Double&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Dim&lt;/span&gt; dSlope13                &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Double&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Dim&lt;/span&gt; dSlope23                &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Double&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Dim&lt;/span&gt; i                       &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Long&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Dim&lt;/span&gt; k                       &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Long&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Dim&lt;/span&gt; lcount                  &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Long&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;With&lt;/span&gt; Application.WorksheetFunction&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;lcount = rX.Rows.Count&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt; rX.Columns.Count &amp;gt; lcount &lt;span style=&#34;color:#00f&#34;&gt;Then&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    lcount = rX.Columns.Count&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;End&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;ReDim&lt;/span&gt; dX(1 &lt;span style=&#34;color:#00f&#34;&gt;To&lt;/span&gt; lcount) &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Double&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;ReDim&lt;/span&gt; dY(1 &lt;span style=&#34;color:#00f&#34;&gt;To&lt;/span&gt; lcount) &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Double&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;read data row-wise or column-wise&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt; rX.Rows.Count &amp;gt; rX.Columns.Count &lt;span style=&#34;color:#00f&#34;&gt;Then&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#00f&#34;&gt;For&lt;/span&gt; i = 1 &lt;span style=&#34;color:#00f&#34;&gt;To&lt;/span&gt; lcount&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        dX(i) = rX.Cells(i, 1)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        dY(i) = rY.Cells(i, 1)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#00f&#34;&gt;Next&lt;/span&gt; i&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Else&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#00f&#34;&gt;For&lt;/span&gt; i = 1 &lt;span style=&#34;color:#00f&#34;&gt;To&lt;/span&gt; lcount&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        dX(i) = rX.Cells(1, i)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        dY(i) = rY.Cells(1, i)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#00f&#34;&gt;Next&lt;/span&gt; i&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;End&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;ReDim&lt;/span&gt; vR(1 &lt;span style=&#34;color:#00f&#34;&gt;To&lt;/span&gt; 2, 1 &lt;span style=&#34;color:#00f&#34;&gt;To&lt;/span&gt; lcount) &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Variant&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;vR(1, 1) = dX(1)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;vR(2, 1) = dY(1)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;vR(1, 2) = dX(2)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;vR(2, 2) = dY(2)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;k = 2&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;bNewSlope = &lt;span style=&#34;color:#00f&#34;&gt;True&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;For&lt;/span&gt; i = 3 &lt;span style=&#34;color:#00f&#34;&gt;To&lt;/span&gt; lcount&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt; bNewSlope &lt;span style=&#34;color:#00f&#34;&gt;Then&lt;/span&gt; dSlope12 = (vR(2, k) - vR(2, k - 1)) / (vR(1, k) - vR(1, k - 1))&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    dSlope13 = (dY(i) - vR(2, k - 1)) / (dX(i) - vR(1, k - 1))&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    dSlope23 = (dY(i) - vR(2, k)) / (dX(i) - vR(1, k))&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt; Abs(dSlope13 - dSlope12) &amp;gt; dMaxSlopeDelta &lt;span style=&#34;color:#00f&#34;&gt;Or&lt;/span&gt; _&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        Abs(dSlope13 - dSlope23) &amp;gt; dMaxSlopeDelta &lt;span style=&#34;color:#00f&#34;&gt;Then&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        k = k + 1&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        bNewSlope = &lt;span style=&#34;color:#00f&#34;&gt;True&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#00f&#34;&gt;Else&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        bNewSlope = &lt;span style=&#34;color:#00f&#34;&gt;False&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#00f&#34;&gt;End&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    vR(1, k) = dX(i)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    vR(2, k) = dY(i)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Next&lt;/span&gt; i&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;ReDim&lt;/span&gt; Preserve vR(1 &lt;span style=&#34;color:#00f&#34;&gt;To&lt;/span&gt; 2, 1 &lt;span style=&#34;color:#00f&#34;&gt;To&lt;/span&gt; k) &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Variant&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt; rX.Rows.Count &amp;gt; rX.Columns.Count &lt;span style=&#34;color:#00f&#34;&gt;Then&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    sbReducePoints = .Transpose(vR)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Else&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    sbReducePoints = vR&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;End&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;End&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;With&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;End&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;Function&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Bitte den Haftungsausschluss im &lt;a href=&#34;https://www.berndplumhoff.de/about/impressum_de/&#34; title=&#34;Impressum&#34;&gt;Impressum&lt;/a&gt; beachten.&lt;/p&gt;</description>
    </item>
    <item>
      <title>sbDistBudget (VBA)</title>
      <link>https://www.berndplumhoff.de/sbdistbudget_de/</link>
      <pubDate>Sun, 31 May 2026 01:58:00 +0100</pubDate>
      <guid>https://www.berndplumhoff.de/sbdistbudget_de/</guid>
      <description>&lt;p&gt;&lt;strong&gt;&amp;ldquo;Givers have to set limits because takers rarely do.&amp;rdquo; [Irma Kurtz]&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;beispiel&#34;&gt;Beispiel&lt;/h2&gt;&#xA;&lt;p&gt;Nehmen Sie, Ihr Unternehmen befindet sich mitten in seinem jährlichen&#xA;Planungsprozess für Einnahmen und Ausgaben.&#xA;Sie sind der Bereichsleiter von 6 Abteilungen (A bis F).&#xA;Ihre Abteilungsleiter haben ein Budget von 2000, 1900, 2000, 2000, 600 und 2000 € beantragt,&#xA;aber Ihnen wurde lediglich ein Gesamtbudget in Höhe von 9500 € zur Verfügung gestellt.&#xA;Ihre Abteilungen tragen gewichtet 30%, 20%, 15%, 15%, 10% und 10% zu den Unternehmenseinnahmen bei.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Optimale Boxenstopps (VBA)</title>
      <link>https://www.berndplumhoff.de/optimale_boxenstopps_de/</link>
      <pubDate>Sun, 31 May 2026 01:57:00 +0100</pubDate>
      <guid>https://www.berndplumhoff.de/optimale_boxenstopps_de/</guid>
      <description>&lt;h2 id=&#34;abstract&#34;&gt;Abstract&lt;/h2&gt;&#xA;&lt;p&gt;Sie managen ein Autorennteam und wollen die optimalen Boxenstopps für ein Rennen planen?&lt;/p&gt;&#xA;&lt;p&gt;Beispiel:&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://www.berndplumhoff.de/optimale_boxenstopps.png&#34; alt=&#34;optimale_boxenstopps&#34;&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;appendix--programmcode-optimale_boxenstopps&#34;&gt;Appendix – Programmcode Optimale_Boxenstopps&lt;/h2&gt;&#xA;&lt;p&gt;Bitte den Haftungsausschluss im &lt;a href=&#34;https://www.berndplumhoff.de/about/impressum_de/&#34; title=&#34;Impressum&#34;&gt;Impressum&lt;/a&gt; beachten.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-VB.net&#34; data-lang=&#34;VB.net&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Option&lt;/span&gt; Explicit&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Sub&lt;/span&gt; optimale_boxenstopps()&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;Berechnet optimale Boxenstopps für ein Autorennteam.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;Source (EN): https://www.sulprobil.de/optimal_pitstops_en/&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;Source (DE): https://www.berndplumhoff.de/optimale_boxenstopps_de/&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;(C) (P) by Bernd Plumhoff 01-Jan-2023 PB V0.2&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Dim&lt;/span&gt; i                          &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Long&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Dim&lt;/span&gt; j                          &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Long&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Dim&lt;/span&gt; k                          &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Long&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Dim&lt;/span&gt; m                          &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Long&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Dim&lt;/span&gt; t                          &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Long&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Dim&lt;/span&gt; lRunden                    &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Long&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Dim&lt;/span&gt; dStartzeit                 &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Double&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Dim&lt;/span&gt; dRundenZeit                &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Double&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Dim&lt;/span&gt; dResetZeit                 &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Double&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Dim&lt;/span&gt; dZeitTotal                 &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Double&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Dim&lt;/span&gt; dZeitBest                  &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Double&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Dim&lt;/span&gt; dInkrement                 &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Double&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Dim&lt;/span&gt; dBoxenstopp                &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Double&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Dim&lt;/span&gt; sBoxenstopps               &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;String&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Dim&lt;/span&gt; sComma                     &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;String&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Dim&lt;/span&gt; sSemiColon                 &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;String&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Dim&lt;/span&gt; state                      &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; SystemState &lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;Siehe https://www.berndplumhoff.de/systemstate_de/&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Set&lt;/span&gt; state = &lt;span style=&#34;color:#00f&#34;&gt;New&lt;/span&gt; SystemState&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;lRunden = Range(&lt;span style=&#34;color:#a31515&#34;&gt;&amp;#34;Anzahl_Runden&amp;#34;&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;ReDim&lt;/span&gt; lIdx(1 &lt;span style=&#34;color:#00f&#34;&gt;To&lt;/span&gt; lRunden) &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Long&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;dStartzeit = Range(&lt;span style=&#34;color:#a31515&#34;&gt;&amp;#34;Startzeit&amp;#34;&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;dResetZeit = Range(&lt;span style=&#34;color:#a31515&#34;&gt;&amp;#34;Resetzeit&amp;#34;&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;dInkrement = Range(&lt;span style=&#34;color:#a31515&#34;&gt;&amp;#34;Inkrement&amp;#34;&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;dBoxenstopp = Range(&lt;span style=&#34;color:#a31515&#34;&gt;&amp;#34;Boxenstopp&amp;#34;&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Columns(&lt;span style=&#34;color:#a31515&#34;&gt;&amp;#34;E:G&amp;#34;&lt;/span&gt;).ClearContents&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Range(&lt;span style=&#34;color:#a31515&#34;&gt;&amp;#34;E4:G4&amp;#34;&lt;/span&gt;).FormulaArray = Array(&lt;span style=&#34;color:#a31515&#34;&gt;&amp;#34;Anzahl Stopps&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#a31515&#34;&gt;&amp;#34;Gesamtzeit [s]&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#a31515&#34;&gt;&amp;#34;Stopps in Runde(n)&amp;#34;&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;For&lt;/span&gt; t = 0 &lt;span style=&#34;color:#00f&#34;&gt;To&lt;/span&gt; lRunden &lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;Anzahl der Boxenstopps&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&lt;/span&gt;    dZeitBest = 1E+300&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#00f&#34;&gt;ReDim&lt;/span&gt; c(1 &lt;span style=&#34;color:#00f&#34;&gt;To&lt;/span&gt; t + 2) &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Long&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#00f&#34;&gt;For&lt;/span&gt; j = 1 &lt;span style=&#34;color:#00f&#34;&gt;To&lt;/span&gt; t&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        c(j) = j - 1&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#00f&#34;&gt;Next&lt;/span&gt; j&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    c(t + 1) = lRunden&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    c(t + 2) = 0&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#00f&#34;&gt;Do&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        dZeitTotal = 0#&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        dRundenZeit = dStartzeit&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#00f&#34;&gt;For&lt;/span&gt; i = 1 &lt;span style=&#34;color:#00f&#34;&gt;To&lt;/span&gt; lRunden&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            dZeitTotal = dZeitTotal + dRundenZeit&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#00f&#34;&gt;For&lt;/span&gt; m = 1 &lt;span style=&#34;color:#00f&#34;&gt;To&lt;/span&gt; t&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                &lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt; i = c(m) + 1 &lt;span style=&#34;color:#00f&#34;&gt;Then&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                    dZeitTotal = dZeitTotal + dBoxenstopp&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                    dRundenZeit = dResetZeit&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                    &lt;span style=&#34;color:#00f&#34;&gt;Exit&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;For&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                &lt;span style=&#34;color:#00f&#34;&gt;End&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#00f&#34;&gt;Next&lt;/span&gt; m&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt; m &amp;gt; t &lt;span style=&#34;color:#00f&#34;&gt;Then&lt;/span&gt; dRundenZeit = dRundenZeit + dInkrement&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#00f&#34;&gt;Next&lt;/span&gt; i&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt; (dZeitBest &amp;gt; dZeitTotal) &lt;span style=&#34;color:#00f&#34;&gt;Or&lt;/span&gt; (Abs(dZeitBest - dZeitTotal) &amp;lt; 0.000000001) &lt;span style=&#34;color:#00f&#34;&gt;Then&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt; dZeitBest &amp;gt; dZeitTotal &lt;span style=&#34;color:#00f&#34;&gt;Then&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                dZeitBest = dZeitTotal&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                sBoxenstopps = &lt;span style=&#34;color:#a31515&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                sSemiColon = &lt;span style=&#34;color:#a31515&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#00f&#34;&gt;End&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            sComma = &lt;span style=&#34;color:#a31515&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            sBoxenstopps = sBoxenstopps &amp;amp; sSemiColon&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#00f&#34;&gt;For&lt;/span&gt; m = 1 &lt;span style=&#34;color:#00f&#34;&gt;To&lt;/span&gt; t&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                sBoxenstopps = sBoxenstopps &amp;amp; sComma &amp;amp; c(m) + 1&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                sComma = &lt;span style=&#34;color:#a31515&#34;&gt;&amp;#34;, &amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#00f&#34;&gt;Next&lt;/span&gt; m&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            sSemiColon = &lt;span style=&#34;color:#a31515&#34;&gt;&amp;#34;; &amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#00f&#34;&gt;End&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        j = 1&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#00f&#34;&gt;Do&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;While&lt;/span&gt; c(j) + 1 = c(j + 1)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            c(j) = j - 1&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            j = j + 1&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#00f&#34;&gt;Loop&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        c(j) = c(j) + 1&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#00f&#34;&gt;Loop&lt;/span&gt; Until j &amp;gt; t&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    Cells(t + 5, 5) = t&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    Cells(t + 5, 6) = dZeitBest&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    Cells(t + 5, 7) = sBoxenstopps&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Next&lt;/span&gt; t&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Columns(&lt;span style=&#34;color:#a31515&#34;&gt;&amp;#34;E:G&amp;#34;&lt;/span&gt;).EntireColumn.AutoFit&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt; Columns(&lt;span style=&#34;color:#a31515&#34;&gt;&amp;#34;G:G&amp;#34;&lt;/span&gt;).ColumnWidth &amp;gt; 70 &lt;span style=&#34;color:#00f&#34;&gt;Then&lt;/span&gt; Columns(&lt;span style=&#34;color:#a31515&#34;&gt;&amp;#34;G:G&amp;#34;&lt;/span&gt;).ColumnWidth = 70&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;End&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;Sub&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;download&#34;&gt;Download&lt;/h2&gt;&#xA;&lt;p&gt;Bitte den Haftungsausschluss im &lt;a href=&#34;https://www.berndplumhoff.de/about/impressum_de/&#34; title=&#34;Impressum&#34;&gt;Impressum&lt;/a&gt; beachten.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Wahrscheinlichkeiten (Excel, VBA)</title>
      <link>https://www.berndplumhoff.de/wahrscheinlichkeiten_de/</link>
      <pubDate>Sun, 31 May 2026 01:56:00 +0100</pubDate>
      <guid>https://www.berndplumhoff.de/wahrscheinlichkeiten_de/</guid>
      <description>&lt;h2 id=&#34;abstract&#34;&gt;Abstract&lt;/h2&gt;&#xA;&lt;p&gt;Wenn Sie aus einem vollständigen Kartensatz von 52 Spielkarten 7 Karten ohne Zurücklegen&#xA;ziehen, wie hoch ist die Wahrscheinlichkeit, dass Sie dann 3 Asse in der Hand halten?&lt;/p&gt;&#xA;&lt;p&gt;Die Antwort lautet: etwa 0,58%&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://www.berndplumhoff.de/Wahrscheinlichkeiten_Ziehen_mit_und_ohne_Zuruecklegen.png&#34; alt=&#34;Wahrscheinlichkeiten&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Die genaue Formel für die Wahrscheinlichkeit ohne Zurücklegen ist für Excel 365 oder Excel 2021&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;=WENNFEHLER(KOMBINATIONEN(Elements_Drawn;SEQUENZ(1;Elements_Same + 1;0;1)) * (Elements_Same/Elements_Total)^SEQUENZ(1;Elements_Same + 1;0;1) * WENNFEHLER((1 - Elements_Same/Elements_Total)^(Elements_Drawn-SEQUENZ(1;Elements_Same + 1;0;1));1);0)&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Mit Zurücklegen lautet sie&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;=WENNFEHLER(KOMBINATIONEN(Elements_Same;SEQUENZ(1;Elements_Same + 1;0;1))*KOMBINATIONEN(Elements_Total - Elements_Same;Elements_Drawn-SEQUENZ(1;Elements_Same + 1;0;1))/KOMBINATIONEN(Elements_Total;Elements_Drawn); 0)&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Dabei wurden folgende Namen definiert:&#xA;&lt;img src=&#34;https://www.berndplumhoff.de/Wahrscheinlichkeiten_Namensmanager.png&#34; alt=&#34;Wahrscheinlichkeiten_Namensmanager&#34;&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Hugo (HTML)</title>
      <link>https://www.berndplumhoff.de/hugo_de/</link>
      <pubDate>Sat, 30 May 2026 14:39:00 +0100</pubDate>
      <guid>https://www.berndplumhoff.de/hugo_de/</guid>
      <description>&lt;p&gt;&lt;strong&gt;&amp;ldquo;I am always doing things I can&amp;rsquo;t do, that&amp;rsquo;s how I got to do them.&amp;rdquo; [Pablo Picasso]&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;abstract&#34;&gt;Abstract&lt;/h2&gt;&#xA;&lt;p&gt;Ich betreibe keinen Webshop und benötige keine Datenbank oder automatische Aktualisierung von Webseiten.&#xA;Deshalb habe ich meine Websites &lt;a href=&#34;https://www.berndplumhoff.de/about/impressum_de/&#34; title=&#34;berndplumhoff.de&#34;&gt;berndplumhoff.de&lt;/a&gt; und&#xA;(externer Link!) &lt;a href=&#34;https://www.sulprobil.de/&#34; title=&#34;Sulprobil&#34;&gt;sulprobil.de&lt;/a&gt; mit Hugo erstellt.&lt;/p&gt;&#xA;&lt;p&gt;Hugo ist sehr effizient. Die Webseiten werden schnell übersetzt.&#xA;Die generierten Webseiten werden schnell geladen und sind sowohl auf dem PC wie auch auf Smartphones gut zu lesen.&lt;/p&gt;</description>
    </item>
    <item>
      <title>MiniMax Interpolation (Excel)</title>
      <link>https://www.berndplumhoff.de/minimax_interpolation_de/</link>
      <pubDate>Fri, 29 May 2026 16:33:00 +0100</pubDate>
      <guid>https://www.berndplumhoff.de/minimax_interpolation_de/</guid>
      <description>&lt;p&gt;&lt;strong&gt;&amp;ldquo;The man of knowledge must be able not only to love his enemies but also to hate his friends.&amp;rdquo; [Friedrich Nietzsche]&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;abstract&#34;&gt;Abstract&lt;/h2&gt;&#xA;&lt;p&gt;Alexander W. fand eine Interpolationsformel für Aufgabenstellungen,&#xA;die häufig bei Steuern oder Provisionsberechnungen auftreten:&lt;/p&gt;&#xA;&lt;p&gt;=MIN(C6%%*{110;70;35;25}+{0;400;1275;1775};3212,5)&lt;/p&gt;&#xA;&lt;p&gt;Für das nachfolgende Beispiel wäre das Resultat 2.150 für den Eingabewert 250.000:&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://www.berndplumhoff.de/MiniMax_Interpolation.png&#34; alt=&#34;MiniMax_Interpolation&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Wie berechnet man die Funktionsparameter und welches sind die Voraussetzungen&#xA;oder Bedingungen unter denen diese Formel angewandt werden kann?&#xA;Diese Formel kann genau dann verwendet werden,&#xA;wenn die Funktion y = f(x) monoton ist,&#xA;d. h. entweder monoton steigend oder monoton fallend:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Unterjährige Werte glätten (Excel)</title>
      <link>https://www.berndplumhoff.de/unterjaehrige_werte_glaetten_de/</link>
      <pubDate>Fri, 29 May 2026 02:06:00 +0100</pubDate>
      <guid>https://www.berndplumhoff.de/unterjaehrige_werte_glaetten_de/</guid>
      <description>&lt;h2 id=&#34;abstract&#34;&gt;Abstract&lt;/h2&gt;&#xA;&lt;p&gt;Sie wollen unterjährige Werte glätten und dabei die Periodenendwerte und den Gesamtdurchschnitt beibehalten?&lt;/p&gt;&#xA;&lt;p&gt;Zwei einfache Möglichkeiten:&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://www.berndplumhoff.de/smoothing_inner_period_values.png&#34; alt=&#34;smoothing_inner_period_values&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Definieren Sie diese Namen:&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Name&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Bezieht sich auf&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;All_Values&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;=Sheet1!$A$2:$K$2&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Bookvalue_End&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;=Sheet1!$L$2&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Bookvalue_Start&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;=Sheet1!$A$2&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Inner_Count&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;=(Total_Count-2)&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Inner_Values&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;=Sheet1!$B$2:$K$2&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Total_Average&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;=MITTELWERT(All_Values)&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Total_Count&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;=SPALTE(Bookvalue_End)-SPALE(Bookvalue_Start)+1&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;hr&gt;&#xA;&lt;p&gt;Wenn alle unterjährigen Werte identisch sein sollen, geben Sie ein:&lt;br&gt;&#xA;A3: =Bookvalue_Start&#xA;B3: =(@Total_Average*@Total_Count-Bookvalue_Start-Bookvalue_End)/@Inner_Count und nach rechts kopieren bis K3&lt;br&gt;&#xA;L3: =Bookvalue_End&lt;/p&gt;&#xA;&lt;p&gt;Wenn alle unterjährigen Werte (mit Ausnahme eines oder mehrerer Extremwerte) identisch sein sollen, geben Sie ein:&lt;br&gt;&#xA;A3: =Bookvalue_Start&lt;br&gt;&#xA;B3: =WENN(ABS(@Total_Average-MAX(Inner_Values))&amp;gt;=ABS(@Total_Average-MIN(Inner_Values));WENN(B$2=MAX(Inner_Values);B$2;(@Total_Average*@Total_Count-Bookvalue_Start-Bookvalue_End-MAX(Inner_Values)*ZÄHLENWENN(Inner_Values;MAX(Inner_Values)))/(@Inner_Count-ZÄHLENWENN(Inner_Values;MAX(Inner_Values))));WENN(B$2=MIN(Inner_Values);B$2;(@Total_Average*@Total_Count-Bookvalue_Start-Bookvalue_End-MIN(Inner_Values)*ZÄHLENWENN(Inner_Values;MIN(Inner_Values)))/(@Inner_Count-ZÄHLENWENN(Inner_Values;MIN(Inner_Values))))) und nach rechts kopieren bis K3&lt;br&gt;&#xA;L3: =Bookvalue_End&lt;/p&gt;</description>
    </item>
    <item>
      <title>sbORB (VBA)</title>
      <link>https://www.berndplumhoff.de/sborb_de/</link>
      <pubDate>Fri, 29 May 2026 01:51:00 +0100</pubDate>
      <guid>https://www.berndplumhoff.de/sborb_de/</guid>
      <description>&lt;p&gt;&lt;strong&gt;&amp;ldquo;Every wall is a door.&amp;rdquo; [Ralph Waldo Emerson]&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;abstract&#34;&gt;Abstract&lt;/h2&gt;&#xA;&lt;p&gt;Echtdaten enthalten manchmal extreme Werte, die Sie ignorieren oder löschen möchten,&#xA;sogenannte Ausreißer:&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://www.berndplumhoff.de/sbORB.png&#34; alt=&#34;sbORB&#34;&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;appendix-programmcode-sborb&#34;&gt;Appendix Programmcode sbORB&lt;/h2&gt;&#xA;&lt;p&gt;Bitte den Haftungsausschluss im &lt;a href=&#34;https://www.berndplumhoff.de/about/impressum_de/&#34; title=&#34;Impressum&#34;&gt;Impressum&lt;/a&gt; beachten.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-VB.net&#34; data-lang=&#34;VB.net&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Option&lt;/span&gt; Explicit&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Function&lt;/span&gt; sbORB(rY &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; Range, rX &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; Range, _&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#00f&#34;&gt;Optional&lt;/span&gt; dSigmaFactor &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Double&lt;/span&gt; = 3#, _&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#00f&#34;&gt;Optional&lt;/span&gt; dMaxOutlierPercentage &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Double&lt;/span&gt; = 0.5) &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Variant&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;sbORB() = outlier resistant beta returns a beta and&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;an alpha where y = beta * x + alpha is most accurate&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;for (almost) all given x in rX and y in rY.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;&amp;#34;Almost&amp;#34; means that we successively (one by one) throw out outliers&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;which have a distance of &amp;gt; dSigmaFactor * STDEV_of_all_Distances&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;from the least square (LS) proxy.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;Source (EN): https://www.sulprobil.de/sborb_en/&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;Source (DE): https://www.berndplumhoff.de/sborb_de/&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;(C) (P) by Bernd Plumhoff 24-Jun-2007 PB V0.9&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Dim&lt;/span&gt; vLinEst &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Variant&lt;/span&gt; &lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;store LinEst() result of recent LS proxy during iterations&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Dim&lt;/span&gt; dm2 &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Double&lt;/span&gt; &lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;ortogonal slope to recent LS proxy&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Dim&lt;/span&gt; dc &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Double&lt;/span&gt; &lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;Constant c in: y2=m2*x2+c which is ortogonal to LS proxy through a given point&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Dim&lt;/span&gt; dx2 &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Double&lt;/span&gt; &lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;x2 in: y2 = m2 * x2 + c which is ortogonal to LS proxy through a given point&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Dim&lt;/span&gt; dy2 &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Double&lt;/span&gt; &lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;y2 in: y2 = m2 * x2 + c which is ortogonal to LS proxy through a given point&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Dim&lt;/span&gt; i &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Long&lt;/span&gt;, j &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Long&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Dim&lt;/span&gt; lcount &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Long&lt;/span&gt; &lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;holds current number of live points&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Dim&lt;/span&gt; lcount_orig &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Long&lt;/span&gt; &lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;original (starting) number of points&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Dim&lt;/span&gt; lcount_old &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Long&lt;/span&gt; &lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;holds number of live points of previous iteration&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Dim&lt;/span&gt; daverage &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Double&lt;/span&gt; &lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;average of distances to LS proxy of current iterations&amp;#39; live points&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Dim&lt;/span&gt; dstdev &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Double&lt;/span&gt; &lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;Stdev of distances to LS proxy of current iterations&amp;#39; live points&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Dim&lt;/span&gt; dDistMax &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Double&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Dim&lt;/span&gt; lDistMaxIdx &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Long&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;lcount = rX.Rows.Count&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt; rX.Columns.Count &amp;gt; lcount &lt;span style=&#34;color:#00f&#34;&gt;Then&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    lcount = rX.Columns.Count&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;End&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;lcount_orig = lcount&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;lcount_old = lcount + 1&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;ReDim&lt;/span&gt; dDist(1 &lt;span style=&#34;color:#00f&#34;&gt;To&lt;/span&gt; lcount) &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Double&lt;/span&gt; &lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;store distances of live points to recent LS proxy (line)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#00f&#34;&gt;ReDim&lt;/span&gt; dX(1 &lt;span style=&#34;color:#00f&#34;&gt;To&lt;/span&gt; lcount) &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Double&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;ReDim&lt;/span&gt; dY(1 &lt;span style=&#34;color:#00f&#34;&gt;To&lt;/span&gt; lcount) &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Double&lt;/span&gt;    &lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;store coordinates of &amp;#34;live&amp;#34; points during iterations&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;read data row-wise or column-wise&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt; rX.Rows.Count &amp;gt; rX.Columns.Count &lt;span style=&#34;color:#00f&#34;&gt;Then&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#00f&#34;&gt;For&lt;/span&gt; i = 1 &lt;span style=&#34;color:#00f&#34;&gt;To&lt;/span&gt; lcount&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        dX(i) = rX.Cells(i, 1)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        dY(i) = rY.Cells(i, 1)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#00f&#34;&gt;Next&lt;/span&gt; i&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Else&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#00f&#34;&gt;For&lt;/span&gt; i = 1 &lt;span style=&#34;color:#00f&#34;&gt;To&lt;/span&gt; lcount&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        dX(i) = rX.Cells(1, i)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        dY(i) = rY.Cells(1, i)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#00f&#34;&gt;Next&lt;/span&gt; i&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;End&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Do&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    lcount_old = lcount&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#00f&#34;&gt;ReDim&lt;/span&gt; Preserve dDist(1 &lt;span style=&#34;color:#00f&#34;&gt;To&lt;/span&gt; lcount) &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Double&lt;/span&gt; &lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;Store distances of live points to last LS proxy&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&lt;/span&gt;    &lt;span style=&#34;color:#00f&#34;&gt;ReDim&lt;/span&gt; Preserve dX(1 &lt;span style=&#34;color:#00f&#34;&gt;To&lt;/span&gt; lcount) &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Double&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#00f&#34;&gt;ReDim&lt;/span&gt; Preserve dY(1 &lt;span style=&#34;color:#00f&#34;&gt;To&lt;/span&gt; lcount) &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Double&lt;/span&gt; &lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;Store coordinates of &amp;#34;live&amp;#34; points during iterations&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&lt;/span&gt;    vLinEst = Application.WorksheetFunction.LinEst(dY, dX, &lt;span style=&#34;color:#00f&#34;&gt;True&lt;/span&gt;, &lt;span style=&#34;color:#00f&#34;&gt;True&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    dDistMax = 0#&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    lDistMaxIdx = 1&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#00f&#34;&gt;For&lt;/span&gt; i = 1 &lt;span style=&#34;color:#00f&#34;&gt;To&lt;/span&gt; lcount&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;Calculate distances of live points to recent LS proxy&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&lt;/span&gt;        dm2 = -1# / vLinEst(1, 1)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        dc = dY(i) - dX(i) * dm2&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        dx2 = (dc - vLinEst(1, 2)) / (vLinEst(1, 1) - dm2)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        dy2 = dm2 * dx2 + dc&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        dDist(i) = Sqr((dX(i) - dx2) * (dX(i) - dx2) + (dY(i) - dy2) * (dY(i) - dy2))&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;remember largest distance and its index&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&lt;/span&gt;        &lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt; dDist(i) &amp;gt; dDistMax &lt;span style=&#34;color:#00f&#34;&gt;Then&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            dDistMax = dDist(i)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            lDistMaxIdx = i&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#00f&#34;&gt;End&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#00f&#34;&gt;Next&lt;/span&gt; i&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;calculate average and standard deviation of live points&amp;#39; distances to LS proxy&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&lt;/span&gt;    daverage = Application.WorksheetFunction.Average(dDist)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    dstdev = Application.WorksheetFunction.StDev(dDist)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;    &amp;#39;kill points with distance &amp;gt; dSigmaFactor * dstdev &amp;#39;Attention: might erase too many points&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;    j = 1&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;    For i = 1 To lcount&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;        If dDist(i) &amp;lt;= dstdev * dSigmaFactor Then&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;            dX(j) = dX(i)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;            dY(j) = dY(i)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;            j = j + 1&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;        Else&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;            Debug.Print &amp;#34;Lcount: &amp;#34; &amp;amp; lcount &amp;amp; &amp;#34;. Throwing out (&amp;#34; &amp;amp; dX(i) &amp;amp; &amp;#34;;&amp;#34; &amp;amp; dY(i) &amp;amp; &amp;#34;)&amp;#34;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;        End If&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;    Next i&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;    lcount = j - 1&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&lt;/span&gt;    &lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;kill point with largest distance &amp;gt; dSigmaFactor * dstdev&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&lt;/span&gt;    &lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt; dDist(lDistMaxIdx) &amp;gt;= dstdev * dSigmaFactor &lt;span style=&#34;color:#00f&#34;&gt;Then&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        Debug.Print &lt;span style=&#34;color:#a31515&#34;&gt;&amp;#34;Lcount: &amp;#34;&lt;/span&gt; &amp;amp; lcount &amp;amp; &lt;span style=&#34;color:#a31515&#34;&gt;&amp;#34;. Throwing out (&amp;#34;&lt;/span&gt; &amp;amp; dX(lDistMaxIdx) &amp;amp; _&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                    &lt;span style=&#34;color:#a31515&#34;&gt;&amp;#34;;&amp;#34;&lt;/span&gt; &amp;amp; dY(lDistMaxIdx) &amp;amp; &lt;span style=&#34;color:#a31515&#34;&gt;&amp;#34;)&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        dX(lDistMaxIdx) = dX(lcount)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        dY(lDistMaxIdx) = dY(lcount)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        lcount = lcount - 1&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#00f&#34;&gt;End&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Loop&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;While&lt;/span&gt; lcount_old &amp;gt; lcount &lt;span style=&#34;color:#00f&#34;&gt;And&lt;/span&gt; lcount / lcount_orig &amp;gt; 1# - dMaxOutlierPercentage&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt; lcount &amp;lt; lcount_old &lt;span style=&#34;color:#00f&#34;&gt;Then&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    vLinEst = Application.WorksheetFunction.LinEst(dY, dX, &lt;span style=&#34;color:#00f&#34;&gt;True&lt;/span&gt;, &lt;span style=&#34;color:#00f&#34;&gt;True&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;End&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sbORB = vLinEst&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;End&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;Function&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;download&#34;&gt;Download&lt;/h2&gt;&#xA;&lt;p&gt;Bitte den Haftungsausschluss im &lt;a href=&#34;https://www.berndplumhoff.de/about/impressum_de/&#34; title=&#34;Impressum&#34;&gt;Impressum&lt;/a&gt; beachten.&lt;/p&gt;</description>
    </item>
    <item>
      <title>sbBirthdayList (VBA)</title>
      <link>https://www.berndplumhoff.de/sbbirthdaylist_de/</link>
      <pubDate>Fri, 29 May 2026 01:44:00 +0100</pubDate>
      <guid>https://www.berndplumhoff.de/sbbirthdaylist_de/</guid>
      <description>&lt;p&gt;&lt;strong&gt;&amp;ldquo;Nice to be here? At my age, it&amp;rsquo;s nice to be anywhere.&amp;rdquo; [George Burns]&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;Sie wollen wissen, wann es wieder Zeit für Kuchen in Ihrem Team ist?&#xA;Dann erstellen Sie eine Geburtstagsliste:&lt;/p&gt;&#xA;&lt;h2 id=&#34;beispiel&#34;&gt;Beispiel&lt;/h2&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://www.berndplumhoff.de/sbBirthdaylist.png&#34; alt=&#34;sbBirthdayList&#34;&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;appendix-programmcode-sbbirthdaylist&#34;&gt;Appendix Programmcode sbBirthdayList&lt;/h2&gt;&#xA;&lt;p&gt;Bitte den Haftungsausschluss im &lt;a href=&#34;https://www.berndplumhoff.de/about/impressum_de/&#34; title=&#34;Impressum&#34;&gt;Impressum&lt;/a&gt; beachten.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-VB.net&#34; data-lang=&#34;VB.net&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Option&lt;/span&gt; Explicit&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Function&lt;/span&gt; sbBirthdayList(r &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; Range) &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Variant&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;Create monthly birthday list.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;Source (EN): https://www.sulprobil.de/sbbirthdaylist_en/&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;Source (DE): https://www.berndplumhoff.de/sbbirthdaylist_de/&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;(C) (P) by Bernd Plumhoff 15-Sep-2010 PB V0.10&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Dim&lt;/span&gt; vR(1 &lt;span style=&#34;color:#00f&#34;&gt;To&lt;/span&gt; 13, 1 &lt;span style=&#34;color:#00f&#34;&gt;To&lt;/span&gt; 3) &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Variant&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Dim&lt;/span&gt; i &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Long&lt;/span&gt;, j &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Long&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Dim&lt;/span&gt; sNames(101 &lt;span style=&#34;color:#00f&#34;&gt;To&lt;/span&gt; 1231) &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;String&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;Fill temporary array&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#00f&#34;&gt;For&lt;/span&gt; i = 1 &lt;span style=&#34;color:#00f&#34;&gt;To&lt;/span&gt; r.Rows.Count&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt; IsDate(r.Cells(i, 2)) &lt;span style=&#34;color:#00f&#34;&gt;Then&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        j = Month(r.Cells(i, 2))&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        vR(j + 1, 2) = vR(j + 1, 2) + 1 &lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;Increasing DOB counter for month&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&lt;/span&gt;        j = j * 100 + Day(r.Cells(i, 2))&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt; sNames(j) &amp;lt;&amp;gt; &lt;span style=&#34;color:#a31515&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;Then&lt;/span&gt; sNames(j) = sNames(j) &amp;amp; &lt;span style=&#34;color:#a31515&#34;&gt;&amp;#34;, &amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        sNames(j) = sNames(j) &amp;amp; r.Cells(i, 1)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#00f&#34;&gt;End&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Next&lt;/span&gt; i&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;Fill output area&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&lt;/span&gt;vR(1, 1) = &lt;span style=&#34;color:#a31515&#34;&gt;&amp;#34;Month&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;vR(1, 2) = &lt;span style=&#34;color:#a31515&#34;&gt;&amp;#34;#&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;vR(1, 3) = &lt;span style=&#34;color:#a31515&#34;&gt;&amp;#34;(Day) Names&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;For&lt;/span&gt; i = 1 &lt;span style=&#34;color:#00f&#34;&gt;To&lt;/span&gt; 12&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    vR(i + 1, 1) = Format(DateSerial(1900, i, 1), &lt;span style=&#34;color:#a31515&#34;&gt;&amp;#34;MMMM&amp;#34;&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    vR(i + 1, 3) = &lt;span style=&#34;color:#a31515&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#00f&#34;&gt;For&lt;/span&gt; j = 1 &lt;span style=&#34;color:#00f&#34;&gt;To&lt;/span&gt; 31&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt; sNames(i * 100 + j) &amp;lt;&amp;gt; &lt;span style=&#34;color:#a31515&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;Then&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt; vR(i + 1, 3) &amp;lt;&amp;gt; &lt;span style=&#34;color:#a31515&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;Then&lt;/span&gt; vR(i + 1, 3) = vR(i + 1, 3) &amp;amp; &lt;span style=&#34;color:#a31515&#34;&gt;&amp;#34;, &amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            vR(i + 1, 3) = vR(i + 1, 3) &amp;amp; &lt;span style=&#34;color:#a31515&#34;&gt;&amp;#34;(&amp;#34;&lt;/span&gt; &amp;amp; j &amp;amp; &lt;span style=&#34;color:#a31515&#34;&gt;&amp;#34;) &amp;#34;&lt;/span&gt; &amp;amp; sNames(i * 100 + j)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#00f&#34;&gt;End&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#00f&#34;&gt;Next&lt;/span&gt; j&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Next&lt;/span&gt; i&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sbBirthdayList = vR&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;End&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;Function&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;download&#34;&gt;Download&lt;/h2&gt;&#xA;&lt;p&gt;Bitte den Haftungsausschluss im &lt;a href=&#34;https://www.berndplumhoff.de/about/impressum_de/&#34; title=&#34;Impressum&#34;&gt;Impressum&lt;/a&gt; beachten.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Minimum Truck Load Problem (Excel)</title>
      <link>https://www.berndplumhoff.de/minimum_truck_load_problem_de/</link>
      <pubDate>Thu, 28 May 2026 05:55:00 +0100</pubDate>
      <guid>https://www.berndplumhoff.de/minimum_truck_load_problem_de/</guid>
      <description>&lt;h2 id=&#34;abstract&#34;&gt;Abstract&lt;/h2&gt;&#xA;&lt;p&gt;Angenommen, ein Lieferant verkauft seine Ware nur in gewissen Mindestmengen,&#xA;um die Warenlieferungen wirtschaftlich zu gestalten.&#xA;So könnte z. B. die erste Mindestmenge eine volle Wagenladung sein, und ab dem&#xA;zweiten Wagen immer mindestens eine halbe Wagenladung.&lt;/p&gt;&#xA;&lt;h2 id=&#34;beispiel&#34;&gt;Beispiel&lt;/h2&gt;&#xA;&lt;p&gt;Eine volle Wagenladung besteht aus 10 Waren. Dies ist die minimale Bestellmenge.&#xA;Danach muss immer mindestens eine halbe Wagenladung bestellt werden.&#xA;Es soll verhindert werden, dass ein Truck mit weniger als einer halben Ladung fährt.&lt;/p&gt;</description>
    </item>
    <item>
      <title>ConvertTime (VBA)</title>
      <link>https://www.berndplumhoff.de/converttime_de/</link>
      <pubDate>Thu, 28 May 2026 05:52:00 +0100</pubDate>
      <guid>https://www.berndplumhoff.de/converttime_de/</guid>
      <description>&lt;h2 id=&#34;abstract&#34;&gt;Abstract&lt;/h2&gt;&#xA;&lt;p&gt;Julian Hess und Patrick Honorez entwickelten ein sehr gutes Konvertierprogramm für MS Access und für MS Excel,&#xA;um die Zeit einer Zeitzone in eine andere zu übersetzen (externer Link!):&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://stackoverflow.com/questions/3120915/get-timezone-information-in-vba-excel/20489651#20489651&#34;&gt;https://stackoverflow.com/questions/3120915/get-timezone-information-in-vba-excel/20489651#20489651&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;Bitte beachten Sie, dass hierfür ein ordentlich installiertes Outlook Voraussetzung ist.&lt;/p&gt;</description>
    </item>
    <item>
      <title>sbDHondt (VBA)</title>
      <link>https://www.berndplumhoff.de/sbdhondt_de/</link>
      <pubDate>Thu, 28 May 2026 05:44:00 +0100</pubDate>
      <guid>https://www.berndplumhoff.de/sbdhondt_de/</guid>
      <description>&lt;h2 id=&#34;abstract&#34;&gt;Abstract&lt;/h2&gt;&#xA;&lt;p&gt;Wenn Sie die verfügbaren Parlamentssitze fair gemäß der erzielten Stimmen&#xA;pro Partei verteilen wollen, können Sie die (externer Link!)&#xA;&lt;a href=&#34;https://de.wikipedia.org/wiki/D%E2%80%99Hondt-Verfahren&#34; title=&#34;DHondt&#34;&gt;D&amp;rsquo;Hondt&lt;/a&gt; Methode anwenden:&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://www.berndplumhoff.de/sbdHondt_01_Screen.png&#34; alt=&#34;sbdHondt_01_Screen&#34;&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;literatur&#34;&gt;Literatur&lt;/h2&gt;&#xA;&lt;p&gt;Ein vergnügliches Büchlein ist:&lt;/p&gt;&#xA;&lt;p&gt;N. Herrmann, Mathematik ist überall, Oldenbourg Verlag München Wien, ISBN 3-486-57583-X&lt;/p&gt;&#xA;&lt;p&gt;Siehe Kapitel 12, Das Wahl-Problem.&lt;/p&gt;&#xA;&lt;h2 id=&#34;appendix-programmcode-sbdhondt&#34;&gt;Appendix Programmcode sbDHondt&lt;/h2&gt;&#xA;&lt;p&gt;Bitte den Haftungsausschluss im &lt;a href=&#34;https://www.berndplumhoff.de/about/impressum_de/&#34; title=&#34;Impressum&#34;&gt;Impressum&lt;/a&gt; beachten.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-VB.net&#34; data-lang=&#34;VB.net&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Option&lt;/span&gt; Explicit&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Function&lt;/span&gt; sbdHondt(lSeats &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Long&lt;/span&gt;, vVotes &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Variant&lt;/span&gt;) &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Variant&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;Implements the d&amp;#39;Hondt method for allocating seats in&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;party-list proportional representation political election&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;systems.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;Source (EN): https://www.sulprobil.de/sbdhondt_en/&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;Source (DE): https://www.berndplumhoff.de/sbdhondt_de/&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;(C) (P) by Bernd Plumhoff 01-Dec-2009 PB V0.10&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Dim&lt;/span&gt; i &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Long&lt;/span&gt;, k &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Long&lt;/span&gt;, n &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Long&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Dim&lt;/span&gt; vA &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Variant&lt;/span&gt;, vB &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Variant&lt;/span&gt;, vR &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Variant&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Dim&lt;/span&gt; dMax &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Double&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;With&lt;/span&gt; Application.WorksheetFunction&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;vA = .Transpose(.Transpose(vVotes))&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;vB = vA&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;n = UBound(vA, 1)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;ReDim&lt;/span&gt; vR(1 &lt;span style=&#34;color:#00f&#34;&gt;To&lt;/span&gt; n, 1 &lt;span style=&#34;color:#00f&#34;&gt;To&lt;/span&gt; 1) &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Variant&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;ReDim&lt;/span&gt; lDenom(1 &lt;span style=&#34;color:#00f&#34;&gt;To&lt;/span&gt; n) &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Long&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Do&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;While&lt;/span&gt; i &amp;lt; lSeats&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;identify max&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&lt;/span&gt;    dMax = .Max(vB)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    k = .Match(dMax, vB, 0)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    lDenom(k) = lDenom(k) + 1&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    vB(k, 1) = vA(k, 1) / (lDenom(k) + 1#)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    vR(k, 1) = vR(k, 1) + 1&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    i = i + 1&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Loop&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sbdHondt = vR&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;End&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;With&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;End&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;Function&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;download&#34;&gt;Download&lt;/h2&gt;&#xA;&lt;p&gt;Bitte den Haftungsausschluss im &lt;a href=&#34;https://www.berndplumhoff.de/about/impressum_de/&#34; title=&#34;Impressum&#34;&gt;Impressum&lt;/a&gt; beachten.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Logging (VBA Class)</title>
      <link>https://www.berndplumhoff.de/logging_de/</link>
      <pubDate>Wed, 27 May 2026 13:20:00 +0100</pubDate>
      <guid>https://www.berndplumhoff.de/logging_de/</guid>
      <description>&lt;p&gt;&lt;strong&gt;&amp;ldquo;Testing can show the presence of bugs, but not their absence.&amp;rdquo; [Edsger W. Dijkstra]&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;abstract&#34;&gt;Abstract&lt;/h2&gt;&#xA;&lt;p&gt;Diese clsLog  Klasse bietet Logging mit den Berichtsstufen INFO, WARN, FATAL und EVER an.&#xA;Die Programminformationen werden sowohl in einem Tabellenblatt als auch in einer Datei festgehalten.&lt;/p&gt;&#xA;&lt;p&gt;Die Anwendung dieser clsLog Klasse ist nicht schwer: Einfach das allgemeine Modul &lt;em&gt;modLog&lt;/em&gt;&#xA;und das Klassenmodul *clsLog  aus der unten bereitgestellten Beispieldatei in die&#xA;eigene Anwendung kopieren, dann die &lt;em&gt;Public Const AppVersion&lt;/em&gt; zum Beispiel mit dem Wert&#xA;&amp;ldquo;Meine Anwendung Version 1.0&amp;rdquo; im Hauptmodul definieren, und dann kann man mit&lt;/p&gt;</description>
    </item>
    <item>
      <title>Mythos Motivation</title>
      <link>https://www.berndplumhoff.de/mythos_motivation_de/</link>
      <pubDate>Wed, 27 May 2026 09:19:00 +0100</pubDate>
      <guid>https://www.berndplumhoff.de/mythos_motivation_de/</guid>
      <description>&lt;p&gt;&lt;strong&gt;&amp;ldquo;Alles Motivieren ist Demotivieren.&amp;rdquo; [Reinhard K. Sprenger]&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;abstract&#34;&gt;Abstract&lt;/h2&gt;&#xA;&lt;p&gt;Reinhard K. Sprenger schrieb ein lehrreiches Buch über das Motivieren von Mitarbeitenden.&#xA;Seine zentrale Aussage: Lassen Sie es sein! Jeder besitzt eine intrinsische Motivation.&#xA;Diese muss selbständig und individuell entwickelt werden, um zum Unternehmenserfolg beizutragen.&#xA;Alle externen Motivierungsversuche werden scheitern.&lt;/p&gt;&#xA;&lt;p&gt;Ich empfehle, sein Buch zu erwerben und zu lesen: (externer Link!)&#xA;&lt;a href=&#34;https://www.sprenger.com/buecher.html&#34; title=&#34;Sprenger_Mythos_Motivation&#34;&gt;Mythos Motivation, Wege aus einer Sackgasse&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;h2 id=&#34;die-zentralen-aussagen-aus-sprengers-buch&#34;&gt;Die zentralen Aussagen aus Sprenger&amp;rsquo;s Buch&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Das System der Motivierung ist methodisiertes Misstrauen.&lt;/p&gt;</description>
    </item>
    <item>
      <title>TEXTVERKETTEN (VBA)</title>
      <link>https://www.berndplumhoff.de/textverketten_de/</link>
      <pubDate>Wed, 27 May 2026 09:10:00 +0100</pubDate>
      <guid>https://www.berndplumhoff.de/textverketten_de/</guid>
      <description>&lt;p&gt;&lt;strong&gt;&amp;ldquo;The best way to pay for a lovely moment is to enjoy it.&amp;rdquo; [Richard Bach]&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;abstract&#34;&gt;Abstract&lt;/h2&gt;&#xA;&lt;p&gt;Die Excel Funktion TEXTVERKETTEN kann ab Excel Version 2019 die Inhalte von Zellbereichen und Arrays als&#xA;Zeichenketten verbinden und mit vorgegebenem Trennzeichen ausgeben.&#xA;Für Excel Versionen älter als Excel 2019 können Sie die hier vorgestellte benutzerdefinierte Funktion &lt;em&gt;TEXTVERKETTEN&lt;/em&gt;&#xA;verwenden.&lt;/p&gt;&#xA;&lt;p&gt;Das Gute ist: Wenn Sie dann auf Excel 2019 oder neuer umstellen, müssen Sie nichts machen. Excel wird dann&#xA;automatisch die eingebaute Funktion TEXTVERKETTEN verwenden.&lt;/p&gt;</description>
    </item>
    <item>
      <title>sbCellWatermarks (VBA)</title>
      <link>https://www.berndplumhoff.de/sbcellwatermarks_de/</link>
      <pubDate>Wed, 27 May 2026 08:47:00 +0100</pubDate>
      <guid>https://www.berndplumhoff.de/sbcellwatermarks_de/</guid>
      <description>&lt;h2 id=&#34;abstract&#34;&gt;Abstract&lt;/h2&gt;&#xA;&lt;p&gt;Falls Sie die Extremwerte einer Zelle nachverfolgen oder speichern müssen,&#xA;hilft Ihnen der hier gezeigte VBA Code. Diese Lösung funktioniert für numerische Werte und Textwerte.&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://www.berndplumhoff.de/sbCellWatermarks_01_Screen.png&#34; alt=&#34;sbCellWatermarks_01_Screen&#34;&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;appendix-sbcellwatermarks-programmcode&#34;&gt;Appendix sbCellWatermarks Programmcode&lt;/h2&gt;&#xA;&lt;p&gt;Bitte den Haftungsausschluss im &lt;a href=&#34;https://www.berndplumhoff.de/about/impressum_de/&#34; title=&#34;Impressum&#34;&gt;Impressum&lt;/a&gt; beachten.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-VB.net&#34; data-lang=&#34;VB.net&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Sub&lt;/span&gt; sbCellWatermarks(rCell &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; Range, rOutput &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; Range)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;Keep track of extreme values of a cell calculation.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;Call this sub from a worksheet&amp;#39;s calculation event like&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;Private Sub Worksheet_Change(ByVal Target As Range)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;    Call sbCellWatermarks(Range(&amp;#34;watermark_cell&amp;#34;), _&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;            Range(&amp;#34;watermark_output&amp;#34;))&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;End Sub&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;If named range watermark_cell is set to B2 and watermark_output to&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;B5:E6 a calculation example could be like:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;    Result  DateTime           Formula       Input Parameters&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;Max    0    13/12/2008 12:41   =-((B1-3)^2)  3&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;Min   -4    13/12/2008 12:46   =-((B1-3)^2)  5&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;Source (EN): https://www.sulprobil.de/sbcellwatermarks_en/&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;Source (DE): https://www.berndplumhoff.de/sbcellwatermarks_de/&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;(C) (P) by Bernd Plumhoff 24-Jul-2011 PB V0.21&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Dim&lt;/span&gt; i &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Long&lt;/span&gt;, k &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Long&lt;/span&gt;, p &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Long&lt;/span&gt;, v &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Variant&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;Check input parameters thoroughly because we will switch off events&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;Not&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;TypeOf&lt;/span&gt; rCell &lt;span style=&#34;color:#00f&#34;&gt;Is&lt;/span&gt; Range &lt;span style=&#34;color:#00f&#34;&gt;Or&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;Not&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;TypeOf&lt;/span&gt; rOutput &lt;span style=&#34;color:#00f&#34;&gt;Is&lt;/span&gt; Range &lt;span style=&#34;color:#00f&#34;&gt;Then&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#00f&#34;&gt;Call&lt;/span&gt; MsgBox(&lt;span style=&#34;color:#a31515&#34;&gt;&amp;#34;Input cell or output area are not of type RANGE!&amp;#34;&lt;/span&gt;, _&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            vbOKOnly, &lt;span style=&#34;color:#a31515&#34;&gt;&amp;#34;Error&amp;#34;&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#00f&#34;&gt;Exit&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;Sub&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;End &lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt; rCell.Count &amp;lt;&amp;gt; 1 &lt;span style=&#34;color:#00f&#34;&gt;Then&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#00f&#34;&gt;Call&lt;/span&gt; MsgBox(&lt;span style=&#34;color:#a31515&#34;&gt;&amp;#34;Input range should contain only 1 cell!&amp;#34;&lt;/span&gt;, _&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            vbOKOnly, &lt;span style=&#34;color:#a31515&#34;&gt;&amp;#34;Error&amp;#34;&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#00f&#34;&gt;Exit&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;Sub&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;End &lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt; rCell.HasFormula &lt;span style=&#34;color:#00f&#34;&gt;Then&lt;/span&gt; p = rCell.DirectPrecedents.Count&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt; rOutput.Rows.Count &amp;lt; 2 &lt;span style=&#34;color:#00f&#34;&gt;Or&lt;/span&gt; rOutput.Columns.Count &amp;lt; 3 + p &lt;span style=&#34;color:#00f&#34;&gt;Then&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#00f&#34;&gt;Call&lt;/span&gt; MsgBox(&lt;span style=&#34;color:#a31515&#34;&gt;&amp;#34;Output range should contain at least 2 rows and &amp;#34;&lt;/span&gt; &amp;amp; _&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            3 + p &amp;amp; &lt;span style=&#34;color:#a31515&#34;&gt;&amp;#34; columns!&amp;#34;&lt;/span&gt;, vbOKOnly, &lt;span style=&#34;color:#a31515&#34;&gt;&amp;#34;Error&amp;#34;&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#00f&#34;&gt;Exit&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;Sub&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;End &lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Application.EnableEvents = &lt;span style=&#34;color:#00f&#34;&gt;False&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;k = Application.Calculation&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Application.Calculation = xlCalculationManual&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;rCell.Calculate&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt; rCell.FormulaLocal &amp;lt;&amp;gt; rOutput(1, 3) &lt;span style=&#34;color:#00f&#34;&gt;Then&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;If formula changed reset statistics&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&lt;/span&gt;    rOutput.ClearContents&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    rOutput(1, 1) = rCell&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    rOutput(2, 1) = rCell&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    rOutput(1, 2) = Now&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    rOutput(2, 2) = rOutput(1, 2)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    rOutput(1, 3) = &lt;span style=&#34;color:#a31515&#34;&gt;&amp;#34;&amp;#39;&amp;#34;&lt;/span&gt; &amp;amp; rCell.FormulaLocal&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    rOutput(2, 3) = &lt;span style=&#34;color:#a31515&#34;&gt;&amp;#34;&amp;#39;&amp;#34;&lt;/span&gt; &amp;amp; rCell.FormulaLocal&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt; rCell.HasFormula &lt;span style=&#34;color:#00f&#34;&gt;Then&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        i = 4&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#00f&#34;&gt;For&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;Each&lt;/span&gt; v &lt;span style=&#34;color:#00f&#34;&gt;In&lt;/span&gt; rCell.DirectPrecedents&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            rOutput(1, i) = v&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            rOutput(2, i) = v&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            i = i + 1&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#00f&#34;&gt;Next&lt;/span&gt; v&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#00f&#34;&gt;End&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;ElseIf&lt;/span&gt; rCell &amp;gt; rOutput(1, 1) &lt;span style=&#34;color:#00f&#34;&gt;Then&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    rOutput(1, 1) = rCell&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    rOutput(1, 2) = Now&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt; rCell.HasFormula &lt;span style=&#34;color:#00f&#34;&gt;Then&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        i = 4&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#00f&#34;&gt;For&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;Each&lt;/span&gt; v &lt;span style=&#34;color:#00f&#34;&gt;In&lt;/span&gt; rCell.DirectPrecedents&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            rOutput(1, i) = v&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            i = i + 1&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#00f&#34;&gt;Next&lt;/span&gt; v&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#00f&#34;&gt;End&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;ElseIf&lt;/span&gt; rCell &amp;lt; rOutput(2, 1) &lt;span style=&#34;color:#00f&#34;&gt;Then&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    rOutput(2, 1) = rCell&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    rOutput(2, 2) = Now&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt; rCell.HasFormula &lt;span style=&#34;color:#00f&#34;&gt;Then&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        i = 4&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#00f&#34;&gt;For&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;Each&lt;/span&gt; v &lt;span style=&#34;color:#00f&#34;&gt;In&lt;/span&gt; rCell.DirectPrecedents&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            rOutput(2, i) = v&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            i = i + 1&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#00f&#34;&gt;Next&lt;/span&gt; v&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#00f&#34;&gt;End&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;End&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Application.Calculation = k&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Application.EnableEvents = &lt;span style=&#34;color:#00f&#34;&gt;True&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;End&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;Sub&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Bitte den Haftungsausschluss im &lt;a href=&#34;https://www.berndplumhoff.de/about/impressum_de/&#34; title=&#34;Impressum&#34;&gt;Impressum&lt;/a&gt; beachten.&lt;/p&gt;</description>
    </item>
    <item>
      <title>sbTimeDiff (VBA)</title>
      <link>https://www.berndplumhoff.de/sbtimediff_de/</link>
      <pubDate>Wed, 27 May 2026 02:17:00 +0100</pubDate>
      <guid>https://www.berndplumhoff.de/sbtimediff_de/</guid>
      <description>&lt;p&gt;&lt;strong&gt;&amp;ldquo;Patriotism is supporting your country all the time, and your government when it deserves it.&amp;rdquo; [Mark Twain]&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Name&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;em&gt;sbTimeDiff()&lt;/em&gt; - Berechne die Zeit zwischen zwei Zeitpunkten, aber zähle lediglich die&#xA;spezifizierten Zeiten pro Wochentag oder Feiertag minus Pausen, falls die tägliche Arbeitszeit&#xA;definierte Grenzwerte überschreitet.&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Synopsis&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;sbTimeDiff(&lt;em&gt;dtFrom&lt;/em&gt;, &lt;em&gt;dtTo&lt;/em&gt;, &lt;em&gt;vwh&lt;/em&gt; [, &lt;em&gt;vHolidays&lt;/em&gt;] [, &lt;em&gt;vBreaks&lt;/em&gt;])&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Beschreibung&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;Berechnet die Zeit zwischen zwei Zeitpunkten, aber zähle lediglich die&#xA;spezifizierten Zeiten pro Wochentag oder Feiertag minus Pausen, falls die tägliche Arbeitszeit&#xA;definierte Grenzwerte überschreitet.&lt;/p&gt;</description>
    </item>
    <item>
      <title>sbTimeAdd (VBA)</title>
      <link>https://www.berndplumhoff.de/sbtimeadd_de/</link>
      <pubDate>Wed, 27 May 2026 02:16:00 +0100</pubDate>
      <guid>https://www.berndplumhoff.de/sbtimeadd_de/</guid>
      <description>&lt;p&gt;&lt;strong&gt;&amp;ldquo;Age is an issue of mind over matter. If you don’t mind, it doesn’t matter.&amp;rdquo; [Mark Twain]&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Name&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;em&gt;sbTimeAdd()&lt;/em&gt; - Addiere eine positive Zeit zu einem Datum mit Uhrzeit, wobei lediglich&#xA;spezifizierte Zeitintervalle pro Wochentag und Feiertag berücksichtigt werden und&#xA;auch eine definierte tägliche Pausenzeit abgezogen wird, falls die entsprechende tägliche&#xA;definierte Arbeitszeit überschritten wird.&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Synopsis&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;sbTimeAdd(&lt;em&gt;dt&lt;/em&gt;, &lt;em&gt;dh&lt;/em&gt;, &lt;em&gt;vwh&lt;/em&gt; [, &lt;em&gt;vHolidays&lt;/em&gt;] [, &lt;em&gt;dtBreakLimit&lt;/em&gt;] [, &lt;em&gt;dtBreakDuration&lt;/em&gt;])&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Beschreibung&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;Addiere eine positive Zeit zu einem Datum mit Uhrzeit, wobei lediglich&#xA;spezifizierte Zeitintervalle pro Wochentag und Feiertag berücksichtigt werden und&#xA;auch eine definierte tägliche Pausenzeit abgezogen wird, falls die entsprechende tägliche&#xA;definierte Arbeitszeit überschritten wird.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Value at Risk</title>
      <link>https://www.berndplumhoff.de/value_at_risk_de/</link>
      <pubDate>Tue, 26 May 2026 17:42:00 +0100</pubDate>
      <guid>https://www.berndplumhoff.de/value_at_risk_de/</guid>
      <description>&lt;p&gt;&lt;strong&gt;&amp;ldquo;Even the youngest of us may be wrong sometimes.&amp;rdquo; [George Bernard Shaw]&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;abstract&#34;&gt;Abstract&lt;/h2&gt;&#xA;&lt;p&gt;Value at Risk (VaR) ist das am häufigsten verwendete Maß für den Betrag,&#xA;der aus einer Position oder einem Portfolio verloren gehen könnte.&lt;/p&gt;&#xA;&lt;p&gt;VaR wird als der maximale Verlust verstanden,&#xA;der bei einem gegebenen Konfidenzniveau über einen festgelegten Zeitraum auftreten könnte.&#xA;Genauer gesagt, ist es der Schwellenwert, bei dem die Wahrscheinlichkeit,&#xA;dass der Mark-to-Market-Verlust des Portfolios über diesen Zeitraum diesen Wert überschreitet,&#xA;dem vorgegebenen Wahrscheinlichkeitsniveau entspricht.&#xA;Wir gehen von normalen Märkten aus, und es findet kein Handel im Portfolio statt.&lt;/p&gt;</description>
    </item>
    <item>
      <title>sbGetCell (VBA)</title>
      <link>https://www.berndplumhoff.de/sbgetcell_de/</link>
      <pubDate>Mon, 25 May 2026 10:39:00 +0100</pubDate>
      <guid>https://www.berndplumhoff.de/sbgetcell_de/</guid>
      <description>&lt;h2 id=&#34;abstract&#34;&gt;Abstract&lt;/h2&gt;&#xA;&lt;p&gt;In älteren Excel Versionen konnte man mit dem Excel4 Makro ZELLE.ZUORDNEN interessante Zellinformationen ausgeben.&#xA;Zum Beispiel konnte man den Namen &lt;em&gt;HatFormel&lt;/em&gt; mit dem Wert&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;=ZELLE.ZUORDNEN(48;INDIREKT(&amp;#34;ZS(-1)&amp;#34;;FALSCH))&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;im Namensmanager definieren. Wenn Sie dann &lt;em&gt;=HatFormel&lt;/em&gt; in der Zelle rechts neben einer gewünschten Zelle eingegeben&#xA;hätten, dann würde diese anzeigen ob die gewünschte Zelle eine Formel enthält (&amp;ldquo;WAHR&amp;rdquo;) oder nicht (&amp;ldquo;FALSCH&amp;rdquo;).&lt;/p&gt;&#xA;&lt;p&gt;Sie können mit VBA ähnliche Informationen ausgeben lassen.&lt;/p&gt;&#xA;&lt;h2 id=&#34;parameter&#34;&gt;Parameter&lt;/h2&gt;&#xA;&lt;hr&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th style=&#34;text-align: right&#34;&gt;Get.Cell Parameter&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;sbGetCell Parameter&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Kommentar&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: right&#34;&gt;1&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;AbsReference&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Absolute Referenz der linken oberen Zelle im Bezug, als Text im aktuellen Arbeitsbereichs-Referenzstil&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: right&#34;&gt;2&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;RowNumber&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Zeilennummer der obersten Zelle im Bezug&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: right&#34;&gt;3&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;ColumnNumber&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Spaltennummer der linken Zelle im Bezug&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: right&#34;&gt;4&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Type&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Entspricht TYP(Referenz): 1=Zahl, 2=Text, 4=Wahrheitswert, 16=Fehlerwert, 64=Matrix, 128=Verbunddaten&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: right&#34;&gt;5&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Contents&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Inhalt der Referenz&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: right&#34;&gt;6&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;FormulaLocal, ShowFormula&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Formel in der Referenz als Text, entweder im A1- oder R1C1-Stil abhängig von der Arbeitsbereichseinstellung&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: right&#34;&gt;7&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;NumberFormat&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Zahlenformat der Zelle als Text (z. B. &amp;ldquo;TT.MM.JJJJ&amp;rdquo; oder &amp;ldquo;Standard&amp;rdquo;)&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: right&#34;&gt;8&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Horizontal alignment&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Zahl zur Angabe der horizontalen Zellenausrichtung: 1=Allgemein, 2=Links, 3=Zentriert, 4=Rechts, 5=Füllen, 6=Blocksatz, 7=Zentriert über Auswahl&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: right&#34;&gt;9&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;LeftBorderStyle&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Zahl zur Angabe des linken Rahmenstils der Zelle: 0=Kein, 1=Dünn, 2=Mittel, 3=Gestrichelt, 4=Gepunktet, 5=Dick, 6=Doppelt, 7=Haarlinie, 8=Mittig gestrichelt, 9=Strich-Punkt, 10=Mittig Strich-Punkt, 11=Strich-Punkt-Punkt, 12=Mittig Strich-Punkt-Punkt, 13=Schräg Strich-Punkt&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: right&#34;&gt;10&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;RightBorderStyle&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Zahl zur Angabe des rechten Rahmenstils der Zelle: 0=Kein, 1=Dünn, 2=Mittel, 3=Gestrichelt, 4=Gepunktet, 5=Dick, 6=Doppelt, 7=Haarlinie, 8=Mittig gestrichelt, 9=Strich-Punkt, 10=Mittig Strich-Punkt, 11=Strich-Punkt-Punkt, 12=Mittig Strich-Punkt-Punkt, 13=Schräg Strich-Punkt&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: right&#34;&gt;11&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;TopBorderStyle&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Zahl zur Angabe des oberen Rahmenstils der Zelle: 0=Kein, 1=Dünn, 2=Mittel, 3=Gestrichelt, 4=Gepunktet, 5=Dick, 6=Doppelt, 7=Haarlinie, 8=Mittig gestrichelt, 9=Strich-Punkt, 10=Mittig Strich-Punkt, 11=Strich-Punkt-Punkt, 12=Mittig Strich-Punkt-Punkt, 13=Schräg Strich-Punkt&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: right&#34;&gt;12&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;BottomBorderStyle&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Zahl zur Angabe des unteren Rahmenstils der Zelle: 0=Kein, 1=Dünn, 2=Mittel, 3=Gestrichelt, 4=Gepunktet, 5=Dick, 6=Doppelt, 7=Haarlinie, 8=Mittig gestrichelt, 9=Strich-Punkt, 10=Mittig Strich-Punkt, 11=Strich-Punkt-Punkt, 12=Mittig Strich-Punkt-Punkt, 13=Schräg Strich-Punkt&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: right&#34;&gt;13&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Pattern&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Zellmuster, 0-18&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: right&#34;&gt;14&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;IsLocked&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Gibt an, ob die Zelle gesperrt ist&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: right&#34;&gt;15&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;HiddenFormula&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Gibt an, ob die Formel ausgeblendet ist&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: right&#34;&gt;16&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;CellWidth&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Breite sowie Angabe, ob sie sich mit der Standardbreite ändert; zweielementiges horizontales Array&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: right&#34;&gt;17&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;RowHeight&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Zeilenhöhe&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: right&#34;&gt;18&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;FontName&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Schriftartname&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: right&#34;&gt;19&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;FontSize&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Schriftgröße&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: right&#34;&gt;20&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;IsBold&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Gibt an, ob der Text fett dargestellt ist&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: right&#34;&gt;21&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;IsItalic&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Gibt an, ob der Text kursiv dargestellt ist&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: right&#34;&gt;22&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;IsUnderlined&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Gibt an, ob der Text unterstrichen ist&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: right&#34;&gt;23&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;IsStruckThrough&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Gibt an, ob der Text durchgestrichen ist&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: right&#34;&gt;24&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;FontColorIndex&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Schriftfarbindex des ersten Zeichens, 1-56, 0 bei automatischer Farbe&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: right&#34;&gt;25&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;IsOutlined&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Nicht unterstützt von MS Excel&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: right&#34;&gt;26&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;IsShaddowed&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Nicht unterstützt von MS Excel&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: right&#34;&gt;27&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;PageBreak&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;0 = kein Umbruch, 1 = Zeile, 2 = Spalte, 3 = Zeile und Spalte&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: right&#34;&gt;28&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;RowLevelOutline&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Gliederungsebene der Zeile&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: right&#34;&gt;29&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;ColumnLevelOutline&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Gliederungsebene der Spalte&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: right&#34;&gt;30&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;IsSummaryRow&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Gibt an, ob es sich um eine Summenzeile handelt&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: right&#34;&gt;31&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;IsSummaryColumn&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Gibt an, ob es sich um eine Summenspalte handelt&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: right&#34;&gt;32&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;WorkbookSheetName&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Name des Tabellenblatts im Format &amp;ldquo;[Book1]Sheet1&amp;rdquo; oder BOOK1.XLS, wenn das einzige Blatt denselben Namen wie die Arbeitsmappe hat&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: right&#34;&gt;33&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;IsWrapped&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Gibt an, ob der Textumbruch aktiviert ist&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: right&#34;&gt;34&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;LeftBorderColorIndex&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Farbindex des linken Rahmens&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: right&#34;&gt;35&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;RightBorderColorIndex&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Farbindex des rechten Rahmens&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: right&#34;&gt;36&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;TopBorderColorIndex&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Farbindex des oberen Rahmens&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: right&#34;&gt;37&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;BottomBorderColorIndex&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Farbindex des unteren Rahmens&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: right&#34;&gt;38&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;ShadeForeGroundColor&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Vordergrundfarbe der Schattierung&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: right&#34;&gt;39&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;ShadeBackGroundColor&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Hintergrundfarbe der Schattierung&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: right&#34;&gt;40&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;TextStyle&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Textstil&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: right&#34;&gt;41&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;FormulaWOT&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Formel ohne Übersetzung&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: right&#34;&gt;46&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;HasNote&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Enthält die Zelle eine Textnotiz?&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: right&#34;&gt;47&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;HasSound&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Nicht unterstützt. Soundnotizen wurden aus MS Excel entfernt&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: right&#34;&gt;48&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;HasFormula&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Gibt WAHR zurück, wenn die Zelle eine Formel enthält, andernfalls FALSCH bei Konstanten&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: right&#34;&gt;49&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;IsArray&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Gibt WAHR zurück, wenn die Zelle Teil eines Arrays ist, andernfalls FALSCH&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: right&#34;&gt;50&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;VerticalAlignment&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;1 = Oben, 2 = Zentriert, 3 = Unten, 4 = Blocksatz, 5 = Verteilt&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: right&#34;&gt;51&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;VerticalOrientation&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;0 = Horizontal, 1 = Vertikal, 2 = Aufwärts, 3 = Abwärts&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: right&#34;&gt;52&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;IsStringConstant&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Gibt ein Apostroph zurück, wenn die Eingabezelle eine Zeichenkettenkonstante ist&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: right&#34;&gt;53&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;AsText&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Inhalt der Zelle so, wie er aktuell angezeigt wird, als Text einschließlich zusätzlicher Zahlen oder Symbole durch die Zellformatierung&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: right&#34;&gt;54&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;PivotTableViewName&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Gibt den Namen der PivotTable-Ansicht zurück, die die aktive Zelle enthält&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: right&#34;&gt;56&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;PivotTableViewFieldName&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Gibt den Namen des Felds zurück, das die aktive Zellreferenz enthält, falls sie sich innerhalb einer PivotTable-Ansicht befindet&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: right&#34;&gt;57&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;IsSuperscript&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Gibt an, ob der Text hochgestellt ist&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: right&#34;&gt;58&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;FontStyleText&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Schriftstiltext aller Stile in der Zelle&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: right&#34;&gt;59&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;UnderlineStyle&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;1 = keine, 2 = einfach, 3 = doppelt, 4 = einfache Buchhaltungsunterstreichung, 5 = doppelte Buchhaltungsunterstreichung&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: right&#34;&gt;60&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;IsSubscript&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Gibt an, ob der Text tiefgestellt ist&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: right&#34;&gt;61&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;PivotTableItemName&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Zu Demonstrationszwecken bezogen auf Zelle B86&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: right&#34;&gt;62&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;WorksheetName&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Arbeitsblattname wie [Arbeitsmappe1.xls]Tabelle1&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: right&#34;&gt;65&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;IsAddIndentAlignment&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Nicht unterstützt&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: right&#34;&gt;66&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;WorkbookName&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Name der Arbeitsmappe, die die Zelle enthält, im Format BOOK1.XLS&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: right&#34;&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;IsHidden&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Gibt an, ob die Zelle ausgeblendet ist&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;appendix--programmcode-sbgetcell&#34;&gt;Appendix – Programmcode sbGetCell&lt;/h2&gt;&#xA;&lt;p&gt;Bitte den Haftungsausschluss im &lt;a href=&#34;https://www.berndplumhoff.de/about/impressum_de/&#34; title=&#34;Impressum&#34;&gt;Impressum&lt;/a&gt; beachten.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Datumsformeln testen (Excel)</title>
      <link>https://www.berndplumhoff.de/datumsformeln_testen_de/</link>
      <pubDate>Mon, 25 May 2026 10:31:00 +0100</pubDate>
      <guid>https://www.berndplumhoff.de/datumsformeln_testen_de/</guid>
      <description>&lt;h2 id=&#34;abstract&#34;&gt;Abstract&lt;/h2&gt;&#xA;&lt;p&gt;Wie stelle ich sicher, dass eine Excel Datumsformel korrekt ist?&lt;/p&gt;&#xA;&lt;p&gt;Ich teste sie!&lt;/p&gt;&#xA;&lt;p&gt;So geht es am besten:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Ich generiere alle Tage des relevanten Datumsbereiches in Spalte A. Zum Beispiel 1-Jan-1901 bis 31-Dez-2099.&lt;/li&gt;&#xA;&lt;li&gt;Ich gebe alle in Frage kommenden Formeln nebeneinander in die Spalten B und folgende ein und kopiere sie nach unten.&lt;/li&gt;&#xA;&lt;li&gt;Ich vergleiche alle Ergebnisse mit der Referenzformel in Spalte B.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;beispiel&#34;&gt;Beispiel&lt;/h2&gt;&#xA;&lt;p&gt;Wieviele ISO-Kalenderwochen berührt ein gegebener Monat?&lt;/p&gt;</description>
    </item>
    <item>
      <title>sbEAN (VBA)</title>
      <link>https://www.berndplumhoff.de/sbean_de/</link>
      <pubDate>Mon, 25 May 2026 10:28:00 +0100</pubDate>
      <guid>https://www.berndplumhoff.de/sbean_de/</guid>
      <description>&lt;h2 id=&#34;abstract&#34;&gt;Abstract&lt;/h2&gt;&#xA;&lt;p&gt;Falls Sie eine Europäische Artikel Nummer (EAN)&#xA;berechnen oder prüfen müssen:&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://www.berndplumhoff.de/sbEAN.png&#34; alt=&#34;sbEAN&#34;&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;siehe-auch&#34;&gt;Siehe auch&lt;/h2&gt;&#xA;&lt;p&gt;Zum Vergleich siehe (externer Link!) &lt;a href=&#34;https://www.jrdrucksysteme.de/blog/gs-1-ean-13-pruefziffer-berechnen-und-testen/&#34;&gt;Prüfziffer berechnen und testen&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;h2 id=&#34;appendix-programmcode-sbean&#34;&gt;Appendix Programmcode sbEAN&lt;/h2&gt;&#xA;&lt;p&gt;Bitte den Haftungsausschluss im &lt;a href=&#34;https://www.berndplumhoff.de/about/impressum_de/&#34; title=&#34;Impressum&#34;&gt;Impressum&lt;/a&gt; beachten.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-VB.net&#34; data-lang=&#34;VB.net&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Option&lt;/span&gt; Explicit&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Function&lt;/span&gt; sbEAN(s &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;String&lt;/span&gt;, _&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#00f&#34;&gt;Optional&lt;/span&gt; bFullEAN &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Boolean&lt;/span&gt; = &lt;span style=&#34;color:#00f&#34;&gt;True&lt;/span&gt;, _&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#00f&#34;&gt;Optional&lt;/span&gt; bEAN14 &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Boolean&lt;/span&gt; = &lt;span style=&#34;color:#00f&#34;&gt;False&lt;/span&gt;) &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Variant&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;Calculate or check EAN check digit. Works for EAN-8,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;EAN-13, EAN-14 / GTIN, and for EAN-18 / NVE / SSCC.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;If EAN is given without check digit, it is calculated&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;and returned (full EAN if bFullEAn is True or just the&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;check digit if False). If full EAN is entered the&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;result of the check (True or False) will be returned.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;Source (EN): https://www.sulprobil.de/sbean_en/&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;Source (DE): https://www.berndplumhoff.de/sbean_de/&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;(C) (P) by Bernd Plumhoff 31-Mar-2024 PB V0.3&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Dim&lt;/span&gt; i &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Long&lt;/span&gt;, d &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Long&lt;/span&gt;, m &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Long&lt;/span&gt;, w &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Long&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Dim&lt;/span&gt; bCheck &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Boolean&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;m = Len(s)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;For&lt;/span&gt; i = 1 &lt;span style=&#34;color:#00f&#34;&gt;To&lt;/span&gt; m&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  w = Asc(Mid(s, i, 1))&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt; w &amp;lt; 48 &lt;span style=&#34;color:#00f&#34;&gt;Or&lt;/span&gt; w &amp;gt; 57 &lt;span style=&#34;color:#00f&#34;&gt;Then&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    sbEAN = CVErr(xlErrNum)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#00f&#34;&gt;Exit&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;Function&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  End &lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Next&lt;/span&gt; i&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt; bEAN14 &lt;span style=&#34;color:#00f&#34;&gt;Then&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt; m = 13 &lt;span style=&#34;color:#00f&#34;&gt;Then&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    bCheck = &lt;span style=&#34;color:#00f&#34;&gt;False&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#00f&#34;&gt;ElseIf&lt;/span&gt; m = 14 &lt;span style=&#34;color:#00f&#34;&gt;Then&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    bCheck = &lt;span style=&#34;color:#00f&#34;&gt;True&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    m = m - 1 &lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;Calculate checksum without check digit&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&lt;/span&gt;  &lt;span style=&#34;color:#00f&#34;&gt;Else&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    sbEAN = CVErr(xlErrValue)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#00f&#34;&gt;Exit&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;Function&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  End &lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Else&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#00f&#34;&gt;Select&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;Case&lt;/span&gt; m&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#00f&#34;&gt;Case&lt;/span&gt; 7, 12, 17&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    bCheck = &lt;span style=&#34;color:#00f&#34;&gt;False&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#00f&#34;&gt;Case&lt;/span&gt; 8, 13, 18&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    bCheck = &lt;span style=&#34;color:#00f&#34;&gt;True&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    m = m - 1 &lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;Calculate checksum without check digit&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&lt;/span&gt;  &lt;span style=&#34;color:#00f&#34;&gt;Case&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;Else&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    sbEAN = CVErr(xlErrValue)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#00f&#34;&gt;Exit&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;Function&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  End &lt;span style=&#34;color:#00f&#34;&gt;Select&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;End&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;w = 3&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;For&lt;/span&gt; i = m &lt;span style=&#34;color:#00f&#34;&gt;To&lt;/span&gt; 1 &lt;span style=&#34;color:#00f&#34;&gt;Step&lt;/span&gt; -1&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    d = d + Mid(s, i, 1) * w&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    w = 4 - w &lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;Alternate between 3 and 1&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Next&lt;/span&gt; i&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;d = (10 - d &lt;span style=&#34;color:#00f&#34;&gt;Mod&lt;/span&gt; 10) &lt;span style=&#34;color:#00f&#34;&gt;Mod&lt;/span&gt; 10&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt; bCheck &lt;span style=&#34;color:#00f&#34;&gt;Then&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  sbEAN = Right(s, 1) = d&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;ElseIf&lt;/span&gt; bFullEAN &lt;span style=&#34;color:#00f&#34;&gt;Then&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  sbEAN = s &amp;amp; d&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Else&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  sbEAN = d&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;End&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;End&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;Function&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;download&#34;&gt;Download&lt;/h2&gt;&#xA;&lt;p&gt;Bitte den Haftungsausschluss im &lt;a href=&#34;https://www.berndplumhoff.de/about/impressum_de/&#34; title=&#34;Impressum&#34;&gt;Impressum&lt;/a&gt; beachten.&lt;/p&gt;</description>
    </item>
    <item>
      <title>sbInWorten (VBA)</title>
      <link>https://www.berndplumhoff.de/sbinworten_de/</link>
      <pubDate>Mon, 25 May 2026 06:43:00 +0100</pubDate>
      <guid>https://www.berndplumhoff.de/sbinworten_de/</guid>
      <description>&lt;p&gt;&lt;strong&gt;&amp;ldquo;Die Zahl regiert das Universum.&amp;rdquo; [Pythagoras]&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;abstract&#34;&gt;Abstract&lt;/h2&gt;&#xA;&lt;p&gt;Manchmal müssen Sie Zahlen in Worten ausgeben, z. B. in Euro/Cent&#xA;oder in Dollars/Cents oder in britischen Pfund Sterling/Pence.&#xA;12,31 würde zum Beispiel als &amp;ldquo;Zwölf Euro und Einunddreißig Cent&amp;rdquo; ausgegeben werden.&lt;/p&gt;&#xA;&lt;p&gt;Hinweis: Im Web existiert eine Vielzahl von SpellNumber- und InWorten-Versionen.&#xA;Leider sind die meisten davon fehlerhaft. Testen Sie am besten mit den hier genannten&#xA;Beispielzahlen:&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://www.berndplumhoff.de/sbSpellNumber.png&#34; alt=&#34;sbSpellNumber&#34;&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;appendix--programmcode-sbspellnumber--sbinworten&#34;&gt;Appendix – Programmcode sbSpellNumber / sbInWorten&lt;/h2&gt;&#xA;&lt;p&gt;Bitte den Haftungsausschluss im &lt;a href=&#34;https://www.berndplumhoff.de/about/impressum_de/&#34; title=&#34;Impressum&#34;&gt;Impressum&lt;/a&gt; beachten.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Optimale Ausnutzung von Ferientagen (VBA)</title>
      <link>https://www.berndplumhoff.de/sboptimalvacationdays_de/</link>
      <pubDate>Mon, 25 May 2026 06:42:00 +0100</pubDate>
      <guid>https://www.berndplumhoff.de/sboptimalvacationdays_de/</guid>
      <description>&lt;p&gt;&lt;strong&gt;&amp;ldquo;I need a vacation.&amp;rdquo; [Arnold Schwarzenegger als T-800 in Terminator 2]&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;abstract&#34;&gt;Abstract&lt;/h2&gt;&#xA;&lt;p&gt;Jedes Jahr stellt sich für die Berufstätigen unter uns die Frage,&#xA;wann wir unseren Urlaub nehmen sollten.&lt;/p&gt;&#xA;&lt;p&gt;Dieses Programm zeigt Ihnen, mit wieviel Urlaubstagen Sie&#xA;welche Gesamtzahl an freien Tagen erreichen können:&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://www.berndplumhoff.de/sbOptimalVacationDays.png&#34; alt=&#34;sbOptimalVacationDays&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Beispiel: Mit den angegebenen Feiertagen können Sie 2024 mit 7 Urlaubstagen&#xA;16 Tage vom 14. Dezember 2024 bis 29. Dezember 2024 frei nehmen.&#xA;Mehr kann man mit 7 Tagen Urlaub 2024 nicht erreichen, wie die&#xA;zweitbeste Lösung beweist (da sind es lediglich 14 freie Tage).&lt;/p&gt;</description>
    </item>
    <item>
      <title>sbTasklist (VBA)</title>
      <link>https://www.berndplumhoff.de/sbtasklist_de/</link>
      <pubDate>Mon, 25 May 2026 03:25:00 +0100</pubDate>
      <guid>https://www.berndplumhoff.de/sbtasklist_de/</guid>
      <description>&lt;p&gt;&lt;strong&gt;&amp;ldquo;Patience has its limits. Take it too far, and it is cowardice.&amp;rdquo; [George Jackson]&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;abstract&#34;&gt;Abstract&lt;/h2&gt;&#xA;&lt;p&gt;Falls Ihr Team viele verschiedene manuelle Aufgaben erledigen muss,&#xA;nicht alle täglich sondern auch an unterschiedlichen Wochentagen oder Arbeitstagen im Monat,&#xA;dann könnte diese Aufgabenliste sie unterstützen.&lt;/p&gt;&#xA;&lt;p&gt;Im Arbeitsblatt Param geben Sie Ihren Teamnamen oder eine andere Referenz ein, die im&#xA;Fußbereich jeder Seite erscheinen soll, und auch den Arbeitstag:&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://www.berndplumhoff.de/sbTasklist_Param.png&#34; alt=&#34;sbTasklist_Param&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Im Arbeitsblatt RawData definieren Sie welche Aufgaben täglich, wöchentlich, oder monatlich&#xA;zu welchen Zeiten durchgeführt werden müssen.&#xA;Sie müssen diese Aufgaben nicht nach der Uhrzeit sortieren, aber es könnte hilfreich sein:&lt;/p&gt;</description>
    </item>
    <item>
      <title>RoundToSum (VBA)</title>
      <link>https://www.berndplumhoff.de/roundtosum_de/</link>
      <pubDate>Mon, 25 May 2026 03:14:00 +0100</pubDate>
      <guid>https://www.berndplumhoff.de/roundtosum_de/</guid>
      <description>&lt;p&gt;&lt;strong&gt;&amp;ldquo;Every fool can know. The point is to understand.&amp;rdquo; [Albert Einstein]&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;summenerhaltendes-runden&#34;&gt;Summenerhaltendes Runden&lt;/h2&gt;&#xA;&lt;p&gt;Gerundete Werte ergeben zusammen nicht immer ihre gerundete Summe.&#xA;Wie stelle ich sicher, dass meine Aufstellung von gerundeten Prozentzahlen genau 100% ergibt?&#xA;Kann ich für meine Buch¬haltung sicherstellen, dass meine Gemeinkostenverrechnung genau die&#xA;originale Kostensumme verteilt? Diese Fragen sind seit langem bekannt und wurden oft analysiert.&lt;/p&gt;&#xA;&lt;p&gt;In diesem Dokument wird eine einfach nutzbare Lösung mit Excel / VBA vorgestellt.&#xA;Sie kann relative Werte (Prozentzahlen) auf 100% runden oder absolute Werte&#xA;(z. B. Kostenrechnungsergebnisse) runden, ohne deren gerundete Summe zu verändern.&#xA;Dabei kann je nach Parameter im Vergleich zur üblichen kaufmännischen Rundung der&#xA;absolute Fehler oder der relative Fehler minimal gehalten werden.&lt;/p&gt;</description>
    </item>
    <item>
      <title>sbZip (VBA)</title>
      <link>https://www.berndplumhoff.de/sbzip_de/</link>
      <pubDate>Sun, 24 May 2026 08:04:00 +0100</pubDate>
      <guid>https://www.berndplumhoff.de/sbzip_de/</guid>
      <description>&lt;h2 id=&#34;abstract&#34;&gt;Abstract&lt;/h2&gt;&#xA;&lt;p&gt;Mit VBA kann man leicht einen Ordner oder eine Datei im Zip-Format komprimieren.&lt;/p&gt;&#xA;&lt;p&gt;Diese Variante ist meine bevorzugte:&lt;/p&gt;&#xA;&lt;h2 id=&#34;appendix--sbzip-code&#34;&gt;Appendix – sbZip Code&lt;/h2&gt;&#xA;&lt;p&gt;Bitte den Haftungsausschluss im &lt;a href=&#34;https://www.berndplumhoff.de/about/impressum_de/&#34; title=&#34;Impressum&#34;&gt;Impressum&lt;/a&gt; beachten.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-VB.net&#34; data-lang=&#34;VB.net&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Option&lt;/span&gt; Explicit&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;#Const&lt;/span&gt; SBZIP_LOG = &lt;span style=&#34;color:#00f&#34;&gt;True&lt;/span&gt; &lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;Use sbZip with logging (True) or not (False)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Sub&lt;/span&gt; sbZip(&lt;span style=&#34;color:#00f&#34;&gt;ByVal&lt;/span&gt; vSourceFullPathName &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Variant&lt;/span&gt;, _&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#00f&#34;&gt;ByVal&lt;/span&gt; vDestinationZipFullPathName &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Variant&lt;/span&gt;, _&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#00f&#34;&gt;Optional&lt;/span&gt; bCreate &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Boolean&lt;/span&gt; = &lt;span style=&#34;color:#00f&#34;&gt;True&lt;/span&gt;, _&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#00f&#34;&gt;Optional&lt;/span&gt; bUse7zip &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Boolean&lt;/span&gt; = &lt;span style=&#34;color:#00f&#34;&gt;False&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;Create zip file vDestinationZipFullPathName and insert zipped file or folder vSourceFullPathName.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;This sub is using LibFileTools, https://github.com/cristianbuse/VBA-FileTools.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;If bUse7zip:=True then 7zip needs to be installed at C:\Program Files\7-Zip\7z.exe.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;Version When        Who   What&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;     14 08-May-2025 Bernd Overwrite zip constituent (by moving it to Temp)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;                          without warning message that it already exists&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;     15 25-Dec-2025 Bernd Use #If SBZIP_LOG&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Dim&lt;/span&gt; iFile     &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Integer&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Dim&lt;/span&gt; lItems    &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Long&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Dim&lt;/span&gt; lRepeat   &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Long&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Dim&lt;/span&gt; sBasename &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;String&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Dim&lt;/span&gt; sLine     &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;String&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Dim&lt;/span&gt; sShellCmd &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;String&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Dim&lt;/span&gt; sPath     &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;String&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Dim&lt;/span&gt; v         &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Variant&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Dim&lt;/span&gt; oExec     &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Object&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Dim&lt;/span&gt; oOutput   &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Object&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Dim&lt;/span&gt; oShell    &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Object&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;#If SBZIP_LOG Then&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Dim&lt;/span&gt; GLogger   &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; clsLog&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;#End If&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;#If MEASURE_RUNTIME Then&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Dim&lt;/span&gt; cPerf     &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; clsPerf &lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;See: https://jkp-ads.com/Articles/performanceclass.asp&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Set&lt;/span&gt; cPerf = &lt;span style=&#34;color:#00f&#34;&gt;New&lt;/span&gt; clsPerf&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;cPerf.SetRoutine &lt;span style=&#34;color:#a31515&#34;&gt;&amp;#34;sbZip&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;#End If&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;#If SBZIP_LOG Then&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Set&lt;/span&gt; GLogger = &lt;span style=&#34;color:#00f&#34;&gt;New&lt;/span&gt; clsLog&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;g_log_params.log_sub_name = &lt;span style=&#34;color:#a31515&#34;&gt;&amp;#34;sbZip&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;GLogger.info &lt;span style=&#34;color:#a31515&#34;&gt;&amp;#34;Started with vSourceFullPathName = &amp;#39;&amp;#34;&lt;/span&gt; &amp;amp; vSourceFullPathName &amp;amp; _&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#a31515&#34;&gt;&amp;#34;&amp;#39;, vDestinationZipFullPathName = &amp;#39;&amp;#34;&lt;/span&gt; &amp;amp; vDestinationZipFullPathName &amp;amp; _&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#a31515&#34;&gt;&amp;#34;&amp;#39;, bCreate = &amp;#34;&lt;/span&gt; &amp;amp; bCreate &amp;amp; _&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#a31515&#34;&gt;&amp;#34;&amp;#39;, bUse7zip = &amp;#34;&lt;/span&gt; &amp;amp; bUse7zip&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;#End If&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt; bCreate &lt;span style=&#34;color:#00f&#34;&gt;Then&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt; IsFile(&lt;span style=&#34;color:#00f&#34;&gt;CStr&lt;/span&gt;(vDestinationZipFullPathName)) &lt;span style=&#34;color:#00f&#34;&gt;Then&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;Not&lt;/span&gt; DeleteFile(&lt;span style=&#34;color:#00f&#34;&gt;CStr&lt;/span&gt;(vDestinationZipFullPathName)) &lt;span style=&#34;color:#00f&#34;&gt;Then&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;#If SBZIP_LOG Then&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      GLogger.warn &lt;span style=&#34;color:#a31515&#34;&gt;&amp;#34;Could not delete file &amp;#39;&amp;#34;&lt;/span&gt; &amp;amp; vDestinationZipFullPathName &amp;amp; &lt;span style=&#34;color:#a31515&#34;&gt;&amp;#34;&amp;#39;&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;#End If&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#00f&#34;&gt;End&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#00f&#34;&gt;End&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;End&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt; bUse7zip &lt;span style=&#34;color:#00f&#34;&gt;Then&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt; IsFile(&lt;span style=&#34;color:#a31515&#34;&gt;&amp;#34;C:\Program Files\7-Zip\7z.exe&amp;#34;&lt;/span&gt;) &lt;span style=&#34;color:#00f&#34;&gt;Then&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#00f&#34;&gt;Set&lt;/span&gt; oShell = CreateObject(&lt;span style=&#34;color:#a31515&#34;&gt;&amp;#34;WScript.Shell&amp;#34;&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    sShellCmd = &lt;span style=&#34;color:#a31515&#34;&gt;&amp;#34;C:\Program Files\7-Zip\7z.exe a &amp;#34;&amp;#34;&amp;#34;&lt;/span&gt; &amp;amp; vDestinationZipFullPathName &amp;amp; _&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#a31515&#34;&gt;&amp;#34;&amp;#34;&amp;#34; &amp;#34;&amp;#34;&amp;#34;&lt;/span&gt; &amp;amp; vSourceFullPathName &amp;amp; &lt;span style=&#34;color:#a31515&#34;&gt;&amp;#34;&amp;#34;&amp;#34;&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#00f&#34;&gt;Set&lt;/span&gt; oExec = oShell.exec(sShellCmd)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#00f&#34;&gt;Set&lt;/span&gt; oOutput = oExec.StdOut&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#00f&#34;&gt;Do&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;While&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;Not&lt;/span&gt; oOutput.AtEndOfStream&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      sLine = oOutput.ReadLine&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;#If SBZIP_LOG Then&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt; sLine &amp;lt;&amp;gt; &lt;span style=&#34;color:#a31515&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;Then&lt;/span&gt; GLogger.info &lt;span style=&#34;color:#a31515&#34;&gt;&amp;#34;STDOUT &amp;#34;&lt;/span&gt; &amp;amp; sLine&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;#End If&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#00f&#34;&gt;Loop&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#00f&#34;&gt;Set&lt;/span&gt; oOutput = oExec.StdErr&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#00f&#34;&gt;Do&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;While&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;Not&lt;/span&gt; oOutput.AtEndOfStream&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      sLine = oOutput.ReadLine&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;#If SBZIP_LOG Then&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt; sLine &amp;lt;&amp;gt; &lt;span style=&#34;color:#a31515&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;Then&lt;/span&gt; GLogger.warn &lt;span style=&#34;color:#a31515&#34;&gt;&amp;#34;STDERR &amp;#34;&lt;/span&gt; &amp;amp; sLine&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;#End If&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#00f&#34;&gt;Loop&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#00f&#34;&gt;Do&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;While&lt;/span&gt; oExec.Status = 0&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      Application.Wait (Now + TimeValue(&lt;span style=&#34;color:#a31515&#34;&gt;&amp;#34;0:00:01&amp;#34;&lt;/span&gt;))&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#00f&#34;&gt;Loop&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;#If SBZIP_LOG Then&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    GLogger.info vSourceFullPathName &amp;amp; &lt;span style=&#34;color:#a31515&#34;&gt;&amp;#34;&amp;#39; zipped into &amp;#39;&amp;#34;&lt;/span&gt; &amp;amp; vDestinationZipFullPathName &amp;amp; &lt;span style=&#34;color:#a31515&#34;&gt;&amp;#34;&amp;#39;&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;#End If&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#00f&#34;&gt;Else&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;#If SBZIP_LOG Then&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    GLogger.fatal &lt;span style=&#34;color:#a31515&#34;&gt;&amp;#34;C:\Program Files\7-Zip\7z.exe doesn&amp;#39;t exist. Cannot zip &amp;#39;&amp;#34;&lt;/span&gt; &amp;amp; _&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    vSourceFullPathName &amp;amp; &lt;span style=&#34;color:#a31515&#34;&gt;&amp;#34;&amp;#39;&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;#End If&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#00f&#34;&gt;End&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Else&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt; bCreate &lt;span style=&#34;color:#00f&#34;&gt;Then&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    sPath = GetLocalPath(ThisWorkbook.Path)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt; Right(sPath, 1) &amp;lt;&amp;gt; &lt;span style=&#34;color:#a31515&#34;&gt;&amp;#34;\&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;Then&lt;/span&gt; sPath = sPath &amp;amp; &lt;span style=&#34;color:#a31515&#34;&gt;&amp;#34;\&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt; IsFile(sPath &amp;amp; &lt;span style=&#34;color:#a31515&#34;&gt;&amp;#34;Zip_Template.zip&amp;#34;&lt;/span&gt;) &lt;span style=&#34;color:#00f&#34;&gt;Then&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;Workaround in case print sequence in Else clause does not work&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&lt;/span&gt;      CopyFile sPath &amp;amp; &lt;span style=&#34;color:#a31515&#34;&gt;&amp;#34;Zip_Template.zip&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#00f&#34;&gt;CStr&lt;/span&gt;(vDestinationZipFullPathName)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;Not&lt;/span&gt; IsFile(&lt;span style=&#34;color:#00f&#34;&gt;CStr&lt;/span&gt;(vDestinationZipFullPathName)) &lt;span style=&#34;color:#00f&#34;&gt;Then&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;#If SBZIP_LOG Then&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        GLogger.warn &lt;span style=&#34;color:#a31515&#34;&gt;&amp;#34;Could not copy template file &amp;#39;&amp;#34;&lt;/span&gt; &amp;amp; vDestinationZipFullPathName &amp;amp; &lt;span style=&#34;color:#a31515&#34;&gt;&amp;#34;&amp;#39;&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;#End If&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#00f&#34;&gt;End&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#00f&#34;&gt;Else&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      iFile = FreeFile&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      Open vDestinationZipFullPathName &lt;span style=&#34;color:#00f&#34;&gt;For&lt;/span&gt; Output &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; #iFile&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      Print #iFile, Chr&lt;span style=&#34;&#34;&gt;$&lt;/span&gt;(80) &amp;amp; Chr&lt;span style=&#34;&#34;&gt;$&lt;/span&gt;(75) &amp;amp; Chr&lt;span style=&#34;&#34;&gt;$&lt;/span&gt;(5) &amp;amp; Chr&lt;span style=&#34;&#34;&gt;$&lt;/span&gt;(6) &amp;amp; &lt;span style=&#34;color:#2b91af&#34;&gt;String&lt;/span&gt;(18, 0)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      Close #iFile&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#00f&#34;&gt;End&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#00f&#34;&gt;End&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#00f&#34;&gt;Set&lt;/span&gt; oShell = CreateObject(&lt;span style=&#34;color:#a31515&#34;&gt;&amp;#34;Shell.Application&amp;#34;&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#00f&#34;&gt;On&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;Error&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;Resume&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;Next&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  lItems = oShell.Namespace(vDestinationZipFullPathName).Items.Count&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#00f&#34;&gt;On&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;Error&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;GoTo&lt;/span&gt; 0&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt; GetAttr(vSourceFullPathName) = vbDirectory &lt;span style=&#34;color:#00f&#34;&gt;Then&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    oShell.Namespace(vDestinationZipFullPathName).CopyHere _&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    oShell.Namespace(vSourceFullPathName).Items, 16&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    lRepeat = 0&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#00f&#34;&gt;On&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;Error&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;Resume&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;Next&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#00f&#34;&gt;Do&lt;/span&gt; Until oShell.Namespace(vDestinationZipFullPathName).Items.Count = _&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      lItems + oShell.Namespace(vSourceFullPathName).Items.Count &lt;span style=&#34;color:#00f&#34;&gt;Or&lt;/span&gt; lRepeat &amp;gt; 5&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      Application.Wait (Now + TimeValue(&lt;span style=&#34;color:#a31515&#34;&gt;&amp;#34;0:00:01&amp;#34;&lt;/span&gt;))&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      lRepeat = lRepeat + 1&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#00f&#34;&gt;Loop&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#00f&#34;&gt;On&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;Error&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;GoTo&lt;/span&gt; 0&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#00f&#34;&gt;Else&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt; lItems &amp;gt; 0 &lt;span style=&#34;color:#00f&#34;&gt;Then&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      sBasename = Right(vSourceFullPathName, InStr(StrReverse(vSourceFullPathName), &lt;span style=&#34;color:#a31515&#34;&gt;&amp;#34;\&amp;#34;&lt;/span&gt;) - 1)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#00f&#34;&gt;For&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;Each&lt;/span&gt; v &lt;span style=&#34;color:#00f&#34;&gt;In&lt;/span&gt; oShell.Namespace(vDestinationZipFullPathName).Items&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt; v.Name = sBasename &lt;span style=&#34;color:#00f&#34;&gt;Then&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          oShell.Namespace(Environ(&lt;span style=&#34;color:#a31515&#34;&gt;&amp;#34;Temp&amp;#34;&lt;/span&gt;)).MoveHere (v)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          DeleteFile Environ(&lt;span style=&#34;color:#a31515&#34;&gt;&amp;#34;Temp&amp;#34;&lt;/span&gt;) &amp;amp; &lt;span style=&#34;color:#a31515&#34;&gt;&amp;#34;\&amp;#34;&lt;/span&gt; &amp;amp; sBasename&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#00f&#34;&gt;Exit&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;For&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#00f&#34;&gt;End&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#00f&#34;&gt;Next&lt;/span&gt; v&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#00f&#34;&gt;End&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    oShell.Namespace(vDestinationZipFullPathName).CopyHere vSourceFullPathName, 16&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    lRepeat = 0&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#00f&#34;&gt;On&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;Error&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;Resume&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;Next&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#00f&#34;&gt;Do&lt;/span&gt; Until oShell.Namespace(vDestinationZipFullPathName).Items.Count = _&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      lItems + 1 &lt;span style=&#34;color:#00f&#34;&gt;Or&lt;/span&gt; lRepeat &amp;gt; 3&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      Application.Wait (Now + TimeValue(&lt;span style=&#34;color:#a31515&#34;&gt;&amp;#34;0:00:01&amp;#34;&lt;/span&gt;))&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      lRepeat = lRepeat + 1&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#00f&#34;&gt;Loop&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#00f&#34;&gt;On&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;Error&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;GoTo&lt;/span&gt; 0&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#00f&#34;&gt;End&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;End&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;#If SBZIP_LOG Then&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;GLogger.info &lt;span style=&#34;color:#a31515&#34;&gt;&amp;#34;Beendet ohne Fehler&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;#End If&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;End&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;Sub&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;download&#34;&gt;Download&lt;/h2&gt;&#xA;&lt;p&gt;Bitte den Haftungsausschluss im &lt;a href=&#34;https://www.berndplumhoff.de/about/impressum_de/&#34; title=&#34;Impressum&#34;&gt;Impressum&lt;/a&gt; beachten.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Krabat (Excel)</title>
      <link>https://www.berndplumhoff.de/krabat_de/</link>
      <pubDate>Sun, 24 May 2026 04:06:00 +0100</pubDate>
      <guid>https://www.berndplumhoff.de/krabat_de/</guid>
      <description>&lt;h2 id=&#34;abstract&#34;&gt;Abstract&lt;/h2&gt;&#xA;&lt;p&gt;(Externer link!) &lt;a href=&#34;https://de.wikipedia.org/wiki/Krabat_(Roman)&#34; title=&#34;Krabat&#34;&gt;Krabat&lt;/a&gt; ist ein Jugendbuch von Otfried Preußler.&lt;/p&gt;&#xA;&lt;p&gt;Ich fand die Geschichte faszinierend, aber etwas unlogisch:&#xA;12 Lehrlinge arbeiten in der Mühle.&#xA;Jedes Jahr stirbt einer, und jedes Jahr wird ein neuer Lehrling im&#xA;Alter von 14 Jahren aufgenommen. Alle altern innerhalb eines Jahres&#xA;um drei Jahre.&lt;/p&gt;&#xA;&lt;p&gt;Nach 30 Jahren kann es einen Lehrling geben, der 101 Jahre alt ist:&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://www.berndplumhoff.de/Krabat_Bildschirm.png&#34; alt=&#34;Krabat_Bildschirm&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://www.berndplumhoff.de/Krabat_Formeln.png&#34; alt=&#34;Krabat_Formeln&#34;&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;download&#34;&gt;Download&lt;/h2&gt;&#xA;&lt;p&gt;Bitte den Haftungsausschluss im &lt;a href=&#34;https://www.berndplumhoff.de/about/impressum_de/&#34; title=&#34;Impressum&#34;&gt;Impressum&lt;/a&gt; beachten.&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://www.berndplumhoff.de/Krabat.xlsx&#34;&gt;Krabat.xlsx&lt;/a&gt; [16 KB Excel Datei, ohne jegliche Gewährleistung]&lt;/p&gt;</description>
    </item>
    <item>
      <title>sbNRN (VBA)</title>
      <link>https://www.berndplumhoff.de/sbnrn_de/</link>
      <pubDate>Sun, 24 May 2026 03:26:00 +0100</pubDate>
      <guid>https://www.berndplumhoff.de/sbnrn_de/</guid>
      <description>&lt;p&gt;&lt;strong&gt;&amp;ldquo;Die ganzen Zahlen hat der liebe Gott gemacht, alles andere ist Menschenwerk.&amp;rdquo; [Leopold Kronecker]&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;abstract&#34;&gt;Abstract&lt;/h2&gt;&#xA;&lt;p&gt;Welche rationale Zahl ist eine gute Näherung von π (3,1415926&amp;hellip;)?&#xA;Geben Sie ein: in Zelle A1 &amp;lsquo;=pi()&amp;rsquo;, in Zelle B1 den maximal gewünschten Nenner (zum Beispiel 10),&#xA;und als Matrixformel (mit STRG + SHIFT + ENTER) in den Zellen C1:D1 &amp;lsquo;=sbNRN(A1;B1)&amp;rsquo;.&#xA;Als Ergebnis erscheint in C1:D1 22 und 7.&#xA;Dies bedeutet: 22/7 ist die nächstliegende rationale Zahl (Bruch) zu π mit einem Nenner nicht größer als 10.&#xA;Mit 1000 in B1 würde man 355/113 erhalten.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Exakte Rechnung mit Rationalen Zahlen</title>
      <link>https://www.berndplumhoff.de/exakte_rechnung_mit_rationalen_zahlen_de/</link>
      <pubDate>Sun, 24 May 2026 03:17:00 +0100</pubDate>
      <guid>https://www.berndplumhoff.de/exakte_rechnung_mit_rationalen_zahlen_de/</guid>
      <description>&lt;h2 id=&#34;abstract&#34;&gt;Abstract&lt;/h2&gt;&#xA;&lt;p&gt;Vorgestellt wird die Möglichkeit der genauen Rechnung mit rationalen Zahlen.&#xA;Die Vorteile einer Rationalzahlarithmetik gegenüber einer Festpunkt- oder Gleitpunktarithmetik:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Die Möglichkeit der genauen Darstellung aller &amp;ldquo;einfachen&amp;rdquo; Brüche (wie 1/3, 3/7 usw.).&lt;/li&gt;&#xA;&lt;li&gt;Die Möglichkeit der Berechnung genauer Zwischenergebnisse bei den Grundrechenarten (einschließlich der Division!).&lt;/li&gt;&#xA;&lt;li&gt;Die Existenz des genauen multiplikativen Inversen aller Elemente (außer 0) im darzustellenden Bereich.&lt;/li&gt;&#xA;&lt;li&gt;Bei festem Bruchstrich (engl. fixed slash) Unabhängigkeit von der Zahlenbasis.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;rationalzahlen-in-rechenanlagen&#34;&gt;Rationalzahlen in Rechenanlagen&lt;/h2&gt;&#xA;&lt;h3 id=&#34;fixed-slash&#34;&gt;Fixed Slash&lt;/h3&gt;&#xA;&lt;p&gt;Für Zähler und Nenner stehen jeweils die gleiche Anzahl von Stellen zur Verfügung:&#xA;&lt;img src=&#34;https://www.berndplumhoff.de/Rationalzahlen_Fixed_Slash.png&#34; alt=&#34;Rationalzahlen_Fixed_Slash&#34;&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Excel VBA Eine Sammlung (Excel / VBA)</title>
      <link>https://www.berndplumhoff.de/excel_vba_eine_sammlung_de/</link>
      <pubDate>Sat, 23 May 2026 07:12:00 +0100</pubDate>
      <guid>https://www.berndplumhoff.de/excel_vba_eine_sammlung_de/</guid>
      <description>&lt;p&gt;&lt;strong&gt;&amp;ldquo;Excel-Tabellen gehören wahrscheinlich zu den gefährlichsten Erfindungen der letzten Jahrzehnte.&amp;rdquo; [Rolf Dobelli]&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;excel-vba-eine-sammlung&#34;&gt;Excel VBA Eine Sammlung&lt;/h2&gt;&#xA;&lt;p&gt;Dies ist eine Sammlung von Excel VBA Programmen und auch einigen Excelformeln, die mir sinnvoll erschienen.&lt;/p&gt;&#xA;&lt;p&gt;Hinweis: Ich habe die hier vorgestellten Programme und Formeln erfolgreich mit Excel 2024 / 365 getestet.&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;Inhaltsverzeichnis                                                                   &#xA;                                                                                     &#xA;Excel / VBA – Eine Sammlung                                                          1&#xA;  Abstract                                                                           2&#xA;  Excel Lernpfad                                                                     2&#xA;Die Excel / VBA Programmierumgebung                                                 11&#xA;  Abstract                                                                          11&#xA;  Grundlegendes                                                                     11&#xA;    Variablen                                                                       11&#xA;      Variablentypen                                                                11&#xA;      Scope                                                                         12&#xA;    Während des Editierens                                                          12&#xA;    Während der Programmausführung                                                  13&#xA;      Breakpoints                                                                   13&#xA;      Fehlerbehandlung                                                              14&#xA;    Umgebungsvariablen                                                              15&#xA;    Gute Programmierpraxis                                                          15&#xA;      Seien Sie ein guter Programmierer                                             15&#xA;      Gutes Excel und VBA Wissen                                                    15&#xA;      Programmierkonventionen                                                       16&#xA;      Säubern Sie Makroaufzeichnungen                                               16&#xA;      Dokumentieren Sie Ihr Programm ausreichend                                    16&#xA;      Testen Sie Ihr Programm gut                                                   16&#xA;      Protokollieren Sie Ihre Programmausführung                                    16&#xA;  Laufzeit Optimieren                                                               17&#xA;    Module                                                                          17&#xA;      Normal                                                                        17&#xA;      Klassenmodule                                                                 19&#xA;  Systemstatus sichern und zurückschreiben – SystemState Klasse                     20&#xA;    Systemstatus Variablen                                                          20&#xA;  Programmablauf dokumentieren – clsLog Klasse                                      23&#xA;    Für und Wider                                                                   23&#xA;    Parameter                                                                       24&#xA;    Beispielausgabe                                                                 25&#xA;    Module                                                                          26&#xA;      Normal                                                                        26&#xA;      Klassenmodule                                                                 31&#xA;  Start / Stop OneDrive Synchronisierung                                            33&#xA;  Exportiere einen Bereich als Grafik – sbExportRange2Picture                       35&#xA;  Bereichsnamen anzeigen – sbNamedRanges                                            38&#xA;  Anzahl der Dimensionen eines Arrays – ArrayDim                                    38&#xA;  Excel Version anzeigen – ApplicationVersion                                       39&#xA;  Zellinformationen ausgeben – sbGetCell                                            40&#xA;  Nächste Gleitkommazahl – sbNextFloat                                              46&#xA;  Aufruf anderer Windows Programme am Beispiel sbZip                                47&#xA;  Excel Don’ts – Was man mit Excel besser sein lässt                                49&#xA;    Eine Tabelle mit Beispielen die man besser vermeidet                            49&#xA;Zahlensysteme, Formate und Umwandlungen                                             50&#xA;  Abstract                                                                          50&#xA;  Umwandlungen und Berechnungen von Zahlen                                          50&#xA;    Zahlen in Worten ausgeben – sbInWorten                                          50&#xA;    Umwandlungen zwischen dem Dezimalsystem und dem Binärsystem                     54&#xA;    Feiertage ermitteln – IstFeiertag                                               59&#xA;    Zahl vollständig nicht-wissenschaftlich darstellen – sbNum2Str                  63&#xA;    Signifikante Ziffern einer Zahl – sbNSig                                        64&#xA;    Nummer eines Monatsnamens – sbMonatsZahl                                        65&#xA;    Die Berechnung der Kreiszahl π                                                  68&#xA;      Pi Ausgabe auf 1000 Stellen                                                   71&#xA;    Die Berechnung der Eulerschen Zahl e                                            72&#xA;      e Ausgabe auf 1000 Stellen                                                    73&#xA;    Literatur                                                                       74&#xA;    Zahlenfolge kürzer darstellen – sbParseNumSeq                                   74&#xA;  Rationale Zahlen = Brüche                                                         76&#xA;    Ermittle die nächstliegende rationale Zahl zu einer Gleitkommazahl – sbNRN      76&#xA;    Lineare Gleichungssysteme mit rationalen Koeffizienten                          79&#xA;    Anteilsveränderung als Bruch                                                    82&#xA;    Monatsanteil                                                                    83&#xA;  Linearkombination Ganzer Zahlen                                                   84&#xA;    Erweiterter Euklidischer Algorithmus – sbEuklid                                 84&#xA;  Uhrzeiten                                                                         86&#xA;    Arbeitszeit zwischen 2 Zeitpunkten – sbTimeDiff                                 86&#xA;    Arbeitszeit zu einem Zeitpunkt addieren – sbTimeAdd                             89&#xA;    Uhrzeit für eine andere Zeitzone umwandeln – ConvertTime                        92&#xA;  Prüfziffern                                                                       92&#xA;    Berechne oder prüfe eine Europäische Artikelnummer – sbEAN                      92&#xA;  Ordinalzahlen (englisch)                                                          93&#xA;Einfache Mathematik in Formeln                                                      94&#xA;  Wie man Tabellenblattformeln analysiert                                           94&#xA;  Datumsformeln testen                                                              95&#xA;  Erster oder letzter Wochentag im Monat                                            97&#xA;  Derselbe Wochentag und Kalenderwoche im vorigen Jahr                              98&#xA;  Budgetkontrolle                                                                   99&#xA;  Geringste Signifikante Ziffer erhöhen                                            100&#xA;  Linearer Breakdown                                                               101&#xA;  Füge zwei Spalten mit Blocksatz zusammen                                         104&#xA;  Minimum Truck Load Problem                                                       105&#xA;  Nachstehende Nullen zählen                                                       106&#xA;  Minimax Interpolation                                                            106&#xA;  Interpolation mit PERZENTIL / PROZENTRANG                                        108&#xA;  Interpolation mit TREND                                                          110&#xA;  REFA Zeitklassen                                                                 111&#xA;  Rollen und Rechte                                                                112&#xA;  Rundungstricks                                                                   113&#xA;  Trinkgeld Verteilung                                                             114&#xA;  Unterjährige Werte glätten                                                       116&#xA;  Zellenbasiertes Diagramm                                                         117&#xA;Einfache VBA Programme                                                             119&#xA;  Abstract                                                                         119&#xA;  Addiere Zahlen desselben Zahlenformats – sbSumMyFormat                           119&#xA;  Zähle Zellen mit einer bestimmten Farbe – sbCountMyColor                         120&#xA;  Asset Allokation für ein Portfolio – sbAllocate                                  121&#xA;  Ausreißer Werte eliminieren – sbORB                                              122&#xA;  Faire Verteilung eines begrenzten Budgets – sbDistBudget                         124&#xA;  Collatz Länge Berechnen - sbCollatz                                              126&#xA;  Eindeutigen Rang auch bei Duplikaten vergeben – sbUniqRank                       127&#xA;  Eliminiere Punkte eines Graphen mit kleiner Steigungsänderung – sbReducePoints   129&#xA;  Geburtstagsliste – sbBirthdayList                                                131&#xA;  Akumuliertes Handelsblatt – sbAccumulatedTradeBlotter                            133&#xA;  Häufigste Paare – sbMostFrequentPairs                                            135&#xA;  Interpolieren – sbInterp                                                         137&#xA;  Erzeuge alle Kombinationen der Subsets k von n                                   139&#xA;  Lookup Varianten                                                                 141&#xA;  Minimale Anzahl von Scheinen und Münzen für einen Geldbetrag – sbMinCash         144&#xA;  Neugewichtung der Assets eines Portfolios – sbRebalancedReturn                   147&#xA;  Optimale Boxenstopps                                                             149&#xA;  Optimale Nutzung von Urlaubstageen                                               151&#xA;  Rundensystem für Turnier Jeder Gegen Jeden - sbRoundRobin                        153&#xA;  Zugriffsrechte prüfen                                                            156&#xA;VBA Programme für Fortgeschrittene                                                 159&#xA;  Abstract                                                                         159&#xA;  Mitarbeiter Umsatzanteile                                                        159&#xA;  Extremwerte von Zellen speichern – sbCellWatermarks                              165&#xA;  Aufgabenliste – sbTaskList                                                       167&#xA;  Zahlungseingangsproblem                                                          170&#xA;  Datenanalyse – sbDatastats                                                       173&#xA;    System Handbuch                                                                173&#xA;      Übersicht                                                                    173&#xA;      Parameter im Tabellenblatt Param                                             174&#xA;    Anwenderhandbuch                                                               175&#xA;      Zusammenfassung                                                              175&#xA;      Konfigurationsdatei FileSpecs.csv                                            175&#xA;      NumStats Ausgabe                                                             176&#xA;      NumStatsMove Ausgabe                                                         176&#xA;      TextStats Ausgabe                                                            176&#xA;      TextStatsMove Ausgabe                                                        176&#xA;      Limits_Output Datei                                                          177&#xA;      Limits_Move_Output Datei                                                     178&#xA;  Lotto k-Tupel                                                                    208&#xA;  Minirechner                                                                      211&#xA;  Sterblichkeitsrente                                                              218&#xA;    Komplexe Matrixformel (Schlechteste Wahl)                                      218&#xA;    Einfache Benutzerdefinierte Funktion mit VBA (Bessere Wahl)                    219&#xA;    Vorkalkulierte Tabelle und eine NBW Formel (Wahrscheinlich am Besten)          219&#xA;  Finanzmathematik – Optionen                                                      220&#xA;    Das Binomialbaummodell                                                         220&#xA;    Das Trinomial-Optionspreismodell und die Methode der Finiten Differenzen       226&#xA;    Monte Carlo Simulation                                                         232&#xA;  Erzeuge alle Permutationen eines Arrays – Quickperm                              242&#xA;  Eine wartungsfreie Datenbenk                                                     244&#xA;    Einschränkungen                                                                244&#xA;    Verantwortlichkeiten                                                           244&#xA;    Systemdokumentation                                                            245&#xA;    Anwenderdokumentation                                                          245&#xA;      Super User mit Schreib-/Lesezugriff                                          245&#xA;      Normaler Anwender nur mit Lesezugriff                                        245&#xA;    Appendix – SQL Code                                                            246&#xA;    Appendix – VBA Code                                                            249&#xA;Summenerhaltendes Runden mit RoundToSum                                            252&#xA;  Abstract                                                                         252&#xA;  Summenerhaltendes Runden                                                         252&#xA;    Beispiel für Prozentzahlen                                                     252&#xA;    Beispiel für absolute Zahlen                                                   253&#xA;  Die benutzerdefinierte VBA Funktion RoundToSum                                   253&#xA;  RoundToSum Programmcode                                                          254&#xA;  Round2Sum Lambda-Ausdruck                                                        255&#xA;  Werte runden ändert ihre Summe                                                   256&#xA;  Wieviele Summanden müssen im Mittel &amp;#39;falsch&amp;#39; gerundet werden?                    258&#xA;  Anwendungsbeispiele für RoundToSum                                               260&#xA;    Gemeinkostenumlage                                                             260&#xA;    Beispiel für ein exaktes Verhältnis von Zufallszahlen                          262&#xA;      Die benutzerdefinierte VBA Funktion sbExactRandHistogrm                      263&#xA;    Faire Mitarbeiterauswahl nach Teamgröße – sbFairStaffSelection                 265&#xA;    Stichprobe normalverteilen                                                     267&#xA;    Verteilung nach Restmenge                                                      272&#xA;      Ein simpler Ansatz                                                           272&#xA;      Eine korrekte Rechnung                                                       272&#xA;    Urlaub nehmen wenn weniger los ist                                             273&#xA;      Simples Beispiel                                                             273&#xA;      Komplexeres Beispiel                                                         274&#xA;    Zuweisen von Arbeitseinheiten vermindert um geleistete                         275&#xA;  RoundToSum im Vergleich                                                          276&#xA;    RoundToSum im Vergleich mit anderen “einfachen” Methoden                       276&#xA;    RoundToSum im Vergleich zum D‘Hondt Verfahren                                  279&#xA;  Literatur                                                                        279&#xA;Zufallszahlen erzeugen                                                             280&#xA;  Abstract                                                                         280&#xA;  Ganze Zufallszahlen                                                              280&#xA;    Natürliche Zufallszahlen – UniqRandInt                                         280&#xA;    Ganze Zufallszahlen – sbRandInt                                                282&#xA;    Zufallszahlen mit einer festgelegten Summe                                     284&#xA;      Minimum für die Zufallszahlen vorgegeben - sbLongRandSumN                    284&#xA;      Minimum und Maximum für die Zufallszahlen vorgegeben - sbRandIntFixSum       285&#xA;  Praktische Anwendungen ganzer Zufallszahlen                                      287&#xA;    Krabat – Wie alt können die Lehrlinge werden?                                  287&#xA;    Ein Mathematiktest mit ganzen Zufallszahlen – Generate_Math_Test               288&#xA;    Monte Carlo Simulation für eine faire Teamverteilung – sbGenerateTeams         290&#xA;    Monte Carlo Simulation für einen Regatta Flight Plan – sbRegattaFlightPlan     294&#xA;    Chancen beim Brettspiel Risiko                                                 297&#xA;    Eine simple Monte Carlo Simulation                                             301&#xA;  Gleitkomma-Zufallszahlen                                                         303&#xA;    Eine ideale Normalverteilung – sbGenNormDist                                   303&#xA;    Zufallszahlen mit der Summe 1 – sbRandSum1                                     305&#xA;    Verteilungen von Gleitkomma-Zufallszahlen                                      307&#xA;      sbRandGeneral                                                                307&#xA;      sbRandHistogrm                                                               310&#xA;      sbRandTriang                                                                 313&#xA;      sbRandTrigen                                                                 314&#xA;      sbRandCauchy                                                                 318&#xA;      sbRandCDFInv                                                                 319&#xA;      sbRandPDF                                                                    320&#xA;      sbRandCumulative                                                             321&#xA;    Brownsche Brücken                                                              323&#xA;      sbGrowthSeries                                                               323&#xA;      Fixe Summe aus verschiedenen Zufallsbereichen                                325&#xA;  Korrelierte Zufallszahlen                                                        327&#xA;    Cholesky Zerlegung                                                             327&#xA;    Iman-Conover Methode                                                           329&#xA;  Praktische Anwendungen allgemeiner Zufallszahlen                                 336&#xA;    Testdaten erzeugen – sbGenerateTestData                                        336&#xA;    Zufallszahlen die sich nicht sofort wiederholen – sbRandomNoRepeatBeforeN      346&#xA;  Exkurs                                                                           348&#xA;    Wahrscheinlichkeiten berechnen – Ziehen von Karten mit und ohne Zurücklegen    348&#xA;Spaß ohne Praxisrelevanz für Fortgeschrittene                                      349&#xA;  Eine einfache VBA Pivot Tabelle – sbMiniPivot                                    349&#xA;  Rundenturnier-Paarungen mit Excel Tabellenblattfunktionen                        352&#xA;    Entwickeln einer Formellösung für ein Rundenturnier Jeder gegen Jeden          352&#xA;  TEXTVERKETTEN                                                                    356&#xA;Index                                                                              357&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Bitte den Haftungsausschluss im &lt;a href=&#34;https://www.berndplumhoff.de/about/impressum_de/&#34; title=&#34;Impressum&#34;&gt;Impressum&lt;/a&gt; beachten.&lt;/p&gt;</description>
    </item>
    <item>
      <title>sbCollatz (VBA)</title>
      <link>https://www.berndplumhoff.de/sbcollatz_de/</link>
      <pubDate>Sat, 23 May 2026 06:57:00 +0100</pubDate>
      <guid>https://www.berndplumhoff.de/sbcollatz_de/</guid>
      <description>&lt;p&gt;&lt;strong&gt;&amp;ldquo;Mathematics is not yet ready for such problems.&amp;rdquo; [Paul Erdös]&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;abstract&#34;&gt;Abstract&lt;/h2&gt;&#xA;&lt;p&gt;Die Collatz Vermutung für naturliche Zahlen:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;Eine gerade Zahl wird halbiert&#xA;Eine ungerade Zahl wird verdreifacht und um 1 erhöht&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Wenn Sie die oben genannten Regeln wiederholt anwenden, gelangen Sie stets zur Zahl 1.&lt;/p&gt;&#xA;&lt;h2 id=&#34;beispiel&#34;&gt;Beispiel&lt;/h2&gt;&#xA;&lt;p&gt;Wenn Sie mit 5 beginnen, erhalten Sie die Folge 5, 16, 8, 4, 2, 1, die eine Collatz Länge von 6 besitzt.&lt;/p&gt;&#xA;&lt;h2 id=&#34;appendix--sbcollatz-programmcode&#34;&gt;Appendix – sbCollatz Programmcode&lt;/h2&gt;&#xA;&lt;p&gt;Bitte den Haftungsausschluss im &lt;a href=&#34;https://www.berndplumhoff.de/about/impressum_de/&#34; title=&#34;Impressum&#34;&gt;Impressum&lt;/a&gt; beachten.&lt;/p&gt;</description>
    </item>
    <item>
      <title>sbDec2Bin (VBA)</title>
      <link>https://www.berndplumhoff.de/sbdec2bin_de/</link>
      <pubDate>Sat, 23 May 2026 06:56:00 +0100</pubDate>
      <guid>https://www.berndplumhoff.de/sbdec2bin_de/</guid>
      <description>&lt;h2 id=&#34;abstract&#34;&gt;Abstract&lt;/h2&gt;&#xA;&lt;p&gt;Wie lautet die binäre Darstellung (Bitlänge = 256) der Dezimalzahl&#xA;-872362346234627834628734627834627834628?&#xA;Die eingebaute Excel Funktion &lt;em&gt;DEZINBIN&lt;/em&gt; hilft hier nicht weiter.&#xA;Sie kann nur Eingaben von -512 bis 511 verarbeiten.&#xA;Wenn Sie die korrekte Antwort&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;1111111111111111111111111111111111111111111111111111111111111111111111111111&#xA;1111111111111111111111111111111111111111111111111101011011111011010100011111&#xA;1001110111100101111001000010000111010110010010100110011010001001100111101010&#xA;0001010101001011110011111100&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;erhalten wollen, benutzen Sie bitte die unten gezeigte Funktion &lt;em&gt;sbDec2Bin&lt;/em&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Bitte bachten: Nachkommastellen werden lediglich für positive Zahlen unterstützt.&#xA;Zum Beispiel lautet die Dezimalzahl 0.5 im Binärformat 0.1.&lt;/p&gt;&#xA;&lt;p&gt;Hinweis: &lt;em&gt;sbDec2Bin&lt;/em&gt; wird auf der Seite&#xA;&lt;a href=&#34;https://www.berndplumhoff.de/schule_des_denkens_de/&#34; title=&#34;Schule des Denkens&#34;&gt;Schule des Denkens&lt;/a&gt;&#xA;als Beispiel vorgestellt.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Erweiterter Euklidischer Algorithmus (VBA)</title>
      <link>https://www.berndplumhoff.de/sbeuklid_de/</link>
      <pubDate>Sat, 23 May 2026 06:55:00 +0100</pubDate>
      <guid>https://www.berndplumhoff.de/sbeuklid_de/</guid>
      <description>&lt;h2 id=&#34;abstract&#34;&gt;Abstract&lt;/h2&gt;&#xA;&lt;p&gt;Sie wollen eine Zahl als nicht-negative Linearkombination zweier natürlicher&#xA;Zahlen darstellen?&lt;/p&gt;&#xA;&lt;p&gt;Dies kann man mit dem (externer Link!) &lt;a href=&#34;https://www.arndt-bruenner.de/mathe/scripts/erweitertereuklid.htm&#34;&gt;erweiterten Euklidischen Algorithmus&lt;/a&gt; erreichen:&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://www.berndplumhoff.de/sbEuklid.png&#34; alt=&#34;sbEuklid&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Hinweis: Wenn das Wunschergebnis ein Vielfaches des größten gemeinsamen Teilers der eingegebenen&#xA;Zahlen ist, dann existiert immer eine ganzzahlige Lösung, aber nicht notwendigerweise eine&#xA;nicht-negative. Beispiel: Sie können mit den Eingaben 5 und 3 das&#xA;Wunschergebnis 1 ganzzahlig darstellen, weil 1 der GGT von 5 und 3 ist: 1 = 2 * 5 + (-3) * 3.&#xA;Aber es geht nicht mit ausschließlich nicht-negativen Faktoren.&lt;/p&gt;</description>
    </item>
    <item>
      <title>sbMinCash (VBA)</title>
      <link>https://www.berndplumhoff.de/sbmincash_de/</link>
      <pubDate>Fri, 22 May 2026 05:49:00 +0100</pubDate>
      <guid>https://www.berndplumhoff.de/sbmincash_de/</guid>
      <description>&lt;h2 id=&#34;abstract&#34;&gt;Abstract&lt;/h2&gt;&#xA;&lt;p&gt;Wenn Sie die kleinste Menge an Geldscheinen und Münzen ermitteln wollen, um auf einen&#xA;Betrag zu kommen, hilft dieses Programm:&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://www.berndplumhoff.de/sbmincash.png&#34; alt=&#34;sbmincash&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Mögliche Fehlerwerte sind:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;#ZAHL! - Der Eingangsbetrag oder der Wert eines Scheins oder Münze hat mehr als 2 Nachkommastellen&lt;/li&gt;&#xA;&lt;li&gt;#WERT! - Der Wert eines Scheins oder einer Münze ist negativ oder ungültig&lt;/li&gt;&#xA;&lt;li&gt;#NV -    Es existiert keine Lösung&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Eine bekannte Ausnahme: Falls die Werte der Scheine oder Münzen ungünstig sind,&#xA;dann ist die ausgegebene Stückelung nicht minimal. Beispiel:&#xA;Mit den Münzwerten 1, 6, und 10 wird der Eingabebetrag 13 mit der Stückelung 10, 1, 1, 1&#xA;und nicht 6, 6, 1 ausgegeben.&#xA;Die gute Nachricht ist jedoch: Dies tritt nicht im &lt;em&gt;normalen&lt;/em&gt; Fall mit Werten wie 1000,&#xA;500, 200, 100, 50, 20, 10, 5, 2, 1, 0.50, 0.20, 0.10, 0.05, 0.02, und 0.01 auf.&lt;/p&gt;</description>
    </item>
    <item>
      <title>sbInterp (VBA)</title>
      <link>https://www.berndplumhoff.de/sbinterp_de/</link>
      <pubDate>Thu, 21 May 2026 01:52:00 +0100</pubDate>
      <guid>https://www.berndplumhoff.de/sbinterp_de/</guid>
      <description>&lt;p&gt;&lt;strong&gt;&amp;ldquo;Write what you know. That should leave you with a lot of free time.&amp;rdquo; [Howard Nemerov]&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;abstract&#34;&gt;Abstract&lt;/h2&gt;&#xA;&lt;p&gt;Falls Sie eine Menge von bekannten (x, y) Paaren haben und y-Werte zu anderen gegebenen x-Werten&#xA;finden müssen, müssen Sie interpolieren. Dies entspricht dem Füllen von Lücken in einer Tabelle:&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://www.berndplumhoff.de/sbInterp_01_Screen.png&#34; alt=&#34;Robin&amp;rsquo;s Forest Tax&#34;&gt;&#xA;&lt;img src=&#34;https://www.berndplumhoff.de/sbInterp_02_Screen.png&#34; alt=&#34;Interpolieren&#34;&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;appendix--programmcode-sbinterp&#34;&gt;Appendix – Programmcode sbInterp&lt;/h2&gt;&#xA;&lt;p&gt;Bitte den Haftungsausschluss im &lt;a href=&#34;https://www.berndplumhoff.de/about/impressum_de/&#34; title=&#34;Impressum&#34;&gt;Impressum&lt;/a&gt; beachten.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-VB.net&#34; data-lang=&#34;VB.net&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Option&lt;/span&gt; Explicit&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Function&lt;/span&gt; sbInterp(vX &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Variant&lt;/span&gt;, vY &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Variant&lt;/span&gt;, _&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;           vT &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Variant&lt;/span&gt;, _&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;           &lt;span style=&#34;color:#00f&#34;&gt;Optional&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;ByVal&lt;/span&gt; sType &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;String&lt;/span&gt; = &lt;span style=&#34;color:#a31515&#34;&gt;&amp;#34;Linear&amp;#34;&lt;/span&gt;, _&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;           &lt;span style=&#34;color:#00f&#34;&gt;Optional&lt;/span&gt; bExtrapolate &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Boolean&lt;/span&gt; = &lt;span style=&#34;color:#00f&#34;&gt;True&lt;/span&gt;, _&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;           &lt;span style=&#34;color:#00f&#34;&gt;Optional&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;ByVal&lt;/span&gt; sExtraType &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;String&lt;/span&gt;) &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Variant&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;Interpolates y-values for target values vT with known&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;y-values vY and known x-values vX with type sType.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;sType can be:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;Const or C&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;Linear or L&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;LinearInVariance or LIV&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;Extrapolation will be done if bExtrapolate is TRUE.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;Extrapolation type sExtraType defaults to sType if empty.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;Values in vX must be in ascending order. #VALUE! error&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;indicates illegal sType, #NUM! error indicates that&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;extrapolation has been switched off and #N/A tells you&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;that x-values are not given in increasing order, or&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;y-value count differs from x-value count.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;Source (EN): https://www.sulprobil.de/sbinterp_en/&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;Source (DE): https://www.berndplumhoff.de/sbinterp_de/&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;(C) (P) by Bernd Plumhoff 25-Dec-2023 PB V0.7&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Dim&lt;/span&gt; i &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Long&lt;/span&gt;, iX &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Long&lt;/span&gt;, iY &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Long&lt;/span&gt;, iT &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Long&lt;/span&gt;, k &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Long&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Dim&lt;/span&gt; vTk, vXi&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Dim&lt;/span&gt; sT &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;String&lt;/span&gt; &lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;Type of inter- or extrapolation&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Dim&lt;/span&gt; sEType &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;String&lt;/span&gt; &lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;Extrapolation type&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#00f&#34;&gt;With&lt;/span&gt; Application&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;On&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;Error&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;Resume&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;Next&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;iX = vX.Count&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;iX = UBound(vX)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;iY = vY.Count&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;iY = UBound(vY)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;iT = vT.Count&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;iT = UBound(vT)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;On&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;Error&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;GoTo&lt;/span&gt; 0&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt; iX &amp;lt;&amp;gt; iY &lt;span style=&#34;color:#00f&#34;&gt;Then&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    sbInterp = CVErr(xlErrNA)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#00f&#34;&gt;Exit&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;Function&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;End &lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;k = 0&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;ReDim&lt;/span&gt; vX1(1 &lt;span style=&#34;color:#00f&#34;&gt;To&lt;/span&gt; iX) &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Variant&lt;/span&gt;, vY1(1 &lt;span style=&#34;color:#00f&#34;&gt;To&lt;/span&gt; iX) &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Variant&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;For&lt;/span&gt; i = 1 &lt;span style=&#34;color:#00f&#34;&gt;To&lt;/span&gt; iX&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt; vX(i) &amp;lt;&amp;gt; &lt;span style=&#34;color:#a31515&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;And&lt;/span&gt; vY(i) &amp;lt;&amp;gt; &lt;span style=&#34;color:#a31515&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;Then&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        k = k + 1&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        vX1(k) = vX(i)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        vY1(k) = vY(i)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#00f&#34;&gt;End&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Next&lt;/span&gt; i&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;iX = k&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;ReDim&lt;/span&gt; Preserve vX1(1 &lt;span style=&#34;color:#00f&#34;&gt;To&lt;/span&gt; iX) &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Variant&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;ReDim&lt;/span&gt; Preserve vY1(1 &lt;span style=&#34;color:#00f&#34;&gt;To&lt;/span&gt; iX) &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Variant&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt; iX &amp;lt; 2 &lt;span style=&#34;color:#00f&#34;&gt;Then&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    sType = &lt;span style=&#34;color:#a31515&#34;&gt;&amp;#34;Const&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    sExtraType = &lt;span style=&#34;color:#a31515&#34;&gt;&amp;#34;Const&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Else&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#00f&#34;&gt;For&lt;/span&gt; k = 2 &lt;span style=&#34;color:#00f&#34;&gt;To&lt;/span&gt; iX&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt; vX1(k) &amp;lt;= vX1(k - 1) &lt;span style=&#34;color:#00f&#34;&gt;Then&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            sbInterp = CVErr(xlErrNA)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#00f&#34;&gt;Exit&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;Function&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        End &lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#00f&#34;&gt;Next&lt;/span&gt; k&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;End&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;ReDim&lt;/span&gt; vR(1 &lt;span style=&#34;color:#00f&#34;&gt;To&lt;/span&gt; iT) &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Variant&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt; sExtraType = &lt;span style=&#34;color:#a31515&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;Then&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    sEType = sType &lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;Same as interpolation type&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Else&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    sEType = sExtraType&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;End&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;For&lt;/span&gt; k = 1 &lt;span style=&#34;color:#00f&#34;&gt;To&lt;/span&gt; iT&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    i = 0&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    vTk = 0&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    vXi = 0&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#00f&#34;&gt;On&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;Error&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;Resume&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;Next&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    i = .Match(vT(k), vX1, 1)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    vTk = vT(k)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    vXi = vX1(i)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#00f&#34;&gt;On&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;Error&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;GoTo&lt;/span&gt; 0&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;Not&lt;/span&gt; bExtrapolate &lt;span style=&#34;color:#00f&#34;&gt;And&lt;/span&gt; _&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        (i = 0 &lt;span style=&#34;color:#00f&#34;&gt;Or&lt;/span&gt; (i = iX &lt;span style=&#34;color:#00f&#34;&gt;And&lt;/span&gt; vTk &amp;lt;&amp;gt; vXi)) &lt;span style=&#34;color:#00f&#34;&gt;Then&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        vR(k) = CVErr(xlErrNum)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#00f&#34;&gt;Else&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        sT = sType &lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;Set to interpolation type&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&lt;/span&gt;        &lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt; i = 0 &lt;span style=&#34;color:#00f&#34;&gt;Then&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            i = 1&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            sT = sEType &lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;Set to extrapolation type&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&lt;/span&gt;        &lt;span style=&#34;color:#00f&#34;&gt;End&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt; i = iX &lt;span style=&#34;color:#00f&#34;&gt;Then&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            i = i - 1&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt; vTk &amp;lt;&amp;gt; vXi &lt;span style=&#34;color:#00f&#34;&gt;Then&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                sT = sEType &lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;Set to extrapolation type&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&lt;/span&gt;            &lt;span style=&#34;color:#00f&#34;&gt;End&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt; sT = &lt;span style=&#34;color:#a31515&#34;&gt;&amp;#34;C&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;Or&lt;/span&gt; sT = &lt;span style=&#34;color:#a31515&#34;&gt;&amp;#34;Const&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;Then&lt;/span&gt; i = i + 1&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#00f&#34;&gt;End&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#00f&#34;&gt;Select&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;Case&lt;/span&gt; sT&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#00f&#34;&gt;Case&lt;/span&gt; &lt;span style=&#34;color:#a31515&#34;&gt;&amp;#34;C&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#a31515&#34;&gt;&amp;#34;Const&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            vR(k) = .Index(vY1, i)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#00f&#34;&gt;Case&lt;/span&gt; &lt;span style=&#34;color:#a31515&#34;&gt;&amp;#34;L&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#a31515&#34;&gt;&amp;#34;Linear&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            vR(k) = .Index(vY1, i) + (vTk - .Index(vX1, i)) _&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                * (.Index(vY1, i + 1) - .Index(vY1, i)) _&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                / (.Index(vX1, i + 1) - .Index(vX1, i))&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#00f&#34;&gt;Case&lt;/span&gt; &lt;span style=&#34;color:#a31515&#34;&gt;&amp;#34;LIV&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#a31515&#34;&gt;&amp;#34;LinearInVariance&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#00f&#34;&gt;On&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;Error&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;Resume&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;Next&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            vR(k) = Sqr(.Index(vY1, i) ^ 2# + (vTk - .Index(vX1, i)) _&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                * (.Index(vY1, i + 1) ^ 2# - .Index(vY1, i) ^ 2#) _&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                / (.Index(vX1, i + 1) - .Index(vX1, i)))&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#00f&#34;&gt;On&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;Error&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;GoTo&lt;/span&gt; 0&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#00f&#34;&gt;Case&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;Else&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            sbInterp = CVErr(xlErrValue)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#00f&#34;&gt;Exit&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;Function&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        End &lt;span style=&#34;color:#00f&#34;&gt;Select&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#00f&#34;&gt;End&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Next&lt;/span&gt; k&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt; TypeName(vT) = &lt;span style=&#34;color:#a31515&#34;&gt;&amp;#34;Range&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;Then&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt; vT.Rows.Count &amp;gt; vT.Columns.Count &lt;span style=&#34;color:#00f&#34;&gt;Then&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        vR = .Transpose(vR)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#00f&#34;&gt;End&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;ElseIf&lt;/span&gt; TypeName(.Caller) = &lt;span style=&#34;color:#a31515&#34;&gt;&amp;#34;Range&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;Then&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt; .Caller.Rows.Count &amp;gt; .Caller.Columns.Count &lt;span style=&#34;color:#00f&#34;&gt;Then&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        vR = .Transpose(vR)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#00f&#34;&gt;End&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;End&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sbInterp = vR&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;End&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;With&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;End&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;Function&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;download&#34;&gt;Download&lt;/h2&gt;&#xA;&lt;p&gt;Bitte den Haftungsausschluss im &lt;a href=&#34;https://www.berndplumhoff.de/about/impressum_de/&#34; title=&#34;Impressum&#34;&gt;Impressum&lt;/a&gt; beachten.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Optionen (VBA)</title>
      <link>https://www.berndplumhoff.de/options_de/</link>
      <pubDate>Wed, 20 May 2026 04:38:00 +0100</pubDate>
      <guid>https://www.berndplumhoff.de/options_de/</guid>
      <description>&lt;h2 id=&#34;abstract&#34;&gt;Abstract&lt;/h2&gt;&#xA;&lt;p&gt;Ein klassisches Buch zur Bewertung von Optionen ist&lt;/p&gt;&#xA;&lt;p&gt;Les Clewlow and Chris Strickland: &lt;em&gt;Implementing Derivatives Models&lt;/em&gt; (ISBN 0471966517)&lt;/p&gt;&#xA;&lt;p&gt;Leider enthält dieses Buch eine Vielzahl von Fehlern, und&#xA;die 8 Seiten lange Fehlerliste vom 23. November 2000 scheint auch nicht&#xA;mehr öffentlich verfügbar zu sein.&lt;/p&gt;&#xA;&lt;p&gt;Einige Fehlerkorrekturen für die erste Auflage:&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th style=&#34;text-align: right&#34;&gt;Page&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Row&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Correction&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: right&#34;&gt;xvi&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;9, column 3&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;0v should be C&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: right&#34;&gt;12&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;15&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Si,j = Su^jd^(&lt;strong&gt;n&lt;/strong&gt;-j)&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: right&#34;&gt;24&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;2 from top in figure 2.12&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;set coeffi&lt;strong&gt;c&lt;/strong&gt;ients&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: right&#34;&gt;70&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;4 from bottom in figure 3.13&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;for j =Nj-2 downto -N&lt;strong&gt;j+1&lt;/strong&gt; do&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: right&#34;&gt;70&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Insert before last row of figure 3.13&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;C[1,-Nj] = C[1,-Nj + 1] - lambda_L&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: right&#34;&gt;75&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;4 from bottom in figure 3.16&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;for j =Nj-2 downto -N&lt;strong&gt;j+1&lt;/strong&gt; do&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: right&#34;&gt;75&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Insert before last row of figure 3.16&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;C[1,-Nj] = C[1,-Nj + 1] - lambda_L&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: right&#34;&gt;85&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;2 from bottom in figure 4.2&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;SD = sqrt( (-sum_CT2 + sum_CT * sum_CT / M ) &lt;strong&gt;)&lt;/strong&gt; * exp(-2&lt;em&gt;r&lt;/em&gt;T) / (M - 1)&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: right&#34;&gt;89&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;2 from bottom in figure 4.5&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;SD = sqrt( (-sum_CT2 + sum_CT * sum_CT / M ) &lt;strong&gt;)&lt;/strong&gt; * exp(-2&lt;em&gt;r&lt;/em&gt;T) / (M - 1)&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: right&#34;&gt;99&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Delete row 9 from top&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;lnS = ln(S) = 4.6052 &lt;strong&gt;&amp;lt;- delete this row&lt;/strong&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: right&#34;&gt;113&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;13 from top in figure 4.19&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;Insert before for j loop&lt;/strong&gt; V1 = sig1*sig1; V2 = sig2*sig2&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: right&#34;&gt;113&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;18 from top in figure 4.19&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;Insert before for i loop&lt;/strong&gt; Vt1 = V1; Vt2 = V2&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: right&#34;&gt;118&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Last row&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;a = &lt;strong&gt;m/N *&lt;/strong&gt; ln(Gt) &amp;hellip;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: right&#34;&gt;120&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;11 from bottom in figure 4.24&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;G = productSt &lt;strong&gt;^(1&lt;/strong&gt;/N)&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;hr&gt;&#xA;&lt;p&gt;Ich implementierte einige der im Buch vorgestellten Algorithmen mit Excel VBA.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Sterblichkeitsrente (Excel, VBA)</title>
      <link>https://www.berndplumhoff.de/mortality_annuities_de/</link>
      <pubDate>Wed, 20 May 2026 04:37:00 +0100</pubDate>
      <guid>https://www.berndplumhoff.de/mortality_annuities_de/</guid>
      <description>&lt;h2 id=&#34;abstract&#34;&gt;Abstract&lt;/h2&gt;&#xA;&lt;p&gt;Sie haben viele verschiedene Möglichkeiten, eine Sterblichkeitsrente zu berechnen:&lt;/p&gt;&#xA;&lt;h3 id=&#34;komplexe-matrixformel-schlechteste-wahl&#34;&gt;Komplexe Matrixformel (Schlechteste Wahl)&lt;/h3&gt;&#xA;&lt;p&gt;Wenden Sie eine recht komplexe Matrixformel an:&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://www.berndplumhoff.de/sbAnnuity_ArrayFormula.png&#34; alt=&#34;sbAnnuity_ArrayFormula&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Die Namen sind wie folgt definiert:&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://www.berndplumhoff.de/sbAnnuity_Names.png&#34; alt=&#34;sbAnnuity_Names&#34;&gt;&lt;/p&gt;&#xA;&lt;h3 id=&#34;einfache-benutzerdefinierte-funktion-mit-vba-bessere-wahl&#34;&gt;Einfache Benutzerdefinierte Funktion mit VBA (Bessere Wahl)&lt;/h3&gt;&#xA;&lt;p&gt;Ein weitaus besser Weg besteht in einer einfachen benutzerdefinierten Funktion:&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://www.berndplumhoff.de/sbAnnuity_VBA.png&#34; alt=&#34;sbAnnuity_VBA&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Bitte den Haftungsausschluss im &lt;a href=&#34;https://www.berndplumhoff.de/about/impressum_de/&#34; title=&#34;Impressum&#34;&gt;Impressum&lt;/a&gt; beachten.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-VB.net&#34; data-lang=&#34;VB.net&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Option&lt;/span&gt; Explicit&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Function&lt;/span&gt; LiveAnnuityPV(lYears &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Long&lt;/span&gt;, dInterestRate &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Double&lt;/span&gt;, _&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    rMortalityTable &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; Range) &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Double&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;Source (EN): https://www.sulprobil.de/mortality_annuities_en/&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;Source (DE): https://www.berndplumhoff.de/mortality_annuities_de/&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;(C) (P) by Bernd Plumhoff 22-Mar-2014 PB V0.1&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Dim&lt;/span&gt; j &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Long&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Dim&lt;/span&gt; dSum &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Double&lt;/span&gt;, dProd &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Double&lt;/span&gt;, dPV &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Double&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;dProd = 1#&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;dPV = 1#&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;For&lt;/span&gt; j = 1 &lt;span style=&#34;color:#00f&#34;&gt;To&lt;/span&gt; rMortalityTable.Count - lYears&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    dPV = dPV / (1# + dInterestRate)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    dProd = dProd * (1# - rMortalityTable(j + lYears))&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    dSum = dSum + dPV * dProd&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Next&lt;/span&gt; j&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;LiveAnnuityPV = dSum&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;End&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;Function&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;vorkalkulierte-tabelle-und-eine-nbw-formel-wahrscheinlich-am-besten&#34;&gt;Vorkalkulierte Tabelle und eine NBW Formel (Wahrscheinlich am Besten)&lt;/h3&gt;&#xA;&lt;p&gt;Der schnellste und wahrscheinlich beste Ansatz besteht aus einer&#xA;vorkalkulierten Tabelle und einer NBW Formel:&lt;/p&gt;</description>
    </item>
    <item>
      <title>QuickPerm (Excel / VBA)</title>
      <link>https://www.berndplumhoff.de/quickperm_de/</link>
      <pubDate>Wed, 20 May 2026 04:36:00 +0100</pubDate>
      <guid>https://www.berndplumhoff.de/quickperm_de/</guid>
      <description>&lt;h2 id=&#34;abstract&#34;&gt;Abstract&lt;/h2&gt;&#xA;&lt;p&gt;Wenn Sie alle Permutationen eines Arrays erzeugen wollen,&#xA;empfehle ich den Algorithmus (externer Link!) &lt;a href=&#34;https://www.quickperm.org&#34;&gt;Quickperm&lt;/a&gt;.&#xA;Es ist einer der effizientesten Permutationsalgorithmen.&#xA;Er basiert auf dem dem Austausch (engl. &lt;em&gt;Swap&lt;/em&gt;) einzelner&#xA;Elemente und wurde durch Heap Sort inspiriert.&lt;/p&gt;&#xA;&lt;p&gt;Die hier vorgestellte Variante ist die CountDown Variante.&#xA;Für die Implementierung in Excel / VBA wurden alle Indizes um 1 erhöht,&#xA;damit Arrays mit dem Index 1 beginnen.&lt;/p&gt;&#xA;&lt;h2 id=&#34;beispiel&#34;&gt;Beispiel&lt;/h2&gt;&#xA;&lt;p&gt;Eingabe:&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://www.berndplumhoff.de/quickperm_input.png&#34; alt=&#34;quickperm_input&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Ausgabe:&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://www.berndplumhoff.de/quickperm_output.png&#34; alt=&#34;quickperm_output&#34;&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Kombinationen mit Subsets k von n (Excel / VBA)</title>
      <link>https://www.berndplumhoff.de/kombinationen_mit_subsets_k_von_n_de/</link>
      <pubDate>Wed, 20 May 2026 04:35:00 +0100</pubDate>
      <guid>https://www.berndplumhoff.de/kombinationen_mit_subsets_k_von_n_de/</guid>
      <description>&lt;h2 id=&#34;abstract&#34;&gt;Abstract&lt;/h2&gt;&#xA;&lt;p&gt;Dieser Algorithmus erzeugt alle Kombinationen von k Elementen aus einer Gesamtmenge mit n Elementen.&lt;/p&gt;&#xA;&lt;p&gt;Während die Excel Funktion &lt;em&gt;KOMBINATIONEN(n; k)&lt;/em&gt; die Anzahl dieser Kombinationen anzeigt, listet&#xA;der hier vorgestellte Algorithmus alle einzeln, damit sie ggf. untersucht werden können.&#xA;Das vorgestellte Programm ist schnell - zum Vergleich siehe unten die unter &lt;strong&gt;Weitere Links&lt;/strong&gt;&#xA;zu findenden Formelansätze.&lt;/p&gt;&#xA;&lt;h3 id=&#34;beispiel&#34;&gt;Beispiel&lt;/h3&gt;&#xA;&lt;p&gt;Eingabe:&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://www.berndplumhoff.de/combinations_with_k_subsets_of_n_input.png&#34; alt=&#34;combinations_with_k_subsets_of_n_input&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Ausgabe:&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://www.berndplumhoff.de/combinations_with_k_subsets_of_n_output.png&#34; alt=&#34;combinations_with_k_subsets_of_n_output&#34;&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;literatur&#34;&gt;Literatur&lt;/h2&gt;&#xA;&lt;p&gt;Reingold, Nievergelt, Deo: Combinatorial Algorithms, 1977, Algorithm 5.9, p. 186, ISBN 0-13-152447-X&lt;/p&gt;</description>
    </item>
    <item>
      <title>Fixe Summe aus verschiedenen Zufallsbereichen (Excel)</title>
      <link>https://www.berndplumhoff.de/sbfixsumfromrandomcorridors_de/</link>
      <pubDate>Wed, 20 May 2026 04:34:00 +0100</pubDate>
      <guid>https://www.berndplumhoff.de/sbfixsumfromrandomcorridors_de/</guid>
      <description>&lt;h2 id=&#34;abstract&#34;&gt;Abstract&lt;/h2&gt;&#xA;&lt;p&gt;Sie benötigen sieben Zufallszahlen aus verschiedenen Zahlenbereichen, die zusammen genau 100 ergeben?&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://www.berndplumhoff.de/sbfixsumfromrandomcorridors.png&#34; alt=&#34;sbfixsumfromrandomcorridors&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://www.berndplumhoff.de/sbfixsumfromrandomcorridors_formulas.png&#34; alt=&#34;sbfixsumfromrandomcorridors_formulas&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Wichtiger Hinweis: Es existiert keine Lösung, wenn die Summe der Untergrenzen größer als 100 ist&#xA;oder wenn die Summe der Obergrenzen kleiner ist als 100! Dies wird in den Zellen K2:K3 geprüft.&lt;/p&gt;&#xA;&lt;h2 id=&#34;die-verteilung-der-zufallszahlen&#34;&gt;Die Verteilung der Zufallszahlen&lt;/h2&gt;&#xA;&lt;p&gt;Die erzeugten Zufallszahlen im obigen Beispiel sind relativ gleichverteilt.&lt;/p&gt;&#xA;&lt;p&gt;Bei 1.048.572 erzeugten Reihen von jeweils 7 Zahlen erhält man für die originale Sortierung der Grenzwert-Korridore:&lt;/p&gt;</description>
    </item>
    <item>
      <title>PF_Allocate (VBA)</title>
      <link>https://www.berndplumhoff.de/pf_allocate_de/</link>
      <pubDate>Wed, 20 May 2026 04:33:00 +0100</pubDate>
      <guid>https://www.berndplumhoff.de/pf_allocate_de/</guid>
      <description>&lt;h2 id=&#34;abstract&#34;&gt;Abstract&lt;/h2&gt;&#xA;&lt;p&gt;Falls Sie ein Zufallsportfolio mit einer gegebenen Summe und Ober- und Untergrenzen&#xA;für jedes Asset erzeugen müssen, können Sie die Funktion PF_Allocate() verwenden:&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://www.berndplumhoff.de/PF_Allocate.png&#34; alt=&#34;PF_Allocate&#34;&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;appendix--programmcode-pf_allocate&#34;&gt;Appendix – Programmcode PF_Allocate&lt;/h2&gt;&#xA;&lt;p&gt;Bitte beachten Sie dass dieses Programm &lt;a href=&#34;https://www.berndplumhoff.de/excel_vba_eine_sammlung_de/&#34; title=&#34;UniqRandInt&#34;&gt;VBUniqRandInt&lt;/a&gt; benötigt (aufruft).&lt;/p&gt;&#xA;&lt;p&gt;Bitte den Haftungsausschluss im &lt;a href=&#34;https://www.berndplumhoff.de/about/impressum_de/&#34; title=&#34;Impressum&#34;&gt;Impressum&lt;/a&gt; beachten.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-VB.net&#34; data-lang=&#34;VB.net&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Option&lt;/span&gt; Explicit&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Function&lt;/span&gt; PF_Allocate(db &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Double&lt;/span&gt;, _&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    vlb &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Variant&lt;/span&gt;, _&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    vub &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Variant&lt;/span&gt;) &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Double&lt;/span&gt;()&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;Generate a portfolio of assets x1..xN&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;x1..xN being random numbers (double) with:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;x1+x2+..xN = db &amp;#39;budget&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;xi &amp;gt;= vlb(i)    &amp;#39;lower bound vector&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;xi &amp;lt;= vub(i)    &amp;#39;upper bound vector&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;Source (EN): https://www.sulprobil.de/pf_allocate_en/&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;Source (DE): https://www.berndplumhoff.de/pf_allocate_de/&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;(C) (P) by Bernd Plumhoff 26-Jul-2020 PB V0.11&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Dim&lt;/span&gt; i &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Variant&lt;/span&gt;, n &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Long&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Dim&lt;/span&gt; dcumx &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Double&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Dim&lt;/span&gt; dcumlb &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Double&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Dim&lt;/span&gt; dcumub &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Double&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Dim&lt;/span&gt; dxlb &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Double&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Dim&lt;/span&gt; dxub &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Double&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;Application.Volatile&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&lt;/span&gt;dcumlb = Application.WorksheetFunction.Sum(vlb)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;dcumub = Application.WorksheetFunction.Sum(vub)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt; dcumlb &amp;gt; db &lt;span style=&#34;color:#00f&#34;&gt;Or&lt;/span&gt; dcumub &amp;lt; db &lt;span style=&#34;color:#00f&#34;&gt;Then&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    PF_Allocate = CVErr(xlErrValue)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#00f&#34;&gt;Exit&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;Function&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;End &lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;n = vlb.Count&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;ReDim&lt;/span&gt; dR(1 &lt;span style=&#34;color:#00f&#34;&gt;To&lt;/span&gt; n) &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Double&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;dcumx = 0#&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;For i = 1 To n &amp;#39;Old biased solution&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#00f&#34;&gt;For&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;Each&lt;/span&gt; i &lt;span style=&#34;color:#00f&#34;&gt;In&lt;/span&gt; VBUniqRandInt(n, n)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;Source (EN): https://www.sulprobil.de/uniqrandint_en/&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&lt;/span&gt;    &lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt; vlb(i) &amp;gt; vub(i) &lt;span style=&#34;color:#00f&#34;&gt;Then&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        PF_Allocate = CVErr(xlErrValue)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#00f&#34;&gt;Exit&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;Function&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    End &lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    dcumlb = dcumlb - vlb(i)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    dcumub = dcumub - vub(i)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    dxlb = db - dcumx - dcumub&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt; dxlb &amp;lt; vlb(i) &lt;span style=&#34;color:#00f&#34;&gt;Then&lt;/span&gt; dxlb = vlb(i) &lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;dxlb = Min(..)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&lt;/span&gt;    dxub = db - dcumx - dcumlb&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt; dxub &amp;gt; vub(i) &lt;span style=&#34;color:#00f&#34;&gt;Then&lt;/span&gt; dxub = vub(i) &lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;dxub = Max(..)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&lt;/span&gt;    dR(i) = dxlb + Rnd() * (dxub - dxlb)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    dcumx = dcumx + dR(i)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Next&lt;/span&gt; i&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;PF_Allocate = dR&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;End&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;Function&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;downlaod&#34;&gt;Downlaod&lt;/h2&gt;&#xA;&lt;p&gt;Bitte den Haftungsausschluss im &lt;a href=&#34;https://www.berndplumhoff.de/about/impressum_de/&#34; title=&#34;Impressum&#34;&gt;Impressum&lt;/a&gt; beachten.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Lineare Gleichungssysteme mit rationalen Koeffizienten (VBA)</title>
      <link>https://www.berndplumhoff.de/linear_equations_de/</link>
      <pubDate>Wed, 20 May 2026 04:32:00 +0100</pubDate>
      <guid>https://www.berndplumhoff.de/linear_equations_de/</guid>
      <description>&lt;h2 id=&#34;abstract&#34;&gt;Abstract&lt;/h2&gt;&#xA;&lt;p&gt;Lineare Gleichungssysteme der Form A * x = b mit der regulären quadratischen&#xA;Matrix A und dem Ergebnisvektor b haben eine eindeutige Lösung, da die&#xA;Determinante von A ungleich Null ist.&#xA;Sind die Koeffizienten von A und b rationale Zahlen, so ist auch die Lösung rational.&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://www.berndplumhoff.de/Linear_Equations_with_rational_coefficients.png&#34; alt=&#34;Linear_Equations_with_rational_coefficients&#34;&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;siehe-auch&#34;&gt;Siehe auch&lt;/h2&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://www.berndplumhoff.de/sbnrn_de/&#34; title=&#34;sbNRN&#34;&gt;sbNRN&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://www.berndplumhoff.de/exakte_rechnung_mit_rationalen_zahlen_de/&#34; title=&#34;Exakte Rechnung mit rationalen Zahlen&#34;&gt;Exakte Rechnung mit rationalen Zahlen&lt;/a&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;literatur&#34;&gt;Literatur&lt;/h2&gt;&#xA;&lt;p&gt;(Externer Link!) &lt;a href=&#34;https://www.sciencedirect.com/science/article/pii/0771050X7890027X/pdf?md5=b667c7b5a79db140f4b1e10319c6ba89&amp;amp;pid=1-s2.0-0771050X7890027X-main.pdf&#34;&gt;Oliver Aberth, A method for exact computation with rational numbers,  JCAM, vol 4, no. 4, 1978&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Statistiken für gewichtete Werte (VBA)</title>
      <link>https://www.berndplumhoff.de/sbswv_de/</link>
      <pubDate>Wed, 20 May 2026 04:31:00 +0100</pubDate>
      <guid>https://www.berndplumhoff.de/sbswv_de/</guid>
      <description>&lt;h2 id=&#34;statistiken-für-gewichtete-werte&#34;&gt;Statistiken für gewichtete Werte&lt;/h2&gt;&#xA;&lt;p&gt;Berechnet werden die folgenden Statistiken für gewichtete Werte:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Durchschnitt&lt;/li&gt;&#xA;&lt;li&gt;Korrelation&lt;/li&gt;&#xA;&lt;li&gt;Kovarianz&lt;/li&gt;&#xA;&lt;li&gt;Modus&lt;/li&gt;&#xA;&lt;li&gt;Median&lt;/li&gt;&#xA;&lt;li&gt;Schiefe (statistische Grundgesamtheit)&lt;/li&gt;&#xA;&lt;li&gt;Standardabweichung (Stichprobe und statistische Grundgesamtheit)&lt;/li&gt;&#xA;&lt;li&gt;Varianz&lt;/li&gt;&#xA;&lt;li&gt;Wölbung (Kurtose)&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Bitte beachten Sie, dass die Gewichte natürliche (d.h. positive ganze) Zahlen sein müssen.&lt;/p&gt;&#xA;&lt;h2 id=&#34;beispiel&#34;&gt;Beispiel&lt;/h2&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://www.berndplumhoff.de/sbSWV_Screen.png&#34; alt=&#34;sbSWV_Screen&#34;&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;appendix---programmcode-sbswv&#34;&gt;Appendix - Programmcode sbSWV&lt;/h2&gt;&#xA;&lt;p&gt;Bitte den Haftungsausschluss im &lt;a href=&#34;https://www.berndplumhoff.de/about/impressum_de/&#34; title=&#34;Impressum&#34;&gt;Impressum&lt;/a&gt; beachten.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-VB.net&#34; data-lang=&#34;VB.net&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Option&lt;/span&gt; Explicit&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;#Const&lt;/span&gt; SORTED = &lt;span style=&#34;color:#00f&#34;&gt;False&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Function&lt;/span&gt; sbSWV(sStat &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;String&lt;/span&gt;, _&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#00f&#34;&gt;ParamArray&lt;/span&gt; vInput() &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Variant&lt;/span&gt;) &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Variant&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;Calculate some statistical measures of weighted values&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;Source (EN): https://www.sulprobil.de/sbswv_en/&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;Source (DE): https://www.berndplumhoff.de/sbswv_de/&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;(C) (P) by Bernd Plumhoff 20-Aug-2024 PB V0.81&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Dim&lt;/span&gt; d &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Double&lt;/span&gt;, d2 &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Double&lt;/span&gt;, dSum &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Double&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Dim&lt;/span&gt; i &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Long&lt;/span&gt;, j &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Long&lt;/span&gt;, k &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Long&lt;/span&gt;, m &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Long&lt;/span&gt;, n &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Long&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Dim&lt;/span&gt; vV, vV2, vV3, vW &lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;Variants&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;With&lt;/span&gt; Application.WorksheetFunction&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;vV = .Transpose(vInput(0))&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Select&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;Case&lt;/span&gt; sStat&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Case&lt;/span&gt; &lt;span style=&#34;color:#a31515&#34;&gt;&amp;#34;COVAR&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#a31515&#34;&gt;&amp;#34;CORREL&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    vV2 = .Transpose(vInput(1))&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    vW = .Transpose(vInput(2))&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Case&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;Else&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    vW = .Transpose(vInput(1))&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;End&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;Select&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;On&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;Error&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;GoTo&lt;/span&gt; errhdl&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;i = vV(1) &lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;Force error in case of vertical arrays&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#00f&#34;&gt;On&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;Error&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;GoTo&lt;/span&gt; 0&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt; UBound(vV) &amp;lt;&amp;gt; UBound(vW) &lt;span style=&#34;color:#00f&#34;&gt;Then&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;Arrays of values and of weights must have same dimension&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&lt;/span&gt;    sbSWV = CVErr(xlErrNum)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#00f&#34;&gt;Exit&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;Function&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;End &lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Select&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;Case&lt;/span&gt; UCase(sStat)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Case&lt;/span&gt; &lt;span style=&#34;color:#a31515&#34;&gt;&amp;#34;AVERAGE&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    sbSWV = .SumProduct(vV, vW) / .Sum(vW)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Case&lt;/span&gt; &lt;span style=&#34;color:#a31515&#34;&gt;&amp;#34;CORREL&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    vV3 = vV&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    dSum = .Sum(vW)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    d = .SumProduct(vV, vW) / dSum&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    d2 = .SumProduct(vV2, vW) / dSum&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#00f&#34;&gt;For&lt;/span&gt; i = LBound(vV) &lt;span style=&#34;color:#00f&#34;&gt;To&lt;/span&gt; UBound(vV)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        vV3(i) = vW(i) * (vV(i) - d) * (vV2(i) - d2)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        vV(i) = vW(i) * (vV(i) - d) ^ 2#&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        vV2(i) = vW(i) * (vV2(i) - d2) ^ 2#&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#00f&#34;&gt;Next&lt;/span&gt; i&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    sbSWV = .Sum(vV3) / Sqr(.Sum(vV) * .Sum(vV2))&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Case&lt;/span&gt; &lt;span style=&#34;color:#a31515&#34;&gt;&amp;#34;COVAR&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    dSum = .Sum(vW)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    d = .SumProduct(vV, vW) / dSum&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    d2 = .SumProduct(vV2, vW) / dSum&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#00f&#34;&gt;For&lt;/span&gt; i = LBound(vV) &lt;span style=&#34;color:#00f&#34;&gt;To&lt;/span&gt; UBound(vV)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        vV(i) = vW(i) * (vV(i) - d) * (vV2(i) - d2)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#00f&#34;&gt;Next&lt;/span&gt; i&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    sbSWV = .Sum(vV) / dSum&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Case&lt;/span&gt; &lt;span style=&#34;color:#a31515&#34;&gt;&amp;#34;KURT&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    n = .Sum(vW)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#00f&#34;&gt;ReDim&lt;/span&gt; dV(1 &lt;span style=&#34;color:#00f&#34;&gt;To&lt;/span&gt; n) &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Double&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    k = 1&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#00f&#34;&gt;For&lt;/span&gt; i = 1 &lt;span style=&#34;color:#00f&#34;&gt;To&lt;/span&gt; UBound(vW)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#00f&#34;&gt;For&lt;/span&gt; j = 1 &lt;span style=&#34;color:#00f&#34;&gt;To&lt;/span&gt; vW(i)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        dV(k) = vV(i)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        k = k + 1&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#00f&#34;&gt;Next&lt;/span&gt; j&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#00f&#34;&gt;Next&lt;/span&gt; i&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    sbSWV = .Kurt(dV)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Case&lt;/span&gt; &lt;span style=&#34;color:#a31515&#34;&gt;&amp;#34;MODE&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    k = .Max(vW)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt; k &amp;lt; 2 &lt;span style=&#34;color:#00f&#34;&gt;Then&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        sbSWV = CVErr(xlErrNA)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#00f&#34;&gt;Exit&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;Function&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    End &lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    sbSWV = vV(.Match(.Max(vW), vW, &lt;span style=&#34;color:#00f&#34;&gt;False&lt;/span&gt;))&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Case&lt;/span&gt; &lt;span style=&#34;color:#a31515&#34;&gt;&amp;#34;MEDIAN&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt; .Min(vW) &amp;lt; 1 &lt;span style=&#34;color:#00f&#34;&gt;Then&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        sbSWV = CVErr(xlErrNA)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#00f&#34;&gt;Exit&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;Function&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    End &lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    k = 0&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    j = .Sum(vW)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    m = j &lt;span style=&#34;color:#00f&#34;&gt;Mod&lt;/span&gt; 2&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#00f&#34;&gt;For&lt;/span&gt; i = LBound(vW) &lt;span style=&#34;color:#00f&#34;&gt;To&lt;/span&gt; UBound(vW)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt; vW(i) &lt;span style=&#34;color:#00f&#34;&gt;Mod&lt;/span&gt; 1 &amp;lt;&amp;gt; 0 &lt;span style=&#34;color:#00f&#34;&gt;Then&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            sbSWV = CVErr(xlErrNum)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#00f&#34;&gt;Exit&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;Function&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        End &lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#00f&#34;&gt;#If Not SORTED Then&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;Ensure ascending values in case input is unsorted.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&lt;/span&gt;            &lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;This simple bubble sort leads to a quadratic runtime&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&lt;/span&gt;            &lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;but it&amp;#39;s still quicker on 50 input values or more than&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&lt;/span&gt;            &lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;Lorimer Miller&amp;#39;s nifty worksheet function approach&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&lt;/span&gt;            &lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;=LOOKUP(2,1/FREQUENCY(SUM(B1:B50)/2,SUMIF(A1:A50,&amp;#34;&amp;lt;=&amp;#34;&amp;amp;A1:A50,B1:B50)),A1:A50)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&lt;/span&gt;            &lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;BTW: Lorimer&amp;#39;s approach is different from Excel&amp;#39;s MEDIAN&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&lt;/span&gt;            &lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;(see below); and his other elegant array formula&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&lt;/span&gt;            &lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;=MEDIAN(IF(TRANSPOSE(ROW(A1:A1000))&amp;lt;=B1:B50,A1:A50))&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&lt;/span&gt;            &lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;calculates like Excel&amp;#39;s MEDIAN but IMHO it&amp;#39;s way too slow&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&lt;/span&gt;            &lt;span style=&#34;color:#00f&#34;&gt;For&lt;/span&gt; n = i + 1 &lt;span style=&#34;color:#00f&#34;&gt;To&lt;/span&gt; UBound(vW)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                &lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt; vV(n) &amp;lt; vV(i) &lt;span style=&#34;color:#00f&#34;&gt;Then&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                    d = vV(i)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                    vV(i) = vV(n)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                    vV(n) = d&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                    d = vW(i)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                    vW(i) = vW(n)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                    vW(n) = d&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                &lt;span style=&#34;color:#00f&#34;&gt;End&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#00f&#34;&gt;Next&lt;/span&gt; n&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#00f&#34;&gt;#End If&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        k = k + vW(i)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#00f&#34;&gt;Select&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;Case&lt;/span&gt; 2 * k&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#00f&#34;&gt;Case&lt;/span&gt; j + m&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt; m = 0 &lt;span style=&#34;color:#00f&#34;&gt;Then&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                &lt;span style=&#34;color:#00f&#34;&gt;#If Not SORTED Then&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                    &lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;Ensure vV(i + 1) is next greater value&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&lt;/span&gt;                    &lt;span style=&#34;color:#00f&#34;&gt;For&lt;/span&gt; n = i + 2 &lt;span style=&#34;color:#00f&#34;&gt;To&lt;/span&gt; UBound(vW)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                        &lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt; vV(n) &amp;lt; vV(i + 1) &lt;span style=&#34;color:#00f&#34;&gt;Then&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                            vV(i + 1) = vV(n)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                        &lt;span style=&#34;color:#00f&#34;&gt;End&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                    &lt;span style=&#34;color:#00f&#34;&gt;Next&lt;/span&gt; n&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                &lt;span style=&#34;color:#00f&#34;&gt;#End If&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                &lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;Here Lorimer&amp;#39;s function mentioned above would&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&lt;/span&gt;                &lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;return vV(i), the lower value&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&lt;/span&gt;                sbSWV = (vV(i) + vV(i + 1)) / 2#&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#00f&#34;&gt;Else&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                sbSWV = vV(i)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#00f&#34;&gt;End&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#00f&#34;&gt;Exit&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;Function&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        Case &lt;span style=&#34;color:#00f&#34;&gt;Is&lt;/span&gt; &amp;gt; j + m&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            sbSWV = vV(i)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#00f&#34;&gt;Exit&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;Function&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        End &lt;span style=&#34;color:#00f&#34;&gt;Select&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#00f&#34;&gt;Next&lt;/span&gt; i&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Case&lt;/span&gt; &lt;span style=&#34;color:#a31515&#34;&gt;&amp;#34;SKEW.P&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    n = .Sum(vW)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#00f&#34;&gt;ReDim&lt;/span&gt; dV(1 &lt;span style=&#34;color:#00f&#34;&gt;To&lt;/span&gt; n) &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Double&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    k = 1&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#00f&#34;&gt;For&lt;/span&gt; i = 1 &lt;span style=&#34;color:#00f&#34;&gt;To&lt;/span&gt; UBound(vW)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#00f&#34;&gt;For&lt;/span&gt; j = 1 &lt;span style=&#34;color:#00f&#34;&gt;To&lt;/span&gt; vW(i)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        dV(k) = vV(i)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        k = k + 1&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#00f&#34;&gt;Next&lt;/span&gt; j&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#00f&#34;&gt;Next&lt;/span&gt; i&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    sbSWV = .Skew_p(dV)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Case&lt;/span&gt; &lt;span style=&#34;color:#a31515&#34;&gt;&amp;#34;STDEV&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    dSum = .Sum(vW)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    d = .SumProduct(vV, vW) / dSum&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#00f&#34;&gt;For&lt;/span&gt; i = LBound(vV) &lt;span style=&#34;color:#00f&#34;&gt;To&lt;/span&gt; UBound(vV)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        vV(i) = Abs(vV(i) - d) ^ 2#&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#00f&#34;&gt;Next&lt;/span&gt; i&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    sbSWV = Sqr(.SumProduct(vV, vW) / (dSum - 1#))&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Case&lt;/span&gt; &lt;span style=&#34;color:#a31515&#34;&gt;&amp;#34;STDEV.P&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    dSum = .Sum(vW)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    d = .SumProduct(vV, vW) / dSum&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#00f&#34;&gt;For&lt;/span&gt; i = LBound(vV) &lt;span style=&#34;color:#00f&#34;&gt;To&lt;/span&gt; UBound(vV)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        vV(i) = Abs(vV(i) - d) ^ 2#&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#00f&#34;&gt;Next&lt;/span&gt; i&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    sbSWV = Sqr(.SumProduct(vV, vW) / dSum)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Case&lt;/span&gt; &lt;span style=&#34;color:#a31515&#34;&gt;&amp;#34;VAR&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    dSum = .Sum(vW)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    d = .SumProduct(vV, vW) / dSum&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#00f&#34;&gt;For&lt;/span&gt; i = LBound(vV) &lt;span style=&#34;color:#00f&#34;&gt;To&lt;/span&gt; UBound(vV)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        vV(i) = vW(i) * (vV(i) - d) ^ 2#&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#00f&#34;&gt;Next&lt;/span&gt; i&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    sbSWV = .Sum(vV) / (dSum - 1#)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Case&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;Else&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    sbSWV = CVErr(xlErrValue)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;End&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;Select&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Exit&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;Function&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;errhdl:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;Transpose variants to be able to address them&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;with vV(i), not vV(i,1)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&lt;/span&gt;vV = .Transpose(vV)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;vW = .Transpose(vW)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Select&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;Case&lt;/span&gt; sStat&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Case&lt;/span&gt; &lt;span style=&#34;color:#a31515&#34;&gt;&amp;#34;COVAR&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#a31515&#34;&gt;&amp;#34;CORREL&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    vV2 = .Transpose(vV2)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;End&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;Select&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Resume&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;Next&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;End&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;With&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;End&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;Function&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;download&#34;&gt;Download&lt;/h2&gt;&#xA;&lt;p&gt;Bitte den Haftungsausschluss im &lt;a href=&#34;https://www.berndplumhoff.de/about/impressum_de/&#34; title=&#34;Impressum&#34;&gt;Impressum&lt;/a&gt; beachten.&lt;/p&gt;</description>
    </item>
    <item>
      <title>ApplicationVersion (VBA)</title>
      <link>https://www.berndplumhoff.de/applicationversion_de/</link>
      <pubDate>Wed, 20 May 2026 04:30:00 +0100</pubDate>
      <guid>https://www.berndplumhoff.de/applicationversion_de/</guid>
      <description>&lt;p&gt;&lt;strong&gt;{Sturgeon&amp;rsquo;s Law} &amp;ldquo;Sure, 90% of all software is crap.&#xA;That&amp;rsquo;s because 90% of everything is crap.&amp;rdquo; [Mary Shaw, Carnegie-Mellon University]&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;abstract&#34;&gt;Abstract&lt;/h2&gt;&#xA;&lt;p&gt;Microsoft hat in seiner unendlichen Weisheit beschlossen, ab Excel 2016&#xA;den Wert von &lt;em&gt;Application.Version&lt;/em&gt; nicht über 16 hinaus zu erhöhen.&lt;/p&gt;&#xA;&lt;p&gt;Meine Funktion &lt;em&gt;ApplicationVersion&lt;/em&gt; behebt dies und gibt einen verständlichen&#xA;Versionsstring zurück.&lt;/p&gt;&#xA;&lt;h2 id=&#34;appendix--programmcode-applicationversion&#34;&gt;Appendix – Programmcode ApplicationVersion&lt;/h2&gt;&#xA;&lt;p&gt;Bitte den Haftungsausschluss im &lt;a href=&#34;https://www.berndplumhoff.de/about/impressum_de/&#34; title=&#34;Impressum&#34;&gt;Impressum&lt;/a&gt; beachten.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-VB.net&#34; data-lang=&#34;VB.net&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Function&lt;/span&gt; ApplicationVersion(&lt;span style=&#34;color:#00f&#34;&gt;Optional&lt;/span&gt; bShowBuild365 &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Boolean&lt;/span&gt; = &lt;span style=&#34;color:#00f&#34;&gt;True&lt;/span&gt;) &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;String&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;Returns MS Excel&amp;#39;s version - with a little kludge&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;Source (EN): https://www.sulprobil.de/applicationversion_en/&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;Source (DE): https://www.berndplumhoff.de/applicationversion_de/&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;(C) (P) by Bernd Plumhoff 20-Oct-2024 PB V0.61&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Dim&lt;/span&gt; n &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Integer&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;With&lt;/span&gt; Application&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;n = Val(.Version)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Select&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;Case&lt;/span&gt; n&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Case&lt;/span&gt; 16&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  ApplicationVersion = &lt;span style=&#34;color:#a31515&#34;&gt;&amp;#34;Excel 2016&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#00f&#34;&gt;On&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;Error&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;Resume&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;Next&lt;/span&gt; &lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;We know what we are doing&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&lt;/span&gt;  &lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;Excel 2024 (LTSC) introduced ValueToText&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&lt;/span&gt;  n = Val(.ValueToText(19))&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt; n = 19 &lt;span style=&#34;color:#00f&#34;&gt;Then&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt; .Build = &lt;span style=&#34;color:#a31515&#34;&gt;&amp;#34;17932&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;Then&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      ApplicationVersion = &lt;span style=&#34;color:#a31515&#34;&gt;&amp;#34;Excel 2024&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#00f&#34;&gt;Else&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt; bShowBuild365 &lt;span style=&#34;color:#00f&#34;&gt;Then&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;When all of them are 365 you might want to know the build.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&lt;/span&gt;        ApplicationVersion = &lt;span style=&#34;color:#a31515&#34;&gt;&amp;#34;Excel 365 (Build &amp;#34;&lt;/span&gt; &amp;amp; .Build &amp;amp; &lt;span style=&#34;color:#a31515&#34;&gt;&amp;#34;)&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#00f&#34;&gt;Else&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        ApplicationVersion = &lt;span style=&#34;color:#a31515&#34;&gt;&amp;#34;Excel 365&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#00f&#34;&gt;End&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#00f&#34;&gt;End&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#00f&#34;&gt;Else&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;Excel 2021 (LTSC) introduced RandArray&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&lt;/span&gt;    n = .RandArray(1, 1, 18, 18, &lt;span style=&#34;color:#00f&#34;&gt;True&lt;/span&gt;)(1)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt; n = 18 &lt;span style=&#34;color:#00f&#34;&gt;Then&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      ApplicationVersion = &lt;span style=&#34;color:#a31515&#34;&gt;&amp;#34;Excel 2021&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#00f&#34;&gt;Else&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;Excel 2019 introduced TextJoin&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&lt;/span&gt;      n = Val(.TextJoin(&lt;span style=&#34;color:#a31515&#34;&gt;&amp;#34; &amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#00f&#34;&gt;True&lt;/span&gt;, &lt;span style=&#34;color:#a31515&#34;&gt;&amp;#34;17&amp;#34;&lt;/span&gt;))&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt; n = 17 &lt;span style=&#34;color:#00f&#34;&gt;Then&lt;/span&gt; ApplicationVersion = &lt;span style=&#34;color:#a31515&#34;&gt;&amp;#34;Excel 2019&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#00f&#34;&gt;End&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#00f&#34;&gt;End&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#00f&#34;&gt;On&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;Error&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;GoTo&lt;/span&gt; 0&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Case&lt;/span&gt; 15&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  ApplicationVersion = &lt;span style=&#34;color:#a31515&#34;&gt;&amp;#34;Excel 2013&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Case&lt;/span&gt; 14&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  ApplicationVersion = &lt;span style=&#34;color:#a31515&#34;&gt;&amp;#34;Excel 2010&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Case&lt;/span&gt; 12&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  ApplicationVersion = &lt;span style=&#34;color:#a31515&#34;&gt;&amp;#34;Excel 2007&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Case&lt;/span&gt; 11&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  ApplicationVersion = &lt;span style=&#34;color:#a31515&#34;&gt;&amp;#34;Excel 2003&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Case&lt;/span&gt; 10&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  ApplicationVersion = &lt;span style=&#34;color:#a31515&#34;&gt;&amp;#34;Excel 2002&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Case&lt;/span&gt; 9&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  ApplicationVersion = &lt;span style=&#34;color:#a31515&#34;&gt;&amp;#34;Excel 2000&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Case&lt;/span&gt; 8&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  ApplicationVersion = &lt;span style=&#34;color:#a31515&#34;&gt;&amp;#34;Excel 97&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Case&lt;/span&gt; 7&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  ApplicationVersion = &lt;span style=&#34;color:#a31515&#34;&gt;&amp;#34;Excel 7/95&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Case&lt;/span&gt; 5&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  ApplicationVersion = &lt;span style=&#34;color:#a31515&#34;&gt;&amp;#34;Excel 5&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Case&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;Else&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  ApplicationVersion = &lt;span style=&#34;color:#a31515&#34;&gt;&amp;#34;[Error]&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;End&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;Select&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;End&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;With&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;End&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;Function&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;download&#34;&gt;Download&lt;/h2&gt;&#xA;&lt;p&gt;Bitte den Haftungsausschluss im &lt;a href=&#34;https://www.berndplumhoff.de/about/impressum_de/&#34; title=&#34;Impressum&#34;&gt;Impressum&lt;/a&gt; beachten.&lt;/p&gt;</description>
    </item>
    <item>
      <title>sbRebalancedReturn (VBA)</title>
      <link>https://www.berndplumhoff.de/sbrebalancedreturn_de/</link>
      <pubDate>Wed, 20 May 2026 04:29:00 +0100</pubDate>
      <guid>https://www.berndplumhoff.de/sbrebalancedreturn_de/</guid>
      <description>&lt;h2 id=&#34;abstract&#34;&gt;Abstract&lt;/h2&gt;&#xA;&lt;p&gt;Die Neugewichtung eines Portfolios ist der Prozess, alle Assetklassen eines Portfolios&#xA;hinsichtlich ihrer Gewichtung wieder wie gewünscht auszurichten.&#xA;Sie bringen Ihr Portfolio wieder zur gewünschten Mischung von Aktien, Bonds, Cash und&#xA;anderen Produkten zurück, wenn sie nicht mehr mit Ihren Plänen oder Limiten übereinstimmen.&lt;/p&gt;&#xA;&lt;p&gt;Ein Beispiel:&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://www.berndplumhoff.de/Example_Rebalanced_Portfolio.PNG&#34; alt=&#34;Example_Rebalanced_Portfolio&#34;&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;appendix--programmcode-sbrebalancedreturn&#34;&gt;Appendix – Programmcode sbRebalancedReturn&lt;/h2&gt;&#xA;&lt;p&gt;Bitte den Haftungsausschluss im &lt;a href=&#34;https://www.berndplumhoff.de/about/impressum_de/&#34; title=&#34;Impressum&#34;&gt;Impressum&lt;/a&gt; beachten.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-VB.net&#34; data-lang=&#34;VB.net&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Option&lt;/span&gt; Explicit&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Const&lt;/span&gt; CMaxDouble = 1.79769313486231E+308&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Function&lt;/span&gt; sbRebalancedReturn(rARM &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; Range, _&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    rIWV &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; Range, _&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#00f&#34;&gt;Optional&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;ByVal&lt;/span&gt; lRF &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Long&lt;/span&gt; = 0, _&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#00f&#34;&gt;Optional&lt;/span&gt; dDT &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Double&lt;/span&gt; = CMaxDouble) &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Variant&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;RebalancedReturn calculates balanced returns for a&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;portfolio with given&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;rARM - asset return matrix (columns show different&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;       assets, rows show returns per asset over time)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;rIWV - initial weight vector for the assets&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;lRF  - rebalancing frequency (in time steps = rows)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;       If lRF &amp;gt; 0 then each lRF time step rebalancing&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;       will take place&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;       If lRF = 0 then no rebalancing will take place&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;       If lRF &amp;lt; 0 then each -lRF time step after last&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;       rebalance portfolio will be rebalanced again&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;dDT  - drift tolerance %, if any asset has drifted by&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;       by more than dDT (relative measure) then the&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;       portfolio will be rebalanced AND the internal&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;       rebalancing frequency count will be reset&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;The output matrix shows portfolio returns % in first&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;column, then end-of-period asset weights and finally&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;boolean output values in last column, showing whether&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;a rebalance happened.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;This function has been inspired by Andreas Steiner&amp;#39;s&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;similar function.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;Source (EN): https://www.sulprobil.de/sbrebalancedreturn_en/&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;Source (DE): https://www.berndplumhoff.de/sbrebalancedreturn_de/&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;(C) (P) by Bernd Plumhoff 19-Mar-2011 PB V0.2&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Dim&lt;/span&gt; i &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Long&lt;/span&gt;, j &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Long&lt;/span&gt;, k &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Long&lt;/span&gt;, n &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Long&lt;/span&gt;, m &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Long&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Dim&lt;/span&gt; bDrifted &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Boolean&lt;/span&gt;, bForceRB &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Boolean&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;n = rARM.Rows.Count &lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;Number of observations&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&lt;/span&gt;m = rARM.Columns.Count &lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;Number of assets&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt; m &amp;lt;&amp;gt; rIWV.Columns.Count &lt;span style=&#34;color:#00f&#34;&gt;Or&lt;/span&gt; _&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    rIWV.Rows.Count &amp;lt;&amp;gt; 1 &lt;span style=&#34;color:#00f&#34;&gt;Then&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    sbRebalancedReturn = CVErr(xlErrValue)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#00f&#34;&gt;Exit&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;Function&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;End &lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;ReDim&lt;/span&gt; w0(1 &lt;span style=&#34;color:#00f&#34;&gt;To&lt;/span&gt; m) &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Double&lt;/span&gt;, x(1 &lt;span style=&#34;color:#00f&#34;&gt;To&lt;/span&gt; m) &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Double&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;ReDim&lt;/span&gt; r(1 &lt;span style=&#34;color:#00f&#34;&gt;To&lt;/span&gt; n, 1 &lt;span style=&#34;color:#00f&#34;&gt;To&lt;/span&gt; m) &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Double&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt; lRF = 0 &lt;span style=&#34;color:#00f&#34;&gt;Then&lt;/span&gt; lRF = n&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt; lRF &amp;lt; 0 &lt;span style=&#34;color:#00f&#34;&gt;Then&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    lRF = -lRF&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    bForceRB = &lt;span style=&#34;color:#00f&#34;&gt;True&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Else&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    bForceRB = &lt;span style=&#34;color:#00f&#34;&gt;False&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;End&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;ReDim&lt;/span&gt; vR(1 &lt;span style=&#34;color:#00f&#34;&gt;To&lt;/span&gt; n, 1 &lt;span style=&#34;color:#00f&#34;&gt;To&lt;/span&gt; m + 2)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;For&lt;/span&gt; i = 1 &lt;span style=&#34;color:#00f&#34;&gt;To&lt;/span&gt; m&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    x(i) = rIWV(i)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    w0(i) = x(i)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#00f&#34;&gt;For&lt;/span&gt; j = 1 &lt;span style=&#34;color:#00f&#34;&gt;To&lt;/span&gt; n&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        r(j, i) = rARM(j, i)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#00f&#34;&gt;Next&lt;/span&gt; j&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Next&lt;/span&gt; i&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;k = 1&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;Model rebalancing tolerance&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#00f&#34;&gt;For&lt;/span&gt; i = 1 &lt;span style=&#34;color:#00f&#34;&gt;To&lt;/span&gt; n&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt; bDrifted &lt;span style=&#34;color:#00f&#34;&gt;And&lt;/span&gt; bForceRB &lt;span style=&#34;color:#00f&#34;&gt;Then&lt;/span&gt; k = i&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;Calculate period start weights&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&lt;/span&gt;    vR(i, m + 2) = (i - k) &lt;span style=&#34;color:#00f&#34;&gt;Mod&lt;/span&gt; lRF = 0 &lt;span style=&#34;color:#00f&#34;&gt;Or&lt;/span&gt; bDrifted&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt; vR(i, m + 2) &lt;span style=&#34;color:#00f&#34;&gt;Then&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#00f&#34;&gt;For&lt;/span&gt; j = 1 &lt;span style=&#34;color:#00f&#34;&gt;To&lt;/span&gt; m&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            x(j) = w0(j)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#00f&#34;&gt;Next&lt;/span&gt; j&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#00f&#34;&gt;Else&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#00f&#34;&gt;For&lt;/span&gt; j = 1 &lt;span style=&#34;color:#00f&#34;&gt;To&lt;/span&gt; m&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            x(j) = vR(i - 1, 1 + j)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#00f&#34;&gt;Next&lt;/span&gt; j&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#00f&#34;&gt;End&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;Calculate portfolio return&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&lt;/span&gt;    &lt;span style=&#34;color:#00f&#34;&gt;For&lt;/span&gt; j = 1 &lt;span style=&#34;color:#00f&#34;&gt;To&lt;/span&gt; m&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        vR(i, 1) = vR(i, 1) + x(j) * r(i, j)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#00f&#34;&gt;Next&lt;/span&gt; j&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;Calculate period end weights &amp;amp; check for drift&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&lt;/span&gt;    bDrifted = &lt;span style=&#34;color:#00f&#34;&gt;False&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#00f&#34;&gt;For&lt;/span&gt; j = 1 &lt;span style=&#34;color:#00f&#34;&gt;To&lt;/span&gt; m&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        vR(i, 1 + j) = x(j) * (1# + r(i, j)) / (1# + vR(i, 1))&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        bDrifted = bDrifted &lt;span style=&#34;color:#00f&#34;&gt;Or&lt;/span&gt; Abs(vR(i, 1 + j) - w0(j)) &amp;gt; dDT&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#00f&#34;&gt;Next&lt;/span&gt; j&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Next&lt;/span&gt; i&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sbRebalancedReturn = vR&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;End&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;Function&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;download&#34;&gt;Download&lt;/h2&gt;&#xA;&lt;p&gt;Bitte den Haftungsausschluss im &lt;a href=&#34;https://www.berndplumhoff.de/about/impressum_de/&#34; title=&#34;Impressum&#34;&gt;Impressum&lt;/a&gt; beachten.&lt;/p&gt;</description>
    </item>
    <item>
      <title>ArrayDim (VBA)</title>
      <link>https://www.berndplumhoff.de/arraydim_de/</link>
      <pubDate>Wed, 20 May 2026 04:28:00 +0100</pubDate>
      <guid>https://www.berndplumhoff.de/arraydim_de/</guid>
      <description>&lt;h2 id=&#34;abstract&#34;&gt;Abstract&lt;/h2&gt;&#xA;&lt;p&gt;Wie ermittelt man die Anzahl der Dimensionen eines Arrays?&lt;/p&gt;&#xA;&lt;h2 id=&#34;appendix--arraydim-programmcode&#34;&gt;Appendix – ArrayDim Programmcode&lt;/h2&gt;&#xA;&lt;p&gt;Bitte den Haftungsausschluss im &lt;a href=&#34;https://www.berndplumhoff.de/about/impressum_de/&#34; title=&#34;Impressum&#34;&gt;Impressum&lt;/a&gt; beachten.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-VB.net&#34; data-lang=&#34;VB.net&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Option&lt;/span&gt; Explicit&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Function&lt;/span&gt; ArrayDim(v &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Variant&lt;/span&gt;) &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Long&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;Returns number of dimensions of an array or 0 for&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;an undimensioned array or -1 if no array at all.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;Source (EN): https://www.sulprobil.de/arraydim_en/&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;Source (DE): https://www.berndplumhoff.de/arraydim_de/&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;(C) (P) by Bernd Plumhoff 10-May-2010 PB V0.1&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Dim&lt;/span&gt; i &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Long&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ArrayDim = -1&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;Not&lt;/span&gt; IsArray(v) &lt;span style=&#34;color:#00f&#34;&gt;Then&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;Exit&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;Function&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;On &lt;span style=&#34;color:#00f&#34;&gt;Error&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;Resume&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;Next&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;Err.Clear &amp;#39;Not necessary&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Do&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;While&lt;/span&gt; IsNumeric(UBound(v, i + 1))&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt; Err.Number &amp;lt;&amp;gt; 0 &lt;span style=&#34;color:#00f&#34;&gt;Then&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;Exit&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;Do&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  i = i + 1&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Loop&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ArrayDim = i&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;End&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;Function&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Sub&lt;/span&gt; test()&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;Expected output: -1, 0, 1, 3&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Dim&lt;/span&gt; v&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Dim&lt;/span&gt; w()&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Dim&lt;/span&gt; x(1 &lt;span style=&#34;color:#00f&#34;&gt;To&lt;/span&gt; 2)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Dim&lt;/span&gt; y(1, 2, 3)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Debug.Print ArrayDim(v)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Debug.Print ArrayDim(w)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Debug.Print ArrayDim(x)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Debug.Print ArrayDim(y)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;End&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;Sub&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;download&#34;&gt;Download&lt;/h2&gt;&#xA;&lt;p&gt;Bitte den Haftungsausschluss im &lt;a href=&#34;https://www.berndplumhoff.de/about/impressum_de/&#34; title=&#34;Impressum&#34;&gt;Impressum&lt;/a&gt; beachten.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Anteilsveränderung als Bruch (Excel/VBA)</title>
      <link>https://www.berndplumhoff.de/anteilsveraenderung_als_bruch_de/</link>
      <pubDate>Wed, 20 May 2026 04:27:00 +0100</pubDate>
      <guid>https://www.berndplumhoff.de/anteilsveraenderung_als_bruch_de/</guid>
      <description>&lt;h2 id=&#34;abstract&#34;&gt;Abstract&lt;/h2&gt;&#xA;&lt;p&gt;Manchmal müssen Sie Anteilsveränderungen einfach darstellen.&#xA;Das können Sie mit Brüchen zeigen:&lt;/p&gt;&#xA;&lt;p&gt;Beispiel: Eine Erbengemeinschaft besteht aus den Herren Müller, Meier und Schulz.&#xA;Meier verstirbt ohne Erben, sein Anteil wird aufgeteilt.&#xA;Schulz stirbt auch, sein Anteil geht zu 2/3 an seine Witwe und zu 1/3 an sein einziges Kind.&#xA;Bitte beachten Sie, dass Sie diese Anteile mit&#xA;&lt;em&gt;=1/3 * 2/3&lt;/em&gt; respektive &lt;em&gt;=1/3 * 1/3&lt;/em&gt; eingeben müssen, wobei das erste &lt;em&gt;1/3&lt;/em&gt;&#xA;den Originalanteil von Schulz darstellt.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Stichprobe normalverteilen (VBA)</title>
      <link>https://www.berndplumhoff.de/stichprobe_normalverteilen_de/</link>
      <pubDate>Wed, 20 May 2026 04:26:00 +0100</pubDate>
      <guid>https://www.berndplumhoff.de/stichprobe_normalverteilen_de/</guid>
      <description>&lt;h2 id=&#34;abstract&#34;&gt;Abstract&lt;/h2&gt;&#xA;&lt;p&gt;Sie haben 11.256 Weihnachtsbäume. Ein Kunde möchte Ihnen 1.500 davon abkaufen.&#xA;Die einzige Bedingung: die durchschnittliche Länge soll 6,50 Meter betragen.&lt;/p&gt;&#xA;&lt;p&gt;Sie würden nun gern die Restmenge Ihrer Weihnachtsbäume möglichst normalverteilt haben:&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://www.berndplumhoff.de/stichprobe_normalverteilen_diagram.png&#34; alt=&#34;stichprobe_normalverteilen_diagram&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Wie können Sie dies erreichen?&lt;/p&gt;&#xA;&lt;h2 id=&#34;eine-beispielrechnung&#34;&gt;Eine Beispielrechnung&lt;/h2&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://www.berndplumhoff.de/stichprobe_normalverteilen.png&#34; alt=&#34;stichprobe_normalverteilen&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Angenommen, Sie haben die oben gezeigte Menge an Bäumen mit den angegebenen Längen.&lt;/p&gt;&#xA;&lt;p&gt;Eine erste interessante Rechnung ist sicherlich, inwieweit Ihre Ausgangsmenge&#xA;bereits normalverteilt ist. Die Schiefe ermitteln wir mittels der Funktion&#xA;&lt;a href=&#34;https://www.berndplumhoff.de/sbswv_de/&#34; title=&#34;sbSWV&#34;&gt;sbSWV&lt;/a&gt;:&#xA;sie beträgt gerundet &lt;em&gt;=sbSWV(&amp;ldquo;SKEW.P&amp;rdquo;;$A$4:$A$21;B$4:B$21) = -0,35&lt;/em&gt;.&#xA;Der Exzess (Maß für die Wölbung) beträgt gerundet &lt;em&gt;=sbSWV(&amp;ldquo;KURT&amp;rdquo;;$A$4:$A$21;B$4:B$21) = 0,95&lt;/em&gt;.&#xA;Wie wir am oben gezeigten Diagramm am gelb-orangen Graphen sehen können, ist diese&#xA;Ausgangsmenge bereits &amp;ldquo;einigermaßen&amp;rdquo; normalverteilt.&lt;/p&gt;</description>
    </item>
    <item>
      <title>ManageOneDriveSync (VBA)</title>
      <link>https://www.berndplumhoff.de/manageonedrivesync_de/</link>
      <pubDate>Sun, 17 May 2026 07:08:00 +0100</pubDate>
      <guid>https://www.berndplumhoff.de/manageonedrivesync_de/</guid>
      <description>&lt;h2 id=&#34;abstract&#34;&gt;Abstract&lt;/h2&gt;&#xA;&lt;p&gt;Microsoft OneDrive ist ein Filehosting-Dienst von Microsoft.&#xA;Mithilfe dieses Dienstes kann man Dateien hochladen und auch von anderen Diensten aus abrufen und bearbeiten.&lt;/p&gt;&#xA;&lt;p&gt;Dieser Dienst beansprucht allerdings etwas Zeit, um Dateien zu synchronisieren.&#xA;Die VBA Subroutine &lt;em&gt;Check_OneDrive_Sync&lt;/em&gt; prüft, ob ein Programm bereits vollständig synchronisiert wurde (d.h.&#xA;lauffähig ist).&lt;/p&gt;&#xA;&lt;p&gt;Für die Erstellung oder Bearbeitung vieler Dateien empfiehlt es sich manchmal, OneDrive vorübergehend&#xA;auszuschalten. Dies ermöglicht die VBA Subroutine &lt;em&gt;ManageOnedriveSync&lt;/em&gt;.&lt;/p&gt;&#xA;&lt;h2 id=&#34;programmcode-check_onedrive_sync&#34;&gt;Programmcode Check_OneDrive_Sync&lt;/h2&gt;&#xA;&lt;p&gt;Bitte beachten: Diese Subroutine benötigt das Modul (externer Link!) &lt;a href=&#34;https://github.com/cristianbuse/VBA-FileTools&#34;&gt;LibFileTools&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Write-Log (PowerShell)</title>
      <link>https://www.berndplumhoff.de/write-log_de/</link>
      <pubDate>Sun, 17 May 2026 06:52:00 +0100</pubDate>
      <guid>https://www.berndplumhoff.de/write-log_de/</guid>
      <description>&lt;p&gt;&lt;strong&gt;&amp;ldquo;Knowing is not enough; we must apply. Willing is not enough; we must do.&amp;rdquo; [Johann Wolfgang von Goethe]&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;abstract&#34;&gt;Abstract&lt;/h2&gt;&#xA;&lt;p&gt;PowerShell ist eine Microsoft Windows basierte objektorientierte Script- oder&#xA;Programmiersprache. Sie hat eine eigene Befehlszeilenschnittstelle.&lt;/p&gt;&#xA;&lt;p&gt;Normalerweise würde ich eine plattform-unabhängige Sprache wie Python bevorzugen.&#xA;Aber innerhalb einer Windows-Umgebung kann man fast alles mit PowerShell bewerkstelligen.&#xA;Und manchmal möchte ich nicht alles mit Excel / VBA machen.&#xA;PowerShell kann Aufgaben im Hintergrund oder zu festgelegten Zeiten etc. durchführen.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Feiertage (Excel/VBA)</title>
      <link>https://www.berndplumhoff.de/feiertage_de/</link>
      <pubDate>Sat, 16 May 2026 10:44:00 +0100</pubDate>
      <guid>https://www.berndplumhoff.de/feiertage_de/</guid>
      <description>&lt;h2 id=&#34;abstract&#34;&gt;Abstract&lt;/h2&gt;&#xA;&lt;p&gt;Wollen Sie herausfinden, ob ein Datum ein deutscher Feiertag ist?&#xA;Oder ob es ein Feiertag in einem Bundesland ist?&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://www.berndplumhoff.de/feiertage.png&#34; alt=&#34;feiertage&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Hier sind alle Feiertage von 2023 bis 2100 gezeigt. Sie können die&#xA;Liste manuell ändern, z. B. Feiertage hinzufügen oder entfernen. Diese Liste&#xA;kann mit dem unten angebotenen Programm &lt;em&gt;Feiertage_generieren.xlsm&lt;/em&gt;&#xA;automatisch erzeugt werden, wobei aber historische Feiertagsänderungen&#xA;(z. B. Abschaffung des Buß- und Bettages seit 1995 mit Ausnahme Sachsens)&#xA;und Gebietsreformen (z. B. Wiedervereinigung 1990) nicht berücksichtigt sind.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Gemeinkostenumlage (Excel / VBA)</title>
      <link>https://www.berndplumhoff.de/gemeinkostenumlage_de/</link>
      <pubDate>Sat, 16 May 2026 10:44:00 +0100</pubDate>
      <guid>https://www.berndplumhoff.de/gemeinkostenumlage_de/</guid>
      <description>&lt;h2 id=&#34;abstract&#34;&gt;Abstract&lt;/h2&gt;&#xA;&lt;p&gt;Wenn Sie Gemeinkosten auf Kostenträger verrechnen müssen, ergibt sich häufig&#xA;das Problem, dass die Summe der umgelegten Kosten nicht cent-genau mit der&#xA;Ursprungssumme übereinstimmt.&lt;/p&gt;&#xA;&lt;p&gt;Hier hilft die benutzerdefinierte Excel Funktion &lt;a href=&#34;https://www.berndplumhoff.de/roundtosum_de/&#34; title=&#34;RoundToSum&#34;&gt;RoundToSum&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;h2 id=&#34;ein-praktisches-beispiel&#34;&gt;Ein praktisches Beispiel&lt;/h2&gt;&#xA;&lt;p&gt;Vorgestellt wird eine Gemeinkostenumlage, bei der sich die einzelnen Summanden cent-genau&#xA;zu den jeweiligen Gesamtsummen addieren.&lt;/p&gt;&#xA;&lt;p&gt;Zunächst legen Sie die Gemeinkosten auf alle anderen Kostenstellen um:&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;Schlüsselbezeichnung&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: right&#34;&gt;pro Kopf&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: right&#34;&gt;m²&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: right&#34;&gt;gleich&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: right&#34;&gt;Gewichtung&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;Gesamt&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: right&#34;&gt;&lt;strong&gt;102&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: right&#34;&gt;&lt;strong&gt;2685&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: right&#34;&gt;&lt;strong&gt;14&lt;/strong&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: right&#34;&gt;&lt;strong&gt;16&lt;/strong&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;GF&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: right&#34;&gt;1&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: right&#34;&gt;50&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: right&#34;&gt;1&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: right&#34;&gt;2&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Sekretariat&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: right&#34;&gt;1&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: right&#34;&gt;40&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: right&#34;&gt;1&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: right&#34;&gt;1&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;RW&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: right&#34;&gt;3&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: right&#34;&gt;100&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: right&#34;&gt;1&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: right&#34;&gt;1&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Controlling&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: right&#34;&gt;1&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: right&#34;&gt;30&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: right&#34;&gt;1&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: right&#34;&gt;1&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Personal&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: right&#34;&gt;2&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: right&#34;&gt;50&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: right&#34;&gt;1&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: right&#34;&gt;1&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;ÖA/Werbung&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: right&#34;&gt;3&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: right&#34;&gt;50&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: right&#34;&gt;1&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: right&#34;&gt;2&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Auszub.&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: right&#34;&gt;3&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: right&#34;&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: right&#34;&gt;1&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: right&#34;&gt;1&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Betriebsrat&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: right&#34;&gt;1&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: right&#34;&gt;15&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: right&#34;&gt;1&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: right&#34;&gt;1&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Werkstatt&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: right&#34;&gt;1&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: right&#34;&gt;12&#x9;250&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: right&#34;&gt;1&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: right&#34;&gt;1&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Werkstatt&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: right&#34;&gt;2&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: right&#34;&gt;10&#x9;350&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: right&#34;&gt;1&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: right&#34;&gt;1&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Fuhrpark&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: right&#34;&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: right&#34;&gt;100&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: right&#34;&gt;1&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: right&#34;&gt;1&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Fertigung1&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: right&#34;&gt;20&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: right&#34;&gt;500&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: right&#34;&gt;1&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: right&#34;&gt;1&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Fertigung2&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: right&#34;&gt;20&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: right&#34;&gt;550&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: right&#34;&gt;1&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: right&#34;&gt;1&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Fertigung3&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: right&#34;&gt;25&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: right&#34;&gt;600&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: right&#34;&gt;1&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: right&#34;&gt;1&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;hr&gt;&#xA;&lt;p&gt;Diese erste Gemeinkostenumlage erfolgt mit einer Matrixformel und dem Aufruf einer Rundungskorrektur,&#xA;damit die einzelnen Summanden cent-genau die Spaltensummen pro Kostenstelle ergeben:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Excel Don&#39;ts</title>
      <link>https://www.berndplumhoff.de/excel_donts_de/</link>
      <pubDate>Sat, 16 May 2026 10:43:00 +0100</pubDate>
      <guid>https://www.berndplumhoff.de/excel_donts_de/</guid>
      <description>&lt;p&gt;&lt;strong&gt;&amp;ldquo;Wenn ich mein Leben noch einmal leben könnte, würde ich die gleichen Fehler machen.&#xA;Aber ein bisschen früher damit ich mehr davon habe.&amp;rdquo; [Marlene Dietrich]&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;abstract&#34;&gt;Abstract&lt;/h2&gt;&#xA;&lt;p&gt;Kritik sollte konstruktiv sein. Im Allgemeinen versuche ich positiv zu zeigen, was man wie am besten machen könnte.&#xA;Aber in den mehr als 30 Jahren Excel Praxis sah ich einige Beispiele, die besser hätten vermieden werden sollen.&#xA;Eine Positivliste zur Excel / VBA zeige ich &lt;a href=&#34;https://www.berndplumhoff.de/excel_vba_eine_sammlung_de/&#34; title=&#34;Excel_VBA_Gute_Praxis&#34;&gt;hier&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Zellenbasierte Diagramme (Excel)</title>
      <link>https://www.berndplumhoff.de/zellenbasierte_diagramme_de/</link>
      <pubDate>Sat, 16 May 2026 05:40:00 +0100</pubDate>
      <guid>https://www.berndplumhoff.de/zellenbasierte_diagramme_de/</guid>
      <description>&lt;p&gt;Dietmar P. stellte ein interessantes zellenbasiertes Diagramm vor.&#xA;Ich änderte und erweiterte es etwas, z. B. mit automatischer Skalierung&#xA;und zwei neuen Parametern:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Ein Nummernformat, um eine allgemeine Formatänderung zu ermöglichen.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Einen Wahrheitswert-Parameter, um ggf. die Farben Grün und Rot vertauschen zu können.&#xA;Wenn man einen Berater beauftragt, möchte man vielleicht ein Unterschreiten des Budgets&#xA;grün anzeigen, aber im Falle von Verkaufszahlen sollte es besser rot sein.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://www.berndplumhoff.de/Budget_vs_Actual_Chart.png&#34; alt=&#34;Budget_vs_Actual_Chart&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Formel in H9:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Budgetkontrolle (Excel)</title>
      <link>https://www.berndplumhoff.de/budgetkontrolle_de/</link>
      <pubDate>Fri, 15 May 2026 13:01:00 +0100</pubDate>
      <guid>https://www.berndplumhoff.de/budgetkontrolle_de/</guid>
      <description>&lt;p&gt;&lt;strong&gt;&amp;ldquo;If you want creativity, take a zero off your budget. If you want sustainability, take off two zeros.&amp;rdquo; [Jaime Lerner]&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;abstract&#34;&gt;Abstract&lt;/h2&gt;&#xA;&lt;p&gt;Dies ist eine einfache Budgetplanung und -kontrolle.&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://www.berndplumhoff.de/Budgetkontrolle.png&#34; alt=&#34;Budgetkontrolle&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;In die Zellen B5:E5 geben Sie die jährlichen Planbudgets Ihrer Abteilungen oder Kostenstellen ein.&lt;/p&gt;&#xA;&lt;p&gt;In die Zellen G7:J18 gehören die saisonalen Gewichte der Abteilungen. Als Beispiele sind&#xA;Festartikel (Ostern und Weihnachten) sowie Badeartikel gezeigt. Der Einkauf hat&#xA;2 Monate vorher entsprechenden Aufwand.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Linearer Breakdown (Excel)</title>
      <link>https://www.berndplumhoff.de/linear_breakdown_de/</link>
      <pubDate>Fri, 15 May 2026 13:00:00 +0100</pubDate>
      <guid>https://www.berndplumhoff.de/linear_breakdown_de/</guid>
      <description>&lt;p&gt;&lt;strong&gt;&amp;ldquo;I&amp;rsquo;m not such a big fan of having a linear answer to things.&amp;rdquo; [Adam Driver]&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;abstract&#34;&gt;Abstract&lt;/h2&gt;&#xA;&lt;p&gt;Wie kann man jährliche Daten&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://www.berndplumhoff.de/Linear_Breakdown_Annual_Data.png&#34; alt=&#34;Linear_Breakdown_Annual_Data&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;in monatliche Daten linear stückweise umwandeln&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://www.berndplumhoff.de/Linear_Breakdown_Monthly_Data.png&#34; alt=&#34;Linear_Breakdown_Monthly_Data&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;?&lt;/p&gt;&#xA;&lt;p&gt;Geben Sie in A2:B5 Ihre jährlichen Daten ein.&#xA;In A8:A56 geben Sie Ihre Monatsenddaten chronologisch sortiert ein.&#xA;Für den Anfang geben Sie in B8 ein: &lt;em&gt;=B2/12&lt;/em&gt;.&#xA;In B9 geben Sie &lt;em&gt;=SVERWEIS(DATUM(JAHR($A9)-1;12;31);A$8:B8;2)+(MONAT($A9))*(SVERWEIS(JAHR($A9);$A$2:$B$5;2)-SVERWEIS(DATUM(JAHR($A9)-1;12;31);A$8:B8;2)*12)/78&lt;/em&gt;&#xA;ein und kopieren nach unten.&#xA;In D8 geben Sie &lt;em&gt;=STABW.N(B9:B56)&lt;/em&gt; ein.&#xA;Falls Ihre monatlichen Daten cent-genau die Summe der jährlichen Daten ausmachen müssen,&#xA;geben Sie in C9 ein &lt;em&gt;=RUNDEN(B9;2)&lt;/em&gt;&#xA;und in D10: &lt;em&gt;=RUNDEN(SUMME(B$9:B10);2)-SUMME(C$9:C9)&lt;/em&gt; und kopieren wieder nach unten.&#xA;Dies ist lediglich eine pragmatische Rundungsmethode ohne VBA.&#xA;Falls Sie diese Rundung korrekt durchführen wollen, verwenden Sie bitte&#xA;&lt;a href=&#34;https://www.berndplumhoff.de/roundtosum_de/&#34; title=&#34;roundtosum&#34;&gt;RoundToSum&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>sbRandGeneral (VBA)</title>
      <link>https://www.berndplumhoff.de/sbrandgeneral_de/</link>
      <pubDate>Thu, 14 May 2026 16:01:00 +0100</pubDate>
      <guid>https://www.berndplumhoff.de/sbrandgeneral_de/</guid>
      <description>&lt;p&gt;&lt;strong&gt;&amp;ldquo;It pays to be obvious, especially if you have a reputation for subtlety.&amp;rdquo; [Isaac Asimov]&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;abstract&#34;&gt;Abstract&lt;/h2&gt;&#xA;&lt;p&gt;Wenn Sie eine schrittweise lineare Verteilung von Zufallszahlen benötigen,&#xA;dann empfehle ich meine benutzerdefinierte Funktion sbRandGeneral.&lt;/p&gt;&#xA;&lt;p&gt;Bemerkung: Man kann jede beliebige Verteilung mit einer festgelegten Mindestgenauigkeit&#xA;durch eine schrittweise lineare Verteilung wie hier angeboten approximieren.&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://www.berndplumhoff.de/sbRandGeneral_01_Screen.png&#34; alt=&#34;sbRandGeneral&#34;&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;dokumentation&#34;&gt;Dokumentation&lt;/h2&gt;&#xA;&lt;p&gt;Die Dokumentation zu dieser Funktion:&lt;/p&gt;&#xA;&lt;p&gt;Bitte den Haftungsausschluss im &lt;a href=&#34;https://www.berndplumhoff.de/about/impressum_de/&#34; title=&#34;Impressum&#34;&gt;Impressum&lt;/a&gt; beachten.&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://www.berndplumhoff.de/080102_PB_01_General_Doc.pdf&#34;&gt;080102_PB_01_General_Doc.pdf&lt;/a&gt; [30 KB PDF Datei, ohne Gewähr]&lt;/p&gt;</description>
    </item>
    <item>
      <title>sbRandTrigen (VBA)</title>
      <link>https://www.berndplumhoff.de/sbrandtrigen_de/</link>
      <pubDate>Thu, 14 May 2026 15:47:00 +0100</pubDate>
      <guid>https://www.berndplumhoff.de/sbrandtrigen_de/</guid>
      <description>&lt;h2 id=&#34;abstract&#34;&gt;Abstract&lt;/h2&gt;&#xA;&lt;p&gt;Bitte beachten dass sbRandTrigen&#xA;&lt;a href=&#34;https://www.berndplumhoff.de/sbrandtriang_de/&#34; title=&#34;sbRandTriang&#34;&gt;sbRandTriang&lt;/a&gt;&#xA;benötigt und aufruft.&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://www.berndplumhoff.de/sbRandTrigen_01_Screen.png&#34; alt=&#34;sbRandTrigen&#34;&gt;&#xA;&lt;img src=&#34;https://www.berndplumhoff.de/sbRandTrigen_02_Screen.png&#34; alt=&#34;sbRandTrigen&#34;&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;dokumentation&#34;&gt;Dokumentation&lt;/h2&gt;&#xA;&lt;p&gt;Die Dokumentation zu dieser Funktion:&lt;/p&gt;&#xA;&lt;p&gt;Bitte den Haftungsausschluss im &lt;a href=&#34;https://www.berndplumhoff.de/about/impressum_de/&#34; title=&#34;Impressum&#34;&gt;Impressum&lt;/a&gt; beachten.&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://www.berndplumhoff.de/071228_PB_02_Trigen_Doc.pdf&#34;&gt;071228_PB_02_Trigen_Doc.pdf&lt;/a&gt; [38 KB PDF Datei, ohne Gewähr]&lt;/p&gt;&#xA;&lt;h2 id=&#34;appendix--programmcode-sbrandtrigen&#34;&gt;Appendix – Programmcode sbRandTrigen&lt;/h2&gt;&#xA;&lt;p&gt;Bitte den Haftungsausschluss im &lt;a href=&#34;https://www.berndplumhoff.de/about/impressum_de/&#34; title=&#34;Impressum&#34;&gt;Impressum&lt;/a&gt; beachten.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-VB.net&#34; data-lang=&#34;VB.net&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Option&lt;/span&gt; Explicit&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Function&lt;/span&gt; sbRandTrigen(dBottom &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Double&lt;/span&gt;, dMode &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Double&lt;/span&gt;, _&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    dTop &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Double&lt;/span&gt;, dBottomPerc &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Double&lt;/span&gt;, _&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    dTopPerc &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Double&lt;/span&gt;, &lt;span style=&#34;color:#00f&#34;&gt;Optional&lt;/span&gt; dRandom = 1#) &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Double&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;Generates dMin random number, Triang distributed&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;with given first and last decile&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;[see Vose: Risk Analysis, 2nd ed., p. 129]&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;Source (EN): https://www.sulprobil.de/sbrandgeneral_en/&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;Source (DE): https://www.berndplumhoff.de/sbrandgeneral_de/&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;(C) (P) by Bernd Plumhoff 19-Nov-2011 PB V0.32&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;Similar to @RISK&amp;#39;s (C) RiskTrigen function.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;sbRandTrigen(bottom, mode, top, bottom percentile, top percentile)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;specifies a triangular distribution with three points — one&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;at the mode and two at the specified bottom and top percentiles.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;The bottom percentile and top percentile are values between&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;0 and 100. Each percentile value gives the percentile of the&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;total area under the triangle that is on the left side of the&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;given point.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;Example:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;sbRandTrigen(1,8,10,20,95) will call&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;sbRandTriang(-6.13212712795534, 8, 11.8648937411641).&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;Please ensure that you execute Randomize before you call &#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;this function for the first time.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Static&lt;/span&gt; dBottomLast &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Double&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Static&lt;/span&gt; dModeLast &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Double&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Static&lt;/span&gt; dTopLast &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Double&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Static&lt;/span&gt; dBottomPercLast &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Double&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Static&lt;/span&gt; dTopPercLast &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Double&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Static&lt;/span&gt; dMin &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Double&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Static&lt;/span&gt; dMax &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Double&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Dim&lt;/span&gt; dMaxNew &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Double&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Dim&lt;/span&gt; da0 &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Double&lt;/span&gt;, da1 &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Double&lt;/span&gt;, da2 &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Double&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Dim&lt;/span&gt; da3 &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Double&lt;/span&gt;, da4 &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Double&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Dim&lt;/span&gt; dfe &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Double&lt;/span&gt;, df1e &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Double&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Dim&lt;/span&gt; dBottomPerc2 &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Double&lt;/span&gt;, dTopPerc2 &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Double&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Dim&lt;/span&gt; i &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Long&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt; dBottom = dBottomLast &lt;span style=&#34;color:#00f&#34;&gt;And&lt;/span&gt; dMode = dModeLast &lt;span style=&#34;color:#00f&#34;&gt;And&lt;/span&gt; dTop = dTopLast _&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;   &lt;span style=&#34;color:#00f&#34;&gt;And&lt;/span&gt; dBottomPerc = dBottomPercLast &lt;span style=&#34;color:#00f&#34;&gt;And&lt;/span&gt; dTopPerc = dTopPercLast _&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;   &lt;span style=&#34;color:#00f&#34;&gt;And&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;Not&lt;/span&gt; IsError(dMin) &lt;span style=&#34;color:#00f&#34;&gt;Then&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    sbRandTrigen = sbRandTriang(dMin, dMode, dMax, dRandom)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#00f&#34;&gt;Exit&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;Function&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;End &lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;dBottomLast = dBottom&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;dModeLast = dMode&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;dTopLast = dTop&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;dBottomPercLast = dBottomPerc&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;dTopPercLast = dTopPerc&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;dBottomPerc2 = dBottomPerc / 100#&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;dTopPerc2 = 1# - dTopPerc / 100#&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt; dMode &amp;lt;= dBottom &lt;span style=&#34;color:#00f&#34;&gt;Or&lt;/span&gt; dTop &amp;lt;= dMode &lt;span style=&#34;color:#00f&#34;&gt;Then&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    dMin = CVErr(xlErrValue) &lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;Trigger rerun next time&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&lt;/span&gt;    sbRandTrigen = CVErr(xlErrValue)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#00f&#34;&gt;Exit&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;Function&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;End &lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt; dBottomPerc2 &amp;lt; 0# &lt;span style=&#34;color:#00f&#34;&gt;Or&lt;/span&gt; dTopPerc2 &amp;lt; 0# &lt;span style=&#34;color:#00f&#34;&gt;Then&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    dMin = CVErr(xlErrDiv0) &lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;Trigger rerun next time&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&lt;/span&gt;    sbRandTrigen = CVErr(xlErrValue)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#00f&#34;&gt;Exit&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;Function&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;End &lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt; dTopPerc2 = 0# &lt;span style=&#34;color:#00f&#34;&gt;Then&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt; dBottomPerc2 = 0# &lt;span style=&#34;color:#00f&#34;&gt;Then&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        sbRandTrigen = sbRandTriang(dBottom, dMode, dTop, dRandom)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#00f&#34;&gt;Exit&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;Function&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    End &lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    sbRandTrigen = sbRandTrigen(dBottom, dMode, dTop, dBottomPerc2, dTopPerc2)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#00f&#34;&gt;Exit&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;Function&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;End &lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;da4 = dBottomPerc2 * dTopPerc2 - dBottomPerc2 + 1# - 2# * dTopPerc2 + dTopPerc2 ^ 2#&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;da3 = -2# * dBottomPerc2 * dTopPerc2 * dTop - 2# * dBottomPerc2 * dTopPerc2 * dMode - _&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      4# * dTop + 4# * dBottomPerc2 * dTop + 2# * dTopPerc2 * dMode + 4# * dTopPerc2 * _&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      dTop + 2# * dTopPerc2 * dBottom - 2# * dTopPerc2 ^ 2# * dMode - _&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      2# * dTopPerc2 ^ 2# * dBottom&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;da2 = dBottomPerc2 * dTopPerc2 * dTop ^ 2# + 4# * dBottomPerc2 * dTopPerc2 * dMode * _&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      dTop + dBottomPerc2 * dTopPerc2 * dMode ^ 2# - 6# * dBottomPerc2 * dTop ^ 2# + _&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      6# * dTop ^ 2# - 4# * dTopPerc2 * dMode * dTop - 2# * dTopPerc2 * dTop ^ 2# - 2# * _&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      dTopPerc2 * dBottom * dMode - 4# * dTopPerc2 * dBottom * dTop + dTopPerc2 ^ 2# * _&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      dMode ^ 2# + 4# * dTopPerc2 ^ 2# * dBottom * dMode + dTopPerc2 ^ 2# * dBottom ^ 2#&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;da1 = -2# * dBottomPerc2 * dTopPerc2 * dMode * dTop ^ 2# - 2# * dBottomPerc2 * dTopPerc2 * _&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      dMode ^ 2# * dTop + 4# * dTop ^ 3# * dBottomPerc2 - 4# * dTop ^ 3# + 2# * dTopPerc2 * _&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      dMode * dTop ^ 2# + 4# * dTopPerc2 * dBottom * dMode * dTop + 2# * dTopPerc2 * _&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      dBottom * dTop ^ 2# - 2# * dTopPerc2 ^ 2# * dBottom * dMode ^ 2# - 2# * _&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      dTopPerc2 ^ 2# * dBottom ^ 2# * dMode&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;da0 = dBottomPerc2 * dTopPerc2 * dMode ^ 2# * dTop ^ 2# - dBottomPerc2 * dTop ^ 4# + dTop ^ 4# - _&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      2# * dTopPerc2 * dBottom * dMode * dTop ^ 2# + dTopPerc2 ^ 2# * dBottom ^ 2# * dMode ^ 2#&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;     &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;dMax = dTop + (dTop - dMode) / (1# - dTopPerc2) ^ 2#&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;Newton iteration&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Do&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;While&lt;/span&gt; Abs(dMaxNew - dMax) &amp;gt; 0.000000000001&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    i = i + 1&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt; i &amp;gt; 30 &lt;span style=&#34;color:#00f&#34;&gt;Then&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt; Abs(dfe) &amp;gt; 0.000000000001 &lt;span style=&#34;color:#00f&#34;&gt;Then&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            dMin = CVErr(xlErrDiv0) &lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;Trigger rerun next time&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&lt;/span&gt;            sbRandTrigen = CVErr(xlErrValue)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#00f&#34;&gt;Exit&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;Function&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        Else&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#00f&#34;&gt;Exit&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;Do&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#00f&#34;&gt;End&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#00f&#34;&gt;End&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    dMaxNew = dMax&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    dfe = da4 * dMaxNew ^ 4# + da3 * dMaxNew ^ 3# + da2 * dMaxNew ^ 2# + da1 * dMaxNew + da0&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    df1e = 4# * da4 * dMaxNew ^ 3# + 3# * da3# * dMaxNew ^ 2# + 2# * da2 * dMaxNew + da1&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    dMax = dMax - dfe / df1e&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Loop&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;dMin = dMax - (dMax - dTop) ^ 2# / dTopPerc2 / (dMax - dMode)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sbRandTrigen = sbRandTriang(dMin, dMode, dMax, dRandom)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;End&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;Function&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;download&#34;&gt;Download&lt;/h2&gt;&#xA;&lt;p&gt;Bitte den Haftungsausschluss im &lt;a href=&#34;https://www.berndplumhoff.de/about/impressum_de/&#34; title=&#34;Impressum&#34;&gt;Impressum&lt;/a&gt; beachten.&lt;/p&gt;</description>
    </item>
    <item>
      <title>sbRandTriang (VBA)</title>
      <link>https://www.berndplumhoff.de/sbrandtriang_de/</link>
      <pubDate>Thu, 14 May 2026 14:47:00 +0100</pubDate>
      <guid>https://www.berndplumhoff.de/sbrandtriang_de/</guid>
      <description>&lt;h2 id=&#34;abstract&#34;&gt;Abstract&lt;/h2&gt;&#xA;&lt;p&gt;Die Dreiecksverteilung ist eine stetige Wahrscheinlichkeitsverteilung, deren Dichtefunktion&#xA;wie ein Dreieck aussieht.&#xA;Es ist eine einfache Verteilung, weil Sie lediglich ihr Minimum, ihren Median und ihr Maximum&#xA;kennen müssen:&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://www.berndplumhoff.de/sbRandTriang_01_Screen.png&#34; alt=&#34;sbRandTriang&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Im englischen Sprachraum wird diese Verteilung auch &lt;strong&gt;Distribution of Missing Data&lt;/strong&gt;&#xA;genannt, weil für ihre Bestimmung nur ein Minimum an Information benötigt wird.&#xA;Diese Verteilung wird oft zur Simulation von Expertenwissen eingesetzt oder wenn eine&#xA;genauere Datenermittlung zu schwierig oder zu teuer erscheint.&lt;/p&gt;</description>
    </item>
    <item>
      <title>sbRandSum1 (VBA)</title>
      <link>https://www.berndplumhoff.de/sbrandsum1_de/</link>
      <pubDate>Thu, 14 May 2026 12:40:00 +0100</pubDate>
      <guid>https://www.berndplumhoff.de/sbrandsum1_de/</guid>
      <description>&lt;h2 id=&#34;abstract&#34;&gt;Abstract&lt;/h2&gt;&#xA;&lt;p&gt;Wir erzeugen &lt;em&gt;n&lt;/em&gt; Zufallszahlen mit einer Bedingung:&#xA;Die Summe aller erzeugten Zahlen soll 1 sein.&#xA;Dies kann man mit vielen verschiedenen Ansätzen erreichen.&lt;/p&gt;&#xA;&lt;p&gt;Drei mögliche Ansätze sind:&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Reduziere den Freiheitsgrad sukzessive: Erzeuge die erste Zufallszahl,&#xA;danach die zweite im Bereich &lt;em&gt;[0,1-Erste_Zahl)&lt;/em&gt;, dann die&#xA;dritte &lt;em&gt;[0,1-Erste_Zahl-Zweite_Zahl)&lt;/em&gt;, &amp;hellip;, die letzte Zahl muss schließlich gleich&#xA;&lt;em&gt;1-Summe_aller_anderen_Zahlen&lt;/em&gt; sein.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Erzeuge &lt;em&gt;n&lt;/em&gt; Zufallszahlen und dividiere sie durch ihre Summe.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Simuliere die Teilung einer Torte: wo immer man schneidet, man&#xA;kann nicht mehr und nicht weniger als die ganze Torte verteilen.&lt;/p&gt;</description>
    </item>
    <item>
      <title>sbRandIntFixSum (VBA)</title>
      <link>https://www.berndplumhoff.de/sbrandintfixsum_de/</link>
      <pubDate>Thu, 14 May 2026 11:46:00 +0100</pubDate>
      <guid>https://www.berndplumhoff.de/sbrandintfixsum_de/</guid>
      <description>&lt;h2 id=&#34;abstract&#34;&gt;Abstract&lt;/h2&gt;&#xA;&lt;p&gt;Sie wollen &lt;em&gt;lCount&lt;/em&gt; ganze Zufallszahlen zwischen &lt;em&gt;lMin&lt;/em&gt; und&#xA;&lt;em&gt;lMax&lt;/em&gt; mit der Summe &lt;em&gt;lSum&lt;/em&gt; erzeugen?&lt;/p&gt;&#xA;&lt;p&gt;Diese benutzerdefinierte Funktion ist eng mit&#xA;&lt;a href=&#34;https://www.berndplumhoff.de/sblongrandsumn_de/&#34; title=&#34;sbLongRandSumN&#34;&gt;sbLongRandSumN&lt;/a&gt;&#xA;verwandt.&lt;/p&gt;&#xA;&lt;h2 id=&#34;appendix-programmcode-sbrandintfixsum&#34;&gt;Appendix Programmcode sbRandIntFixSum&lt;/h2&gt;&#xA;&lt;p&gt;Dieses Programm benötigt (ruft auf)&#xA;&lt;a href=&#34;https://www.berndplumhoff.de/sbrandtriang_de/&#34; title=&#34;sbRandTriang&#34;&gt;sbRandTriang&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Bitte den Haftungsausschluss im &lt;a href=&#34;https://www.berndplumhoff.de/about/impressum_de/&#34; title=&#34;Impressum&#34;&gt;Impressum&lt;/a&gt; beachten.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-VB.net&#34; data-lang=&#34;VB.net&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Function&lt;/span&gt; sbRandIntFixSum(lSum &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Long&lt;/span&gt;, lMin &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Long&lt;/span&gt;, _&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  lMax &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Long&lt;/span&gt;, &lt;span style=&#34;color:#00f&#34;&gt;Optional&lt;/span&gt; lCount &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Long&lt;/span&gt; = 0, _&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#00f&#34;&gt;Optional&lt;/span&gt; bUseRandTriang &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Boolean&lt;/span&gt; = &lt;span style=&#34;color:#00f&#34;&gt;True&lt;/span&gt;, _&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#00f&#34;&gt;Optional&lt;/span&gt; bVolatile &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Boolean&lt;/span&gt; = &lt;span style=&#34;color:#00f&#34;&gt;False&lt;/span&gt;) &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Variant&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;Returns lCount (or selected cell count in case a range is select when&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;called as a matrix formula) random integers between lMin and lMax&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;which sum up to lSum. If bUseRandTriang the sbRandTriang distribution&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;is used to &amp;#34;bias&amp;#34; the randomness to be &amp;#34;less extreme&amp;#34;.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;Error values:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;#NUM!   - No solution exists&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;#VALUE! - lCount is less than 1&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;Source (EN): https://www.sulprobil.de/sbrandintfixsum_en/&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;Source (DE): https://www.berndplumhoff.de/sbrandintfixsum_de/&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;(C) (P) by Bernd Plumhoff 05-Aug-2020 PB V0.3&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Dim&lt;/span&gt; i &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Long&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Dim&lt;/span&gt; lRnd &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Long&lt;/span&gt;, lMinPrev &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Long&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Dim&lt;/span&gt; lRow &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Long&lt;/span&gt;, lCol &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Long&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;With&lt;/span&gt; Application&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt; TypeName(.Caller) = &lt;span style=&#34;color:#a31515&#34;&gt;&amp;#34;Range&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;And&lt;/span&gt; lCount = 0 &lt;span style=&#34;color:#00f&#34;&gt;Then&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  lCount = .Caller.Count&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#00f&#34;&gt;ReDim&lt;/span&gt; lR(1 &lt;span style=&#34;color:#00f&#34;&gt;To&lt;/span&gt; .Caller.Rows.Count, 1 &lt;span style=&#34;color:#00f&#34;&gt;To&lt;/span&gt; .Caller.Columns.Count) &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Long&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;ElseIf&lt;/span&gt; lCount &amp;lt; 1 &lt;span style=&#34;color:#00f&#34;&gt;Then&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  sbRandIntFixSum = CVErr(xlErrValue)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#00f&#34;&gt;Exit&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;Function&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Else&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#00f&#34;&gt;ReDim&lt;/span&gt; lR(1 &lt;span style=&#34;color:#00f&#34;&gt;To&lt;/span&gt; lCount, 1 &lt;span style=&#34;color:#00f&#34;&gt;To&lt;/span&gt; 1) &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Long&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;End&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Randomize&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt; bVolatile &lt;span style=&#34;color:#00f&#34;&gt;Then&lt;/span&gt; .Volatile&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;For&lt;/span&gt; lRow = 1 &lt;span style=&#34;color:#00f&#34;&gt;To&lt;/span&gt; UBound(lR, 1)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#00f&#34;&gt;For&lt;/span&gt; lCol = 1 &lt;span style=&#34;color:#00f&#34;&gt;To&lt;/span&gt; UBound(lR, 2)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    lMinPrev = lMin&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    lMin = .RoundUp(.Max(lMin, .Min(lSum / lCount, lSum / lCount _&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;           - (lCount - 1) * (lMax - lSum / lCount))), 0)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    lMax = .RoundDown(.Min(lMax, .Max(lSum / lCount, lSum / lCount _&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;           + (lCount - 1) * (lSum / lCount - lMinPrev))), 0)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt; lMin &amp;gt; lMax &lt;span style=&#34;color:#00f&#34;&gt;Or&lt;/span&gt; lSum / lCount &amp;lt;&amp;gt; .Median(lMin, lMax, lSum / lCount) &lt;span style=&#34;color:#00f&#34;&gt;Then&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;No solution exists&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&lt;/span&gt;      sbRandIntFixSum = CVErr(xlErrNum)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#00f&#34;&gt;Exit&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;Function&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    End &lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt; bUseRandTriang &lt;span style=&#34;color:#00f&#34;&gt;Then&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt; lMin = lMax &lt;span style=&#34;color:#00f&#34;&gt;Then&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        lRnd = lMin&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#00f&#34;&gt;Else&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        lRnd = Int(sbRandTriang(&lt;span style=&#34;color:#00f&#34;&gt;CDbl&lt;/span&gt;(lMin), lSum / lCount, &lt;span style=&#34;color:#00f&#34;&gt;CDbl&lt;/span&gt;(lMax)) + 0.5)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#00f&#34;&gt;End&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#00f&#34;&gt;Else&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      lRnd = Int(Rnd() * (lMax - lMin + 1) + lMin)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#00f&#34;&gt;End&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    lR(lRow, lCol) = lRnd&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    lSum = lSum - lRnd&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    lCount = lCount - 1&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#00f&#34;&gt;Next&lt;/span&gt; lCol&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Next&lt;/span&gt; lRow&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sbRandIntFixSum = lR&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;End&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;With&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;End&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;Function&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;download&#34;&gt;Download&lt;/h2&gt;&#xA;&lt;p&gt;Bitte den Haftungsausschluss im &lt;a href=&#34;https://www.berndplumhoff.de/about/impressum_de/&#34; title=&#34;Impressum&#34;&gt;Impressum&lt;/a&gt; beachten.&lt;/p&gt;</description>
    </item>
    <item>
      <title>sbGrowthSeries (VBA)</title>
      <link>https://www.berndplumhoff.de/sbgrowthseries_de/</link>
      <pubDate>Thu, 14 May 2026 10:47:00 +0100</pubDate>
      <guid>https://www.berndplumhoff.de/sbgrowthseries_de/</guid>
      <description>&lt;h2 id=&#34;abstract&#34;&gt;Abstract&lt;/h2&gt;&#xA;&lt;p&gt;Sie können Zufallszahlen mit einer kumulierten Wachstumsrate &lt;em&gt;dblRate&lt;/em&gt;, mit&#xA;einer maximalen relativen Änderungsrate pro Zeitschritt &lt;em&gt;dblMaxRatePerStep&lt;/em&gt;&#xA;und mit einem optionalen Startwert &lt;em&gt;dblStartVal&lt;/em&gt; erzeugen. Die Anzahl der&#xA;Zeitschritte (Perioden) wird implizit durch die Anzahl der ausgewählten Zellen&#xA;gewählt, in die der Funktionsaufruf als Matrixformel mit STRG + SHIFT + ENTER&#xA;eingegeben wird. Dies ist eine spezielle Art von Brownscher Brücke.&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://www.berndplumhoff.de/sbGrowthSeries.png&#34; alt=&#34;sbGrowthSeries&#34;&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;appendix--programmcode-sbgrowthseries&#34;&gt;Appendix – Programmcode sbGrowthSeries&lt;/h2&gt;&#xA;&lt;p&gt;Bitte den Haftungsausschluss im &lt;a href=&#34;https://www.berndplumhoff.de/about/impressum_de/&#34; title=&#34;Impressum&#34;&gt;Impressum&lt;/a&gt; beachten.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Iman Conover (Excel / VBA)</title>
      <link>https://www.berndplumhoff.de/iman_conover_de/</link>
      <pubDate>Thu, 14 May 2026 10:41:00 +0100</pubDate>
      <guid>https://www.berndplumhoff.de/iman_conover_de/</guid>
      <description>&lt;p&gt;&lt;strong&gt;&amp;ldquo;When your work speaks for itself, don&amp;rsquo;t interrupt.&amp;rdquo; [Henry J. Kaiser]&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;abstract&#34;&gt;Abstract&lt;/h2&gt;&#xA;&lt;p&gt;Falls Sie korrelierte Zufallszahlen erzeugen müssen, ist die Iman Conover Methode besser als&#xA;die Cholesky Zerlegung.&lt;/p&gt;&#xA;&lt;p&gt;1982 veröffentlichten Iman und Conover ihren ursprünglichen Artikel (externer Link!)&#xA;&lt;a href=&#34;https://www.researchgate.net/publication/243048186_A_Distribution-Free_Approach_to_Inducing_Rank_Correlation_Among_Input_Variates&#34; title=&#34;ImanConover&#34;&gt;&amp;ldquo;A distribution-free approach to inducing rank correlation among input variables&amp;rdquo;&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Rick Wicklin schrieb dazu im Jahr 2021 (externer Link!)&#xA;&lt;a href=&#34;https://blogs.sas.com/content/iml/2021/06/14/simulate-iman-conover-transformation.html&#34; title=&#34;RickWicklin&#34;&gt;&amp;ldquo;Simulate correlated variables by using the Iman-Conover transformation&amp;rdquo;&lt;/a&gt;. Sein Artikel enthält&#xA;eine SAS Implementierung der Iman Conover Methode.&lt;/p&gt;</description>
    </item>
    <item>
      <title>sbGenerateTeams (VBA)</title>
      <link>https://www.berndplumhoff.de/sbgenerateteams_de/</link>
      <pubDate>Thu, 14 May 2026 09:46:00 +0100</pubDate>
      <guid>https://www.berndplumhoff.de/sbgenerateteams_de/</guid>
      <description>&lt;p&gt;&lt;strong&gt;&amp;ldquo;For many people my software is something that you install and forget. I like to keep it that way.&amp;rdquo; [Wietse Venema]&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;abstract&#34;&gt;Abstract&lt;/h2&gt;&#xA;&lt;p&gt;Sie und Ihre 15 Freunde wollen in 4 Teams spielen mit je 4 Spielern und Sie&#xA;fragen sich, wie Sie die Teams zufällig aber möglichst gleichstark aufstellen können?&lt;/p&gt;&#xA;&lt;p&gt;So kann man dies erreichen:&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://www.berndplumhoff.de/sbGenerateTeams_4Teams.png&#34; alt=&#34;sbGenerateTeams_4Teams&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Dieses Programm vereint mehrere Funktionalitäten, die ich gern nutze:&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Die Klasse &lt;a href=&#34;https://www.berndplumhoff.de/systemstate_de/&#34; title=&#34;SystemState&#34;&gt;SystemState&lt;/a&gt; reduziert die Laufzeit.&lt;/p&gt;</description>
    </item>
    <item>
      <title>sbGenerateTestData (VBA)</title>
      <link>https://www.berndplumhoff.de/sbgeneratetestdata_de/</link>
      <pubDate>Thu, 14 May 2026 08:46:00 +0100</pubDate>
      <guid>https://www.berndplumhoff.de/sbgeneratetestdata_de/</guid>
      <description>&lt;p&gt;&lt;strong&gt;&amp;ldquo;It is practically impossible to teach good programming style to students&#xA;that have had prior exposure to BASIC. As potential programmers, they are&#xA;mentally mutilated beyond hope of regeneration.&amp;rdquo; [E. W. Dijkstra]&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;abstract&#34;&gt;Abstract&lt;/h2&gt;&#xA;&lt;p&gt;Wenn Sie eine Anwendung oder ein Programm auf Herz und Nieren testen wollen,&#xA;benötigen Sie häufig Testdaten.&lt;/p&gt;&#xA;&lt;p&gt;Diese Anwendung soll Sie dabei unterstützen, zufällige Testdaten in numerischer&#xA;Form oder als Text zu erzeugen.&lt;/p&gt;&#xA;&lt;p&gt;Wollen Sie beispielsweise sechs Wahrheitswerte, davon 50% WAHR und 50% FALSCH,&#xA;einmal in der erzeugten Reihenfolge und einmal zufällig gemischt:&lt;/p&gt;</description>
    </item>
    <item>
      <title>UniqRandInt (VBA)</title>
      <link>https://www.berndplumhoff.de/uniqrandint_de/</link>
      <pubDate>Thu, 14 May 2026 07:46:00 +0100</pubDate>
      <guid>https://www.berndplumhoff.de/uniqrandint_de/</guid>
      <description>&lt;p&gt;&lt;strong&gt;&amp;ldquo;Few things are harder to put up with than the annoyance of a good example.&amp;rdquo; [Mark Twain]&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;abstract&#34;&gt;Abstract&lt;/h2&gt;&#xA;&lt;p&gt;Manchmal benötigt man ganze Zufallszahlen, die sich nicht (oder nur begrenzt häufig) wiederholen.&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://www.berndplumhoff.de/uniqrandint.png&#34; alt=&#34;uniqrandint&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://www.berndplumhoff.de/uniqrandint_formula.png&#34; alt=&#34;uniqrandint_formula&#34;&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;appendix--uniqrandint-code&#34;&gt;Appendix – UniqRandInt Code&lt;/h2&gt;&#xA;&lt;p&gt;Bitte den Haftungsausschluss im &lt;a href=&#34;https://www.berndplumhoff.de/about/impressum_de/&#34; title=&#34;Impressum&#34;&gt;Impressum&lt;/a&gt; beachten.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-VB.net&#34; data-lang=&#34;VB.net&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;If lRange &amp;gt;&amp;gt; n then set LATE_INITIALISATION to true. For example,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;if lRange=1,000,000 and if 1,000 cells are selected (n=1000).&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#00f&#34;&gt;#Const&lt;/span&gt; LATE_INITIALISATION = &lt;span style=&#34;color:#00f&#34;&gt;True&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;If random integers may occur more than once, allow repetitions&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#00f&#34;&gt;#Const&lt;/span&gt; ALLOW_REPETITION = &lt;span style=&#34;color:#00f&#34;&gt;True&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;#If ALLOW_REPETITION Then&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Function&lt;/span&gt; UniqRandInt(n &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Long&lt;/span&gt;, &lt;span style=&#34;color:#00f&#34;&gt;ByVal&lt;/span&gt; lRange &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Long&lt;/span&gt;, _&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#00f&#34;&gt;Optional&lt;/span&gt; lMaxOccurence &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Long&lt;/span&gt; = 1) &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Variant&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;#Else&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Function&lt;/span&gt; UniqRandInt(n &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Long&lt;/span&gt;, &lt;span style=&#34;color:#00f&#34;&gt;ByVal&lt;/span&gt; lRange &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Long&lt;/span&gt;) &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Variant&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;#End If&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;Returns n unique (=non-repeating) random integers within 1..lRange,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;lRange &amp;gt;= n. Set ALLOW_REPETITION = True and call with&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;lMaxOccurences &amp;gt; 1 if random integers may occur more than once.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;Source (EN): https://www.sulprobil.de/uniqrandint_en/&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;Source (DE): https://www.berndplumhoff.de/uniqrandint_de/&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;(C) (P) by Bernd Plumhoff 30-Oct-2024 PB V1.04&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Static&lt;/span&gt; bRandomized &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Boolean&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Dim&lt;/span&gt; vA             &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Variant&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Dim&lt;/span&gt; vR             &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Variant&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Dim&lt;/span&gt; i              &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Long&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Dim&lt;/span&gt; j              &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Long&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Dim&lt;/span&gt; lr             &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Long&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;Not&lt;/span&gt; bRandomized &lt;span style=&#34;color:#00f&#34;&gt;Then&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  Randomize&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  bRandomized = &lt;span style=&#34;color:#00f&#34;&gt;True&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;End&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;#If ALLOW_REPETITION Then&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt; lMaxOccurence &amp;lt; 1 &lt;span style=&#34;color:#00f&#34;&gt;Then&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    UniqRandInt = CVErr(xlErrNum)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#00f&#34;&gt;Exit&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;Function&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  End &lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  lRange = lRange * lMaxOccurence&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;#End If&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt; n &amp;gt; lRange &lt;span style=&#34;color:#00f&#34;&gt;Then&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  UniqRandInt = CVErr(xlErrValue)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#00f&#34;&gt;Exit&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;Function&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;End &lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;ReDim&lt;/span&gt; vR(1 &lt;span style=&#34;color:#00f&#34;&gt;To&lt;/span&gt; n) &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Variant&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;ReDim&lt;/span&gt; vA(1 &lt;span style=&#34;color:#00f&#34;&gt;To&lt;/span&gt; lRange)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;#If Not LATE_INITIALISATION Then&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#00f&#34;&gt;For&lt;/span&gt; i = 1 &lt;span style=&#34;color:#00f&#34;&gt;To&lt;/span&gt; lRange&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#00f&#34;&gt;#If ALLOW_REPETITION Then&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      vA(i) = Int((i - 1) / lMaxOccurence) + 1&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#00f&#34;&gt;#Else&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      vA(i) = i&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#00f&#34;&gt;#End If&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#00f&#34;&gt;Next&lt;/span&gt; i&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;#End If&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;i = 1&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;For&lt;/span&gt; j = 1 &lt;span style=&#34;color:#00f&#34;&gt;To&lt;/span&gt; UBound(vR, 1)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  lr = Int(((lRange - i + 1) * Rnd) + 1)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#00f&#34;&gt;#If LATE_INITIALISATION Then&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt; vA(lr) = 0 &lt;span style=&#34;color:#00f&#34;&gt;Then&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#00f&#34;&gt;#If ALLOW_REPETITION Then&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        vR(j) = Int((lr - 1) / lMaxOccurence) + 1&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#00f&#34;&gt;#Else&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        vR(j) = lr&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#00f&#34;&gt;#End If&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#00f&#34;&gt;Else&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#00f&#34;&gt;#End If&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      vR(j) = vA(lr)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#00f&#34;&gt;#If LATE_INITIALISATION Then&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#00f&#34;&gt;End&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt; vA(lRange - i + 1) = 0 &lt;span style=&#34;color:#00f&#34;&gt;Then&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#00f&#34;&gt;#If ALLOW_REPETITION Then&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        vA(lr) = Int((lRange - i + 1 - 1) / lMaxOccurence) + 1&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#00f&#34;&gt;#Else&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        vA(lr) = lRange - i + 1&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#00f&#34;&gt;#End If&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#00f&#34;&gt;Else&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#00f&#34;&gt;#End If&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      vA(lr) = vA(lRange - i + 1)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#00f&#34;&gt;#If LATE_INITIALISATION Then&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#00f&#34;&gt;End&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#00f&#34;&gt;#End If&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  i = i + 1&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Next&lt;/span&gt; j&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;UniqRandInt = vR&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;End&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;Function&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;download&#34;&gt;Download&lt;/h2&gt;&#xA;&lt;p&gt;Bitte den Haftungsausschluss im &lt;a href=&#34;https://www.berndplumhoff.de/about/impressum_de/&#34; title=&#34;Impressum&#34;&gt;Impressum&lt;/a&gt; beachten.&lt;/p&gt;</description>
    </item>
    <item>
      <title>sbRandHistogrm (VBA)</title>
      <link>https://www.berndplumhoff.de/sbrandhistogrm_de/</link>
      <pubDate>Thu, 14 May 2026 06:46:00 +0100</pubDate>
      <guid>https://www.berndplumhoff.de/sbrandhistogrm_de/</guid>
      <description>&lt;h2 id=&#34;abstract&#34;&gt;Abstract&lt;/h2&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://www.berndplumhoff.de/sbRandHistoGram.png&#34; alt=&#34;sbRandHistoGram&#34;&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;appendix-programmcode-sbrandhistogrm&#34;&gt;Appendix Programmcode sbRandHistogrm&lt;/h2&gt;&#xA;&lt;p&gt;Bitte den Haftungsausschluss im &lt;a href=&#34;https://www.berndplumhoff.de/about/impressum_de/&#34; title=&#34;Impressum&#34;&gt;Impressum&lt;/a&gt; beachten.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-VB.net&#34; data-lang=&#34;VB.net&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Function&lt;/span&gt; sbRandHistogrm(dmin &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Double&lt;/span&gt;, dMax &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Double&lt;/span&gt;, _&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            vWeight &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Variant&lt;/span&gt;, &lt;span style=&#34;color:#00f&#34;&gt;Optional&lt;/span&gt; dRandom = 1#) &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Double&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;Specifies a histogram distribution with range dmin:dmax.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;This range is divided into vWeight.count classes. Each&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;class has weight vWeight(i) reflecting the probability&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;of occurrence of a value within the class.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;Similar to @Risk&amp;#39;s function RiskHistogrm.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;Source (EN): https://www.sulprobil.de/sbrandhistogrm_en/&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;Source (DE): https://www.berndplumhoff.de/sbrandhistogrm_de/&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;(C) (P) by Bernd Plumhoff 18-Oct-2020 PB V1.01&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Dim&lt;/span&gt; i &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Long&lt;/span&gt;, n &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Long&lt;/span&gt;, vW &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Variant&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Dim&lt;/span&gt; dRand &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Double&lt;/span&gt;, dR &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Double&lt;/span&gt;, dSumWeight &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Double&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;With&lt;/span&gt; Application.WorksheetFunction&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;vW = .Transpose(.Transpose(vWeight))&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;End&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;With&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;n = UBound(vW)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;ReDim&lt;/span&gt; dSumWeightI(0 &lt;span style=&#34;color:#00f&#34;&gt;To&lt;/span&gt; n) &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Double&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;   &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;dSumWeight = 0#&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;dSumWeightI(0) = 0#&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;For&lt;/span&gt; i = 1 &lt;span style=&#34;color:#00f&#34;&gt;To&lt;/span&gt; n&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt; vW(i) &amp;lt; 0# &lt;span style=&#34;color:#00f&#34;&gt;Then&lt;/span&gt; &lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;A negative weight is an error&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&lt;/span&gt;        sbRandHistogrm = CVErr(xlErrValue)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#00f&#34;&gt;Exit&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;Function&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    End &lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    dSumWeight = dSumWeight + vW(i) &lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;Calculate sum of all weights&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&lt;/span&gt;    dSumWeightI(i) = dSumWeight     &lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;Calculate sum of weights till i&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Next&lt;/span&gt; i&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt; dSumWeight = 0# &lt;span style=&#34;color:#00f&#34;&gt;Then&lt;/span&gt;  &lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;Sum of weights has to be greater than zero&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&lt;/span&gt;    sbRandHistogrm = CVErr(xlErrValue)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#00f&#34;&gt;Exit&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;Function&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;End &lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt; dRandom = 1# &lt;span style=&#34;color:#00f&#34;&gt;Then&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    dRand = Rnd()&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Else&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    dRand = dRandom&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;End&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;dR = dSumWeight * dRand&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;i = n&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Do&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;While&lt;/span&gt; dR &amp;lt; dSumWeightI(i)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    i = i - 1&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Loop&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sbRandHistogrm = dmin + (dMax - dmin) * _&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;     (&lt;span style=&#34;color:#00f&#34;&gt;CDbl&lt;/span&gt;(i) + (dR - dSumWeightI(i)) / vW(i + 1)) / &lt;span style=&#34;color:#00f&#34;&gt;CDbl&lt;/span&gt;(n)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;End&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;Function&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Bitte den Haftungsausschluss im &lt;a href=&#34;https://www.berndplumhoff.de/about/impressum_de/&#34; title=&#34;Impressum&#34;&gt;Impressum&lt;/a&gt; beachten.&lt;/p&gt;</description>
    </item>
    <item>
      <title>sbLongRandSumN (VBA)</title>
      <link>https://www.berndplumhoff.de/sblongrandsumn_de/</link>
      <pubDate>Thu, 14 May 2026 05:46:00 +0100</pubDate>
      <guid>https://www.berndplumhoff.de/sblongrandsumn_de/</guid>
      <description>&lt;h2 id=&#34;abstract&#34;&gt;Abstract&lt;/h2&gt;&#xA;&lt;p&gt;Sie benötigen 20 natürliche Zufallszahlen mit der Summe 100?&#xA;Dann schlage ich meine hier gezeigte benutzerdefinierte Funktion vor.&#xA;Sie können beliebig viele ganze Zahlen mit einer vorgegebenen Summe erzeugen,&#xA;wobei die erzeugten Zahlen ein spezifiertes Minimum nicht unterschreiten dürfen:&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://www.berndplumhoff.de/sbLongRandSumN_Screen.png&#34; alt=&#34;sbLongRandSumN_Screen&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Bitte beachten Sie, dass diese Funktion mit&#xA;&lt;a href=&#34;https://www.berndplumhoff.de/sbrandintfixsum_de/&#34; title=&#34;sbRandIntFixSum&#34;&gt;sbRandIntFixSum&lt;/a&gt;&#xA;verwandt ist, bei der Minimum und Maximum vorgegeben werden, sowie mit&#xA;der Brown&amp;rsquo;schen Brücke&#xA;&lt;a href=&#34;https://www.berndplumhoff.de/sbgrowthseries_de/&#34; title=&#34;sbGrowthSeries&#34;&gt;sbGrowthSeries&lt;/a&gt;, und mit&#xA;&lt;a href=&#34;https://www.berndplumhoff.de/sbrandsum1_de/&#34; title=&#34;sbRandSum1&#34;&gt;sbRandSum1&lt;/a&gt;&#xA;welche doppelt-genaue Zahlen mit der Summe 1 erzeugt.&#xA;Diese Funktion wird auch von der Anwendung&#xA;&lt;a href=&#34;https://www.berndplumhoff.de/sbgeneratetestdata_de/&#34; title=&#34;sbGenerateTestData&#34;&gt;sbGenerateTestData&lt;/a&gt;&#xA;verwendet.&lt;/p&gt;</description>
    </item>
    <item>
      <title>sbExactRandHistogrm (VBA)</title>
      <link>https://www.berndplumhoff.de/sbexactrandhistogrm_de/</link>
      <pubDate>Thu, 14 May 2026 04:46:00 +0100</pubDate>
      <guid>https://www.berndplumhoff.de/sbexactrandhistogrm_de/</guid>
      <description>&lt;p&gt;&lt;strong&gt;&amp;ldquo;Chance favours the prepared mind.&amp;rdquo; [Louis Pasteur]&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;abstract&#34;&gt;Abstract&lt;/h2&gt;&#xA;&lt;p&gt;Es ist recht leicht, einen &amp;ldquo;unfairen&amp;rdquo; Würfel zu simulieren. Wenn wir z. B. &lt;strong&gt;im Mittel&lt;/strong&gt; die 6&#xA;doppelt so häufig wie alle anderen Zahlen 1 bis 5 erhalten wollen, geben Sie in Zelle A1 ein:&#xA;=MIN(GANZZAHL(ZUFALLSZAHL()*7+1);6)&lt;/p&gt;&#xA;&lt;p&gt;Aber wenn Sie einen Würfel 7 mal würfeln wollen und alle Zahlen von 1 bis 5&#xA;&lt;strong&gt;genau&lt;/strong&gt; einmal und die 6 &lt;strong&gt;genau&lt;/strong&gt; zweimal erscheinen soll?&lt;/p&gt;&#xA;&lt;p&gt;Hier ist meine allgemeine Lösung:&lt;/p&gt;</description>
    </item>
    <item>
      <title>sbRoundRobin (Excel / VBA)</title>
      <link>https://www.berndplumhoff.de/sbroundrobin_de/</link>
      <pubDate>Thu, 14 May 2026 03:33:00 +0100</pubDate>
      <guid>https://www.berndplumhoff.de/sbroundrobin_de/</guid>
      <description>&lt;h2 id=&#34;abstract&#34;&gt;Abstract&lt;/h2&gt;&#xA;&lt;p&gt;Falls Sie ein Turnier organisieren müssen, bei dem jeder einmal gegen jeden anderen&#xA;Spieler spielen muss, können Sie dieses Programm verwenden.&#xA;Es implementiert das sogenannte &lt;em&gt;Rutschsystem&lt;/em&gt;:&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://www.berndplumhoff.de/sbRoundRobin_Prinzip.png&#34; alt=&#34;sbRoundRobin_Prinzip&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Ein Beispiel für 6 Spieler:&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://www.berndplumhoff.de/sbRoundRobin_Paarungen1.png&#34; alt=&#34;sbRoundRobin_Paarungen1&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Das VBA Programm - jedoch nicht der Tabellenblattfunktionsansatz -&#xA;generiert auch diese Art von Paarungstabelle:&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://www.berndplumhoff.de/sbRoundRobin_Paarungen2.png&#34; alt=&#34;sbRoundRobin_Paarungen2&#34;&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;weiterführende-literatur&#34;&gt;Weiterführende Literatur&lt;/h2&gt;&#xA;&lt;p&gt;Suksompong, W. (2018, April 11). Scheduling Asynchronous Round-Robin Tournaments.&#xA;(Externer Link!) &lt;a href=&#34;https://arxiv.org/pdf/1804.04504.pdf&#34;&gt;https://arxiv.org/pdf/1804.04504.pdf&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;Abel, Finizio, Greig, Lewis (2003). Generalized whist tournament designs.&#xA;(Externer link!) &lt;a href=&#34;https://www.researchgate.net/publication/222140264_Generalized_whist_tournament_designs&#34;&gt;https://www.researchgate.net/publication/222140264_Generalized_whist_tournament_designs&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Cholesky (VBA)</title>
      <link>https://www.berndplumhoff.de/cholesky_de/</link>
      <pubDate>Thu, 14 May 2026 02:46:00 +0100</pubDate>
      <guid>https://www.berndplumhoff.de/cholesky_de/</guid>
      <description>&lt;h2 id=&#34;abstract&#34;&gt;Abstract&lt;/h2&gt;&#xA;&lt;p&gt;Mit der Cholesky (sprich: &amp;ldquo;Koleski&amp;rdquo;) Zerlegung können Sie einfach korrelierte Zufallszahlen erzeugen.&#xA;Ich stelle hier ein einfaches Beispiel vor. Den besseren Iman Conover Ansatz finden&#xA;Sie &lt;a href=&#34;https://www.berndplumhoff.de/iman_conover_de/&#34; title=&#34;Iman_Conover&#34;&gt;hier&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://www.berndplumhoff.de/Cholesky.png&#34; alt=&#34;Cholesky&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://www.berndplumhoff.de/Cholesky_Formula.png&#34; alt=&#34;Cholesky_Formula&#34;&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;appendix--programmcode-cholesky-und-randcorr&#34;&gt;Appendix – Programmcode Cholesky und RandCorr&lt;/h2&gt;&#xA;&lt;p&gt;Bitte den Haftungsausschluss im &lt;a href=&#34;https://www.berndplumhoff.de/about/impressum_de/&#34; title=&#34;Impressum&#34;&gt;Impressum&lt;/a&gt; beachten.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-VB.net&#34; data-lang=&#34;VB.net&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Function&lt;/span&gt; Cholesky(vA &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Variant&lt;/span&gt;) &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Variant&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;I suggest to use the Cholesky decomposition just for purposes of demonstration.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;Better options are (in this order): tred2, tqli, eigsrt from Numerical Recipes.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;SVD also works but is computationally more expensive by far since it does not&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;make use of symmetry.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;(Thanks to my former colleague Glen R.)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;Source (EN): https://www.sulprobil.de/cholesky_en/&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;Source (DE): https://www.berndplumhoff.de/cholesky_de/&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;Bernd Plumhoff 02-Nov-2024 PB V1.1&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Dim&lt;/span&gt; d &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Double&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Dim&lt;/span&gt; i &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Long&lt;/span&gt;, j &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Long&lt;/span&gt;, k &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Long&lt;/span&gt;, n &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Long&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;With&lt;/span&gt; Application.WorksheetFunction&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;On&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;Error&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;Resume&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;Next&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;vA = .Transpose(.Transpose(vA))&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;On&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;Error&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;GoTo&lt;/span&gt; 0&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;n = UBound(vA, 1)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt; n &amp;lt;&amp;gt; UBound(vA, 2) &lt;span style=&#34;color:#00f&#34;&gt;Then&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  Cholesky = CVErr(xlErrRef)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#00f&#34;&gt;Exit&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;Function&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;End &lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;ReDim&lt;/span&gt; dR(1 &lt;span style=&#34;color:#00f&#34;&gt;To&lt;/span&gt; n, 1 &lt;span style=&#34;color:#00f&#34;&gt;To&lt;/span&gt; n) &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Double&lt;/span&gt; &lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;Zeroing all elements&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#00f&#34;&gt;For&lt;/span&gt; j = 1 &lt;span style=&#34;color:#00f&#34;&gt;To&lt;/span&gt; n&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  d = 0#&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#00f&#34;&gt;For&lt;/span&gt; k = 1 &lt;span style=&#34;color:#00f&#34;&gt;To&lt;/span&gt; j - 1&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    d = d + dR(j, k) * dR(j, k)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#00f&#34;&gt;Next&lt;/span&gt; k&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  dR(j, j) = vA(j, j) - d&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt; dR(j, j) &amp;gt; 0# &lt;span style=&#34;color:#00f&#34;&gt;Then&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    dR(j, j) = Sqr(dR(j, j))&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#00f&#34;&gt;For&lt;/span&gt; i = j + 1 &lt;span style=&#34;color:#00f&#34;&gt;To&lt;/span&gt; n&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      d = 0#&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#00f&#34;&gt;For&lt;/span&gt; k = 1 &lt;span style=&#34;color:#00f&#34;&gt;To&lt;/span&gt; j - 1&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        d = d + dR(i, k) * dR(j, k)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#00f&#34;&gt;Next&lt;/span&gt; k&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      dR(i, j) = (vA(i, j) - d) / dR(j, j)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#00f&#34;&gt;Next&lt;/span&gt; i&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#00f&#34;&gt;Else&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;Cannot continue with usual Cholesky&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&lt;/span&gt;    &lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;Fill this column with zeros. Idea: Glen R.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&lt;/span&gt;    &lt;span style=&#34;color:#00f&#34;&gt;For&lt;/span&gt; i = j &lt;span style=&#34;color:#00f&#34;&gt;To&lt;/span&gt; n&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      dR(i, j) = 0#&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#00f&#34;&gt;Next&lt;/span&gt; i&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#00f&#34;&gt;End&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Next&lt;/span&gt; j&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Cholesky = dR&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;End&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;With&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;End&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;Function&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Function&lt;/span&gt; RandCorr(n &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Long&lt;/span&gt;, vVarCovar &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Variant&lt;/span&gt;) &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Variant&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;Returns Ubound(vVarCovar,1) correlated random number vectors of length n.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;vVarCovar is a square matrix containing the variance/covariance matrix.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;Please notice that you will only get a &amp;#34;proxy&amp;#34; correlation, not an exact one.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;Bernd Plumhoff 06-Nov-2009 PB V0.2&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Dim&lt;/span&gt; vA &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Variant&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Dim&lt;/span&gt; d &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Double&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Dim&lt;/span&gt; i &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Long&lt;/span&gt;, j &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Long&lt;/span&gt;, k &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Long&lt;/span&gt;, m &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Long&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;With&lt;/span&gt; Application.WorksheetFunction&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;vA = .Transpose(.Transpose(vVarCovar))&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;m = UBound(vA, 1)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt; m &amp;lt;&amp;gt; UBound(vA, 2) &lt;span style=&#34;color:#00f&#34;&gt;Then&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  RandCorr = CVErr(xlErrRef)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#00f&#34;&gt;Exit&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;Function&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;End &lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;ReDim&lt;/span&gt; Db(1 &lt;span style=&#34;color:#00f&#34;&gt;To&lt;/span&gt; m, 1 &lt;span style=&#34;color:#00f&#34;&gt;To&lt;/span&gt; m) &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Double&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;For&lt;/span&gt; j = 1 &lt;span style=&#34;color:#00f&#34;&gt;To&lt;/span&gt; m&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  d = 0#&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#00f&#34;&gt;For&lt;/span&gt; k = 1 &lt;span style=&#34;color:#00f&#34;&gt;To&lt;/span&gt; j - 1&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    d = d + Db(j, k) * Db(j, k)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#00f&#34;&gt;Next&lt;/span&gt; k&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  Db(j, j) = vA(j, j) - d&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt; Db(j, j) &amp;lt;= 0 &lt;span style=&#34;color:#00f&#34;&gt;Then&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    RandCorr = CVErr(xlErrNum)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#00f&#34;&gt;Exit&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;Function&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  End &lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  Db(j, j) = Sqr(Db(j, j))&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#00f&#34;&gt;For&lt;/span&gt; i = j + 1 &lt;span style=&#34;color:#00f&#34;&gt;To&lt;/span&gt; m&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    d = 0#&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#00f&#34;&gt;For&lt;/span&gt; k = 1 &lt;span style=&#34;color:#00f&#34;&gt;To&lt;/span&gt; j - 1&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      d = d + Db(i, k) * Db(j, k)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#00f&#34;&gt;Next&lt;/span&gt; k&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    Db(i, j) = (vA(i, j) - d) / Db(j, j)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#00f&#34;&gt;Next&lt;/span&gt; i&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Next&lt;/span&gt; j&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;ReDim&lt;/span&gt; vR(1 &lt;span style=&#34;color:#00f&#34;&gt;To&lt;/span&gt; n, 1 &lt;span style=&#34;color:#00f&#34;&gt;To&lt;/span&gt; m) &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Variant&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;For&lt;/span&gt; i = 1 &lt;span style=&#34;color:#00f&#34;&gt;To&lt;/span&gt; n&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#00f&#34;&gt;For&lt;/span&gt; j = 1 &lt;span style=&#34;color:#00f&#34;&gt;To&lt;/span&gt; m&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    vR(i, j) = .Norm_S_Inv(Rnd())&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#00f&#34;&gt;Next&lt;/span&gt; j&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Next&lt;/span&gt; i&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;vR = .MMult(vR, Db)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;RandCorr = vR&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;End&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;With&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;End&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;Function&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;downlaod&#34;&gt;Downlaod&lt;/h2&gt;&#xA;&lt;p&gt;Bitte den Haftungsausschluss im &lt;a href=&#34;https://www.berndplumhoff.de/about/impressum_de/&#34; title=&#34;Impressum&#34;&gt;Impressum&lt;/a&gt; beachten.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Bereichsnamen einmal anders (Excel)</title>
      <link>https://www.berndplumhoff.de/bereichsnamen_einmal_anders_de/</link>
      <pubDate>Thu, 14 May 2026 02:33:00 +0100</pubDate>
      <guid>https://www.berndplumhoff.de/bereichsnamen_einmal_anders_de/</guid>
      <description>&lt;h2 id=&#34;abstract&#34;&gt;Abstract&lt;/h2&gt;&#xA;&lt;p&gt;Normalerweise verwenden Sie Bereichsnamen in Excel, um eine hartkodierte&#xA;Zuweisung zu Eingabe- oder Ausgabezellen zu vermeiden. Wenn Sie wichtigen Zellen&#xA;Namen zuweisen, werden deren Bezüge bei Zeilen- oder Spalteneinfügungen oder&#xA;-löschungen automatisch angepasst.&lt;/p&gt;&#xA;&lt;p&gt;Hier wollen wir Bereichsnamen in Excel für die effiziente Implementierung&#xA;einer einfachen Lösung mit verschachtelten Tabellenblattfunktionen verwenden,&#xA;die nicht mehr verändert werden muss:&lt;/p&gt;&#xA;&lt;p&gt;Für eine (fast) beliebige Anzahl von Spielern wollen wir ein einfaches&#xA;Rundenturnier organisieren, bei dem jeder Spieler gegen jeden anderen genau&#xA;einmal spielt. Der Einfachheit halber legen wir fest, dass Spieler 1 im ersten&#xA;Spiel Heimrecht haben soll (oder anders ausgedrückt: mit Weiß spielt).&lt;/p&gt;</description>
    </item>
    <item>
      <title>sbRandInt (VBA)</title>
      <link>https://www.berndplumhoff.de/sbrandint_de/</link>
      <pubDate>Thu, 14 May 2026 01:46:00 +0100</pubDate>
      <guid>https://www.berndplumhoff.de/sbrandint_de/</guid>
      <description>&lt;h2 id=&#34;abstract&#34;&gt;Abstract&lt;/h2&gt;&#xA;&lt;p&gt;Falls Sie sich nicht oder lediglich begrenzt häufig wiederholende ganzzahlige Zufallszahlen zwischen zwei gegebenen Werten benötigen,&#xA;dann empfehle ich, meine benutzerdefinierte Funktion &lt;em&gt;sbRandInt&lt;/em&gt; zu verwenden:&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://www.berndplumhoff.de/sbrandint.png&#34; alt=&#34;sbrandint&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://www.berndplumhoff.de/sbrandint_formula.png&#34; alt=&#34;sbrandint_formula&#34;&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;appendix--programmcode-sbrandint&#34;&gt;Appendix – Programmcode sbRandInt&lt;/h2&gt;&#xA;&lt;p&gt;Bitte den Haftungsausschluss im &lt;a href=&#34;https://www.berndplumhoff.de/about/impressum_de/&#34; title=&#34;Impressum&#34;&gt;Impressum&lt;/a&gt; beachten.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-VB.net&#34; data-lang=&#34;VB.net&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Function&lt;/span&gt; sbRandInt(&lt;span style=&#34;color:#00f&#34;&gt;ByVal&lt;/span&gt; lCount &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Long&lt;/span&gt;, _&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  lMin &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Long&lt;/span&gt;, _&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  lMax &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Long&lt;/span&gt;, _&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#00f&#34;&gt;Optional&lt;/span&gt; lRept &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Long&lt;/span&gt; = 1) &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Variant&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;Returns lCount random integers between lMin and lMax, each one&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;occurring zero to lRept times. lMax - lMin + 1 must be greater&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;or equal to lCount.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;Error values:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;#NUM!   - lRept is less than 1&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;#REF!   - lCount is greater than (lMax - lMin + 1) * lRept&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;#VALUE! - lCount is less than 1&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;Source (EN): https://www.sulprobil.de/sbrandint_en/&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;Source (DE): https://www.berndplumhoff.de/sbrandint_de/&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;(C) (P) by Bernd Plumhoff  30-Dec-2024 PB V1.02&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Static&lt;/span&gt; bRandomized &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Boolean&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Dim&lt;/span&gt; i &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Long&lt;/span&gt;, j &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Long&lt;/span&gt;, k &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Long&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Dim&lt;/span&gt; lRnd &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Long&lt;/span&gt;, lRange &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Long&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Const&lt;/span&gt; CLateInitFactor = 50&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt; lCount &amp;lt; 1 &lt;span style=&#34;color:#00f&#34;&gt;Then&lt;/span&gt; sbRandInt = CVErr(xlErrValue): &lt;span style=&#34;color:#00f&#34;&gt;Exit&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;Function&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;If lRept &amp;lt; 1 &lt;span style=&#34;color:#00f&#34;&gt;Then&lt;/span&gt; sbRandInt = CVErr(xlErrNum): &lt;span style=&#34;color:#00f&#34;&gt;Exit&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;Function&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;If lCount &amp;gt; (lMax - lMin + 1) * lRept &lt;span style=&#34;color:#00f&#34;&gt;Then&lt;/span&gt; sbRandInt = CVErr(xlErrRef): &lt;span style=&#34;color:#00f&#34;&gt;Exit&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;Function&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;lRange = (lMax - lMin + 1) * lRept&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;ReDim&lt;/span&gt; lr(1 &lt;span style=&#34;color:#00f&#34;&gt;To&lt;/span&gt; lCount) &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Long&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;Not&lt;/span&gt; bRandomized &lt;span style=&#34;color:#00f&#34;&gt;Then&lt;/span&gt; Randomize: bRandomized = &lt;span style=&#34;color:#00f&#34;&gt;True&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;ReDim&lt;/span&gt; lT(1 &lt;span style=&#34;color:#00f&#34;&gt;To&lt;/span&gt; lRange) &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; &lt;span style=&#34;color:#2b91af&#34;&gt;Long&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;If we have a huge range of possible random integers and a comparably&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;small number of draws, i.e. if (lMax - lMin) * lRept &amp;gt;&amp;gt; lCount&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;then we can save some runtime with late initialization.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt; lRange / lCount &amp;lt; CLateInitFactor &lt;span style=&#34;color:#00f&#34;&gt;Then&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#00f&#34;&gt;For&lt;/span&gt; i = 1 &lt;span style=&#34;color:#00f&#34;&gt;To&lt;/span&gt; lRange&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    lT(i) = Int((i - 1) / lRept) + lMin&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#00f&#34;&gt;Next&lt;/span&gt; i&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;End&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;i = 1&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt; lRange / lCount &amp;lt; CLateInitFactor &lt;span style=&#34;color:#00f&#34;&gt;Then&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#00f&#34;&gt;For&lt;/span&gt; k = 1 &lt;span style=&#34;color:#00f&#34;&gt;To&lt;/span&gt; UBound(lr)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    lRnd = Int(((lRange - i + 1) * Rnd) + 1)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    lr(k) = lT(lRnd)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    lT(lRnd) = lT(lRange - i + 1)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    i = i + 1&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#00f&#34;&gt;Next&lt;/span&gt; k&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Else&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  j = lMin: &lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt; lMin &amp;lt;= 0 &lt;span style=&#34;color:#00f&#34;&gt;And&lt;/span&gt; lMax &amp;gt;= 0 &lt;span style=&#34;color:#00f&#34;&gt;Then&lt;/span&gt; j = 1&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#00f&#34;&gt;For&lt;/span&gt; k = 1 &lt;span style=&#34;color:#00f&#34;&gt;To&lt;/span&gt; UBound(lr)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    lRnd = Int(((lRange - i + 1) * Rnd) + 1)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt; lT(lRnd) = 0 &lt;span style=&#34;color:#00f&#34;&gt;Then&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      lr(k) = Int((lRnd - 1) / lRept) + j&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#00f&#34;&gt;Else&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      lr(k) = lT(lRnd)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#00f&#34;&gt;End&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt; lT(lRange - i + 1) = 0 &lt;span style=&#34;color:#00f&#34;&gt;Then&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      lT(lRnd) = Int((lRange - i) / lRept) + j&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#00f&#34;&gt;Else&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      lT(lRnd) = lT(lRange - i + 1)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#00f&#34;&gt;End&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    i = i + 1&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#00f&#34;&gt;Next&lt;/span&gt; k&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;If lRange includes zero we need to shift result array&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&lt;/span&gt;  &lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt; lMin &amp;lt;= 0 &lt;span style=&#34;color:#00f&#34;&gt;And&lt;/span&gt; lMax &amp;gt;= 0 &lt;span style=&#34;color:#00f&#34;&gt;Then&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#00f&#34;&gt;For&lt;/span&gt; k = 1 &lt;span style=&#34;color:#00f&#34;&gt;To&lt;/span&gt; UBound(lr)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      lr(k) = lr(k) + lMin - 1&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#00f&#34;&gt;Next&lt;/span&gt; k&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#00f&#34;&gt;End&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;End&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;If&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sbRandInt = lr&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;End&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;Function&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Bitte den Haftungsausschluss im &lt;a href=&#34;https://www.berndplumhoff.de/about/impressum_de/&#34; title=&#34;Impressum&#34;&gt;Impressum&lt;/a&gt; beachten.&lt;/p&gt;</description>
    </item>
    <item>
      <title>SystemState (VBA Class)</title>
      <link>https://www.berndplumhoff.de/systemstate_de/</link>
      <pubDate>Wed, 13 May 2026 14:30:00 +0100</pubDate>
      <guid>https://www.berndplumhoff.de/systemstate_de/</guid>
      <description>&lt;h2 id=&#34;abstract&#34;&gt;Abstract&lt;/h2&gt;&#xA;&lt;p&gt;Mein ehemaliger Kollege Jon T. entwickelte die kleinste mir bekannte sinnvolle VBA Klasse:&#xA;Mit &lt;em&gt;SystemState&lt;/em&gt; kann man Systemstatusvariablen leicht speichern und für eigene Zwecke optimieren.&lt;/p&gt;&#xA;&lt;p&gt;Um die Programmausführung zu beschleunigen, schreibt man normalerweise zu Beginn eines VBA Makros&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-VB.net&#34; data-lang=&#34;VB.net&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Application.Calculation = xlCalculationManual&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Application.ScreenUpdating = &lt;span style=&#34;color:#00f&#34;&gt;False&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;und am Ende des Makros&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-VB.net&#34; data-lang=&#34;VB.net&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Application.Calculation = xlCalculationAutomatic&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Application.ScreenUpdating = &lt;span style=&#34;color:#00f&#34;&gt;True&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Mit dem Klassenmodul &lt;em&gt;SystemState&lt;/em&gt; schreibt man am Start lediglich&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-VB.net&#34; data-lang=&#34;VB.net&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Dim&lt;/span&gt; state &lt;span style=&#34;color:#00f&#34;&gt;As&lt;/span&gt; SystemState&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#00f&#34;&gt;Set&lt;/span&gt; state = &lt;span style=&#34;color:#00f&#34;&gt;New&lt;/span&gt; SystemState&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#008000&#34;&gt;&amp;#39;Bitte beachten: Dies kann NICHT mit &amp;#34;Dim state as New SystemState&amp;#34; abgekürzt werden!&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;und am Ende&lt;/p&gt;</description>
    </item>
    <item>
      <title>Urlaub nehmen wenn weniger los ist (Excel / VBA)</title>
      <link>https://www.berndplumhoff.de/urlaub_nehmen_wenn_weniger_los_ist_de/</link>
      <pubDate>Wed, 13 May 2026 06:56:00 +0100</pubDate>
      <guid>https://www.berndplumhoff.de/urlaub_nehmen_wenn_weniger_los_ist_de/</guid>
      <description>&lt;h2 id=&#34;abstract&#34;&gt;Abstract&lt;/h2&gt;&#xA;&lt;p&gt;Wenn Ihr Geschäft saisonal stark schwankt,&#xA;können Sie den Urlaub Ihrer Belegschaft entsprechend planen und ggf.&#xA;Saisonarbeitskräfte anstellen:&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://www.berndplumhoff.de/take_vacation_simple_diagram.png&#34; alt=&#34;take_vacation_simple_diagram&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Hinweis: Selbstverständlich kann man keinem Mitarbeiter vorschreiben,&#xA;wieviel Urlaub wann genommen werden muss. Diese Rechnungen sind lediglich&#xA;Vorschläge, die als vernünftige Indikatoren dienen sollen.&lt;/p&gt;&#xA;&lt;h2 id=&#34;einfaches-beispiel&#34;&gt;Einfaches Beispiel&lt;/h2&gt;&#xA;&lt;p&gt;Wenn sie den maximalen Umsatzmonat (hier: 24.000) als Basis nehmen wollen,&#xA;in dem kein Urlaub genommen werden sollte, und die restlichen Urlaubstage&#xA;linear gemäß der Umsätze verteilen wollen:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Trinkgeld Verteilung (Excel)</title>
      <link>https://www.berndplumhoff.de/trinkgeld_verteilung_de/</link>
      <pubDate>Wed, 13 May 2026 06:50:00 +0100</pubDate>
      <guid>https://www.berndplumhoff.de/trinkgeld_verteilung_de/</guid>
      <description>&lt;p&gt;&lt;strong&gt;&amp;ldquo;Flattery is nice but tips will suffice.&amp;rdquo;&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;abstract&#34;&gt;Abstract&lt;/h2&gt;&#xA;&lt;p&gt;Sie wollen alle Trinkgelder Ihrer Mitarbeitenden fair aufteilen?&#xA;Jeder soll 70% aller direkt erhaltenen Trinkgelder behalten, aber&#xA;30% sollen auf Basis gearbeiteter Stunden verteilt werden, damit auch&#xA;Reinigungskräfte und Rezeptionsangestellte etwas bekommen?&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://www.berndplumhoff.de/tip_distribution_diagram.png&#34; alt=&#34;tip_distribution_diagram&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://www.berndplumhoff.de/tip_distribution.png&#34; alt=&#34;tip_distribution&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Die Eingabe des Prozentsatzes, den jeder behalten kann:&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://www.berndplumhoff.de/tip_distribution_keep_percentage.png&#34; alt=&#34;tip_distribution_keep_percentage&#34;&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;download&#34;&gt;Download&lt;/h2&gt;&#xA;&lt;p&gt;Bitte den Haftungsausschluss im &lt;a href=&#34;https://www.berndplumhoff.de/about/impressum_de/&#34; title=&#34;Impressum&#34;&gt;Impressum&lt;/a&gt; beachten.&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://www.berndplumhoff.de/Trinkgeld_Verteilung.xlsx&#34;&gt;Trinkgeld_Verteilung.xlsx&lt;/a&gt; [48 KB Excel Datei, ohne jegliche Gewährleistung]&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Hinweis&lt;/strong&gt;: Eine umfassende Dokumentation meiner Excel Implementierungen finden Sie in&#xA;&lt;a href=&#34;https://www.berndplumhoff.de/excel_vba_eine_sammlung_de/&#34; title=&#34;Excel VBA Eine Sammlung&#34;&gt;Excel VBA Eine Sammlung&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>sbDataStats (VBA)</title>
      <link>https://www.berndplumhoff.de/sbdatastats_de/</link>
      <pubDate>Sun, 10 May 2026 15:44:00 +0100</pubDate>
      <guid>https://www.berndplumhoff.de/sbdatastats_de/</guid>
      <description>&lt;p&gt;&lt;strong&gt;&amp;ldquo;Statistics are like bikinis. What they reveal is suggestive, but what they conceal is vital.&amp;rdquo; [Aaron Levenstein]&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;abstract&#34;&gt;Abstract&lt;/h2&gt;&#xA;&lt;p&gt;Selbstverständlich kann man für jede Eingabe ein spezielles Datenprüfprogramm erzeugen.&lt;/p&gt;&#xA;&lt;p&gt;Aber was wenn Sie beliebige Daten (in einer CSV Datei) durch eine allgemeine&#xA;Datenanalyse untersuchen lassen wollten?&lt;/p&gt;&#xA;&lt;p&gt;Für eine allgemeine numerische Analyse könnten Sie einfach Minimum, Durchschnitt und&#xA;Maximum ermitteln und z. B. bezüglich Extremwerten warnen, die um mehr als 2.5&#xA;Standardabweichungen vom Durchschnitt abweichen.&#xA;Bei Textdaten könnte ein Analyseprogramm die Häufigkeit von Worten und Zeichen ausgeben.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Vergleiche Korrelationsmatrizen (Perl)</title>
      <link>https://www.berndplumhoff.de/vergleiche_korrelationsmatrizen_de/</link>
      <pubDate>Sun, 10 May 2026 15:44:00 +0100</pubDate>
      <guid>https://www.berndplumhoff.de/vergleiche_korrelationsmatrizen_de/</guid>
      <description>&lt;p&gt;&lt;strong&gt;&amp;ldquo;Remember, my friend, that knowledge is stronger than memory, and we should not trust the weaker.&amp;rdquo; [Bram Stoker]&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;abstract&#34;&gt;Abstract&lt;/h2&gt;&#xA;&lt;p&gt;Vor einigen Jahren entwickelte ich ein Perl Programm für einen AlgoOne Kunden.&#xA;Im Laufe der Zeit erweiterte ich das Programm und ließ es die &lt;em&gt;RMLinks.cfg&lt;/em&gt; Datei einlesen,&#xA;so dass neue Risikofaktoren automatisch einbezogen wurden.&lt;/p&gt;&#xA;&lt;h2 id=&#34;implementierungsansatz&#34;&gt;Implementierungsansatz&lt;/h2&gt;&#xA;&lt;p&gt;Mein Implementierungsansatz war:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;1. Erste Matrix einlesen&#xA;    Prüfungen:&#xA;    Matrix quadratisch?&#xA;    Risikofaktorsortierung links-&amp;gt;rechts (in der obersten Zeile) == oben-&amp;gt;unten (in der linkesten Spalte)?&#xA;    Diagonalen == 1 (Warnung)?&#xA;    Keine NC Kategorie (Warnung falls doch)?&#xA;    Matrix symmetrisch: M(i,j) == M(j,i) für alle i,j?&#xA;    [Nicht bei DC Dateien weil dort nicht gegeben.]&#xA;&#xA;2. Zweite Matrix einlesen&#xA;    Prüfungen wie oben&#xA;&#xA;3. Risikofaktoren in beiden Matrizen identisch?&#xA;    Warnung bei Risikofactoren die in der ersten aber nicht in der zweiten Matrix sind und umgekehrt&#xA;    Zeige die Ausreißer pro Kategorie&#xA;    Zeige die Ausreißer pro Währung&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;h2 id=&#34;parameter&#34;&gt;Parameter&lt;/h2&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;b - breaches: do not report differences between the two input matrices but breaches beyond tolerances.&#xA;d - debug [level] gives debugging information at detail level level&#xA;    level 1: -&#xA;    level 2: -&#xA;    level 3: Print all elements of matrices 1 and 2&#xA;f - read deviation file [-f needs to be followed by a valid filename]&#xA;    Reads min and max values for all slices for differences which should&#xA;    be ignored during comparison. See option -w to get format example&#xA;h - help: list parameters and their explanation&#xA;i -  ignore risk factors in a given file [-i needs to be followed by a valid filename]&#xA;m - set max rank index [default is 6 (=return highest 3&#xA;    and lowest 3 of each slice); m needs to be even and &amp;gt;= 4 !&#xA;n - tolerate risk factor category NC&#xA;r - set Algo risk factor category file [default is ./RMLinks.cfg&#xA;s - summarize findings, no detailed warnings or error messages&#xA;t - read file with tolerated changes for each matrix element and apply tolerance check&#xA;v - print version&#xA;w - write deviation file with min and max values of all slices.&#xA;    This file is comma-separated to be easily readable via Excel.&#xA;    It can be amended and used with option -f later&#xA;    [-w needs to be followed by a valid filename, preferrably ending with .csv&#xA;x - read translation table [-x needs to be followed by a valid filename].&#xA;    Risk factor names of matrix 1 will be translated by second name in comma-separated row&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;h2 id=&#34;beispiel-für-einen-programmaufruf&#34;&gt;Beispiel für einen Programmaufruf&lt;/h2&gt;&#xA;&lt;p&gt;Ein typischer Aufruf dieses Programms von einem Shell Script aus könnte so aussehen:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Erfolgreiche Teams</title>
      <link>https://www.berndplumhoff.de/erfolgreiche_teams_de/</link>
      <pubDate>Sun, 10 May 2026 13:22:00 +0100</pubDate>
      <guid>https://www.berndplumhoff.de/erfolgreiche_teams_de/</guid>
      <description>&lt;p&gt;&lt;strong&gt;&amp;ldquo;Teamwork is the secret that makes common people achieve uncommon results.&amp;rdquo; [Ifeanyi Onuoha]&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;übersicht&#34;&gt;Übersicht&lt;/h2&gt;&#xA;&lt;p&gt;In homogenen Teams haben die Mitglieder ähnliche Persönlichkeiten und Stärken.&#xA;Es gibt wenig Konflikte, aber die Ergebnisse sind oft nicht optimal.&#xA;Je breiter die Rollen im Team gestreut sind, desto leistungsfähiger ist das Team.&#xA;Wenn sich die Mitglieder dieser Verteilung bewusst sind, verbessert dies die&#xA;Ergebnisse weiter.&#xA;Für die erfolgreiche Zusammensetzung von Arbeitsgruppen existieren viele&#xA;verschiedene Ansätze.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Adonis (BPM)</title>
      <link>https://www.berndplumhoff.de/adonis_de/</link>
      <pubDate>Wed, 06 May 2026 06:25:00 +0100</pubDate>
      <guid>https://www.berndplumhoff.de/adonis_de/</guid>
      <description>&lt;p&gt;&lt;strong&gt;&amp;ldquo;Lack of documentation is becoming a problem for acceptance.&amp;rdquo; [Wietse Venema]&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;abstract&#34;&gt;Abstract&lt;/h2&gt;&#xA;&lt;p&gt;Adonis ist eine Geschäfts-Prozessmanagement Anwendung.&#xA;Sie wurde 1995 an der Universität Wien entwickelt.&#xA;Adonis kann die Dokumentation, Analyse und Optimierung von&#xA;Geschäftsprozessen unterstützen.&lt;/p&gt;&#xA;&lt;h2 id=&#34;zugang-und-verwendung&#34;&gt;Zugang und Verwendung&lt;/h2&gt;&#xA;&lt;p&gt;Unternehmen können eine reguläre (externer Link!) &lt;a href=&#34;https://www.boc-group.com/de/adonis&#34;&gt;Adonis&lt;/a&gt; Lizenz erwerben.&#xA;Privatpersonen können die kostenlose (externer Link!) &lt;a href=&#34;https://www.adonis-community.com/de/support-faqs/adonisce-classic&#34;&gt;Adonis:CE&lt;/a&gt; Anwendung nutzen.&lt;/p&gt;&#xA;&lt;p&gt;(Externer Link!) &lt;a href=&#34;https://docs.boc-group.com/adonis/de/docs/18.0/user_manual&#34;&gt;Adonis User Manual&lt;/a&gt; ist ein detailliertes online Benutzerhandbuch.&lt;/p&gt;&#xA;&lt;h3 id=&#34;beschränkungen-der-kostenlosen-adonisce&#34;&gt;Beschränkungen der kostenlosen Adonis:CE&lt;/h3&gt;&#xA;&lt;p&gt;Nach 60 Tagen ohne Login wird ein Adonis:CE Account deaktiviert.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Schule des Denkens</title>
      <link>https://www.berndplumhoff.de/schule_des_denkens_de/</link>
      <pubDate>Fri, 10 Apr 2026 13:11:00 +0100</pubDate>
      <guid>https://www.berndplumhoff.de/schule_des_denkens_de/</guid>
      <description>&lt;p&gt;&lt;strong&gt;&amp;ldquo;If there is a problem you can&amp;rsquo;t solve, then there is an easier problem you can solve: find it.&amp;rdquo; [George Pólya]&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;abstract&#34;&gt;Abstract&lt;/h2&gt;&#xA;&lt;p&gt;Jeder, der Probleme strukturiert lösen möchte, sollte zunächst &amp;ldquo;Schule des Denkens&amp;rdquo; von&#xA;George Pólya lesen.&lt;/p&gt;&#xA;&lt;p&gt;Auch wenn Pólya hauptsächlich mathematische Probleme im Auge hatte, kann man seine&#xA;Techniken allgemein anwenden.&lt;/p&gt;&#xA;&lt;h2 id=&#34;pólyas-prinzipen&#34;&gt;Pólya&amp;rsquo;s Prinzipen&lt;/h2&gt;&#xA;&lt;p&gt;In seinem Buch unterscheidet Pólya 4 einfache Phasen des Problemlösens.&lt;/p&gt;&#xA;&lt;p&gt;Wir wollen diese Phasen anhand einer Beispielaufgabe erläutern:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Mitarbeiter Umsatzanteile (Excel / VBA)</title>
      <link>https://www.berndplumhoff.de/mitarbeiter_umsatzanteile_de/</link>
      <pubDate>Wed, 08 Apr 2026 05:18:00 +0100</pubDate>
      <guid>https://www.berndplumhoff.de/mitarbeiter_umsatzanteile_de/</guid>
      <description>&lt;h2 id=&#34;abstract&#34;&gt;Abstract&lt;/h2&gt;&#xA;&lt;p&gt;Diese Anwendung ist ein Umsatzbericht.&#xA;Er verwendet meine&#xA;&lt;a href=&#34;https://www.berndplumhoff.de/excel_vba_eine_sammlung_de/&#34; title=&#34;excel_vba_eine_sammlung&#34;&gt;bevorzugten Programmelemente&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Eingabe:&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://www.berndplumhoff.de/Pic_Staff_Sales_Share_Input_DE.png&#34; alt=&#34;Pic_Staff_Sales_Share_Input_DE&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Ausgabe:&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;So erkennen Sie Ihre wichtigsten Kunden und Mitarbeiter auf einen Blick (siehe grüner Hintergrund):&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Mit den Kunden &lt;em&gt;GHI GmbH &amp;amp; Co KG&lt;/em&gt; und &lt;em&gt;DEF AG&lt;/em&gt; erzielen Sie mehr als 50% Ihres Gesamtumsatzes.&lt;/li&gt;&#xA;&lt;li&gt;Ihre Mitarbeiter &lt;em&gt;MA2&lt;/em&gt; und &lt;em&gt;MA1&lt;/em&gt; generieren mehr als 50% Ihres Gesamtumsatzes.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://www.berndplumhoff.de/Pic_Staff_Sales_Share_Output_DE.png&#34; alt=&#34;Pic_Staff_Sales_Share_Output_DE&#34;&gt;&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Das Ziel war ein einfacher, nachvollziehbarer Berichtsprozess:&#xA;Welche Mitarbeiter hatten welche Umsatzanteile für welchen Mandanten,&#xA;und wer hat wann welchen Umsatzbericht mit welchem Ergebnis erstellt.&lt;/li&gt;&#xA;&lt;li&gt;Die Scripting Dictionaries &lt;code&gt;oMA&lt;/code&gt;, &lt;code&gt;oMASumme&lt;/code&gt;, &lt;code&gt;oMandant&lt;/code&gt;,&#xA;&lt;code&gt;oMandantSumme&lt;/code&gt; und &lt;code&gt;oSumme&lt;/code&gt; ermöglichen die einfache Sammlung,&#xA;Speicherung und Ausgabe von allen numerischen und nicht-numerischen Daten mit nicht-numerischen Suchbegriffen.&lt;/li&gt;&#xA;&lt;li&gt;Die Ausgabedaten werden sowohl im Tabellenblatt &lt;em&gt;Output&lt;/em&gt; als auch im Unterverzeichnis &lt;em&gt;Reports&lt;/em&gt; ausgegeben&#xA;und durch die Subroutine&#xA;&lt;a href=&#34;https://www.berndplumhoff.de/sbzip_de/&#34; title=&#34;sbZip&#34;&gt;sbZip&lt;/a&gt;&#xA;zusätzlich in ein Jahresarchiv gezippt.&lt;/li&gt;&#xA;&lt;li&gt;Die Funktion &lt;code&gt;RoundToSum&lt;/code&gt; stellt die fehlerfreie Rundung der Mitarbeiteranteile sicher.&lt;/li&gt;&#xA;&lt;li&gt;Die Enumerierung &lt;em&gt;Eingabespalten&lt;/em&gt; ermöglicht eine nachvollziehbare&#xA;Adressierung und einfache spätere Änderung der Eingabespalten.&lt;/li&gt;&#xA;&lt;li&gt;Das Modul &lt;code&gt;modLog&lt;/code&gt; und das Klassenmodul &lt;code&gt;clsLog&lt;/code&gt; zeigen,&#xA;wer welchen Umsatzbericht wann mit welchem Ergebnis erstellt hat.&#xA;Siehe Tabellenblatt &lt;em&gt;Workflow&lt;/em&gt; und Unterverzeichnis &lt;em&gt;Logs&lt;/em&gt;.&lt;/li&gt;&#xA;&lt;li&gt;Das Klassenmodul &lt;code&gt;SystemState&lt;/code&gt; stellt die gewünschten Umgebungsparameter für die Anwendung ein und setzt sie nach Programmende zurück.&lt;/li&gt;&#xA;&lt;li&gt;Die Anwendung adressiert die Tabellenblätter direkt mit VBA internen Codenamen (&lt;code&gt;wsI&lt;/code&gt;, &lt;code&gt;wsO&lt;/code&gt;, &lt;code&gt;wsW&lt;/code&gt;).&lt;/li&gt;&#xA;&lt;li&gt;Fehlerhafte Eingaben und inkonsistente Ausgabesummen werden farblich (in gelb) markiert und in den Logs protokolliert.&lt;/li&gt;&#xA;&lt;li&gt;Das Modul (externer Link!) &lt;a href=&#34;https://github.com/cristianbuse/VBA-FileTools&#34;&gt;LibFileTools&lt;/a&gt; stellt sicher,&#xA;dass diese Anwendung auch unter Sharepoint / OneDrive läuft.&lt;/li&gt;&#xA;&lt;li&gt;Das Modul (externer Link!) &lt;a href=&#34;https://stackoverflow.com/questions/3120915/get-timezone-information-in-vba-excel/20489651#20489651&#34;&gt;TimeZone&lt;/a&gt; bietet die Umrechnungen von Zeitzonen - Voraussetzung&#xA;ist ein ordnungsgemäß installiertes MS Outlook.&lt;/li&gt;&#xA;&lt;li&gt;Die Module (externe Links!) &lt;a href=&#34;https://jkp-ads.com/Articles/performanceclass.asp&#34;&gt;modPerf&lt;/a&gt; und &lt;a href=&#34;https://docs.microsoft.com/en-us/previous-versions/office/developer/office-2010/ff700515(v=office.14)?redirectedfrom=MSDN&#34;&gt;modTimer&lt;/a&gt; und das Klassenmodul &lt;a href=&#34;https://jkp-ads.com/Articles/performanceclass.asp&#34;&gt;clsPerf&lt;/a&gt; ermöglichen&#xA;die Messung der Laufzeiten von Subroutinen und Funktionen - dafür&#xA;muss die Precompilerkonstante MEASURE_RUNTIME = True gesetzt werden.&lt;/li&gt;&#xA;&lt;li&gt;Falls eine andere Anwendung die Eingabedaten (z. B. Umsätze pro Mandant,&#xA;Zeiterfassungen der Mitarbeiter multipliziert mit deren Seniorität als Gewichte)&#xA;als Datei bereitstellen kann, sollte diese Anwendung um ein Unterverzeichnis&#xA;Eingabedateien mit Jahresunterordner (analog der existierenden Ausgabestruktur) erweitert werden.&lt;/li&gt;&#xA;&lt;li&gt;Eine detaillierte Dokumentation dieser Anwendung ist mit dem BPM System&#xA;&lt;a href=&#34;https://www.berndplumhoff.de/adonis_de/&#34; title=&#34;Adonis&#34;&gt;Adonis&lt;/a&gt;&#xA;einfach möglich.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;download&#34;&gt;Download&lt;/h2&gt;&#xA;&lt;p&gt;Bitte den Haftungsausschluss im &lt;a href=&#34;https://www.berndplumhoff.de/about/impressum_de/&#34; title=&#34;Impressum&#34;&gt;Impressum&lt;/a&gt; beachten.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Excel Funktionen (Excel / VBA)</title>
      <link>https://www.berndplumhoff.de/excel_funktionen_de/</link>
      <pubDate>Sat, 27 Sep 2025 15:58:00 +0100</pubDate>
      <guid>https://www.berndplumhoff.de/excel_funktionen_de/</guid>
      <description>&lt;p&gt;Bitte beachten Sie, dass &lt;strong&gt;alle&lt;/strong&gt; Links unter den Funktionsnamen und -typen (bei VBA Funktionen und Anweisungen) externe Links sind,&#xA;die auf Microsoft Hilfeseiten verweisen.&lt;/p&gt;&#xA;&lt;p&gt;Die Spalte &lt;em&gt;In VBA mit Application.WorksheetFunction&lt;/em&gt; nennt den englischen Funktionsnamen, mit dem Sie diese Funktionen in VBA mit&#xA;&lt;em&gt;Application.WorksheetFunction.&amp;lt;FunctionName&amp;gt;&lt;/em&gt; aufrufen können.&lt;/p&gt;&#xA;&lt;p&gt;Für neuere Funktionen sehen Sie unter &lt;em&gt;Eingeführt&lt;/em&gt;, ab welcher Excel Version sie verfügbar sind.&lt;/p&gt;&#xA;&lt;p&gt;Die Operatoren am Anfang der Liste sind nicht alphabetisch, sondern nach Präzedenz (Vorrang, Priorität) geordnet:&#xA;-2^2 ergibt z. B. 4 und nicht etwa -4, weil das unäre Minus Vorrang vor der Potenzierung hat,&#xA;aber -(2^2) = -4 weil die Klammern die Berechnungsreihenfolge ändern.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Arbeitskompetenzen</title>
      <link>https://www.berndplumhoff.de/arbeitskompetenzen_de/</link>
      <pubDate>Sat, 27 Sep 2025 15:54:00 +0100</pubDate>
      <guid>https://www.berndplumhoff.de/arbeitskompetenzen_de/</guid>
      <description>&lt;p&gt;&lt;strong&gt;&amp;ldquo;Für das Können gibt es nur einen Beweis: das Tun.&amp;rdquo; [Marie von Ebner-Eschenbach]&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;abstract&#34;&gt;Abstract&lt;/h2&gt;&#xA;&lt;p&gt;Sie möchten Ihre:n Vorgesetzte:n von Ihrer ausgezeichneten Arbeit überzeugen? Oder Sie als&#xA;Vorgesetzte:r wollen Ihre Mitarbeiter:innen hinsichtlich ihrer Stärken in verschiedene Teams&#xA;aufteilen?&lt;/p&gt;&#xA;&lt;p&gt;Das englischsprachige Buch &amp;ldquo;Competence at Work&amp;rdquo;&#xA;von Lyle M. Spencer und Signe M. Spencer kann hier helfen:&#xA;Dieses Buch zielte in erster Linie darauf ab, Unternehmen und Personalabteilungen die&#xA;erfolgreiche Auswahl von Mitarbeitenden zu erleichtern. Für verschiedene Tätigkeitsprofile werden&#xA;notwendige Kompetenzen mit Skalenwerten vorgestellt.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Risikobewertung</title>
      <link>https://www.berndplumhoff.de/risikobewertung_de/</link>
      <pubDate>Sat, 27 Sep 2025 15:52:00 +0100</pubDate>
      <guid>https://www.berndplumhoff.de/risikobewertung_de/</guid>
      <description>&lt;p&gt;&lt;strong&gt;&amp;ldquo;Knowledge is the only instrument of production that is not subject to diminishing returns.&amp;rdquo; [John Clarke]&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;zusammenfassung&#34;&gt;Zusammenfassung&lt;/h2&gt;&#xA;&lt;p&gt;Diese Übung stammt von Nidal Sh., einem ehemaligen Kollegen von mir.&#xA;Ich denke, es ist eine äußerst hilfreiche Übung, um das Verständnis für Daten und Risiko im Allgemeinen zu schärfen.&lt;/p&gt;&#xA;&lt;h3 id=&#34;szenario&#34;&gt;Szenario:&lt;/h3&gt;&#xA;&lt;p&gt;Du bist ein Fondsmanager (Devisen, Immobilien, Aktien oder festverzinsliche Wertpapiere). Du musst zwei Präsentationen vorbereiten:&lt;/p&gt;&#xA;&lt;p&gt;a) Überzeuge deinen CEO davon, dass dein Fonds im Vergleich zu den anderen sehr risikobehaftet ist. Du brauchst mehr Kapital, Budget und andere Ressourcen, um angemessen damit umzugehen.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Mitarbeiter Aufgaben Matrix</title>
      <link>https://www.berndplumhoff.de/mitarbeiter_aufgaben_matrix_de/</link>
      <pubDate>Sat, 27 Sep 2025 15:51:00 +0100</pubDate>
      <guid>https://www.berndplumhoff.de/mitarbeiter_aufgaben_matrix_de/</guid>
      <description>&lt;h2 id=&#34;abstract&#34;&gt;Abstract&lt;/h2&gt;&#xA;&lt;p&gt;Falls Sie ein Team leiten:&lt;/p&gt;&#xA;&lt;p&gt;Priorisieren Sie jede Aufgabe und weisen Sie ihr einen Wert zu,&#xA;basierend auf dem erforderlichen Wissen,&#xA;Denken und Verantwortung, die mit ihr verbunden sind.&lt;/p&gt;&#xA;&lt;p&gt;Für jede Aufgabe muss ein/e verantwortliche/r Mitarbeiter:in definiert werden.&#xA;Geben Sie die Zahl 2 in die entsprechende Zeile und Spalte ein.&#xA;Bei normalem laufenden Geschäft legen Sie auch eine Vertretung fest.&#xA;Für Vertreter:innen wird eine 1 eingetragen.&#xA;Vertretungen können entfallen für Projektaufgaben oder Aufgaben, die selten ausgeführt werden.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Projektmanagement (PRINCE2)</title>
      <link>https://www.berndplumhoff.de/project_management_de/</link>
      <pubDate>Sat, 27 Sep 2025 15:50:00 +0100</pubDate>
      <guid>https://www.berndplumhoff.de/project_management_de/</guid>
      <description>&lt;p&gt;&lt;strong&gt;&amp;ldquo;Assumption is the mother of all f***-ups.&amp;rdquo; [Everett McGill when playing Marcus Penn]&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;abstract&#34;&gt;Abstract&lt;/h2&gt;&#xA;&lt;p&gt;Projektmanagement besteht im Organisieren und Managen von Ressourcen&#xA;damit ein Projekt im geplanten Rahmen von Kosten, Qualität, Umfang und Zeiten&#xA;fertiggestellt werden kann.&#xA;Ein Projekt ist zeitlich befristet und eine Einmalaufgabe, um ein Produkt&#xA;zu erstellen oder einen Service einzurichten, der eine gewünschte Änderung&#xA;herbeiführt oder einen zusätzlichen Nutzen darstellt.&lt;/p&gt;&#xA;&lt;p&gt;Die verantwortliche Person, die ein Projekt organisiert und steuert, wird&#xA;Projektmanager genannt. Es gibt einige Organisationen, die notwendige und&#xA;sinnvolle Projektmanagement-Fähigkeiten trainieren. Zum Beispiel für PRINCE2 (externer Link!):&lt;/p&gt;</description>
    </item>
    <item>
      <title>Buchlederpflege</title>
      <link>https://www.berndplumhoff.de/buchlederpflege_de/</link>
      <pubDate>Sat, 27 Sep 2025 15:47:00 +0100</pubDate>
      <guid>https://www.berndplumhoff.de/buchlederpflege_de/</guid>
      <description>&lt;p&gt;&lt;strong&gt;&amp;ldquo;A truly great book should be read in youth, again in maturity and once more in old age.&amp;rdquo; [Robertson Davies]&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://www.berndplumhoff.de/pic_Brockhaus_1833.jpg&#34; alt=&#34;Brockhaus 1833&#34;&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;disclaimer&#34;&gt;Disclaimer&lt;/h2&gt;&#xA;&lt;p&gt;Alle Angaben ohne Gewähr.&#xA;Bitte den Haftungsausschluss im &lt;a href=&#34;https://www.berndplumhoff.de/about/impressum_de/&#34; title=&#34;Impressum&#34;&gt;Impressum&lt;/a&gt; beachten.&lt;/p&gt;&#xA;&lt;h2 id=&#34;abstract&#34;&gt;Abstract&lt;/h2&gt;&#xA;&lt;p&gt;Buchleder ist empfindlich. Wenn es nicht gepflegt wird, trocknet es aus, wird spröde und reißt.&#xA;Alle 4 Jahre sollte es mit einem geeigneten Buchleder-Pflegemittel eingerieben werden.&#xA;Das hier vorgestellte Rezept können Sie in jeder Apotheke herstellen lassen. Es stammt von einem&#xA;Bibliothar einer Göttinger Bibliothek.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Stromtankstellen</title>
      <link>https://www.berndplumhoff.de/stromtankstellen_de/</link>
      <pubDate>Mon, 21 Feb 2022 07:09:00 +0100</pubDate>
      <guid>https://www.berndplumhoff.de/stromtankstellen_de/</guid>
      <description>&lt;h2 id=&#34;abstract&#34;&gt;Abstract&lt;/h2&gt;&#xA;&lt;p&gt;Laut Hannoverscher Allgemeine Zeitung am 21.02.2022 sei EnBW-Chef Frank Mastiaux der Ansicht,&#xA;dass 130.000 bis 150.000 Hochgeschwindigkeitsladepunkte für 15 Millionen E-Fahrzeuge reichen würden.&#xA;Die Autoindustrie fordere hingegen bis 2030 eine Million Ladeplätze.&lt;/p&gt;&#xA;&lt;p&gt;Im Oktober 2021 waren etwas über 500.000 Elektroautos in Deutschland zugelassen.&lt;/p&gt;&#xA;&lt;p&gt;Anfang November 2021 wies die Bundesnetzagentur für Deutschland 41.993 Normal- und&#xA;7.214 Schnellladepunkte aus, die öffentlich zugänglich sind.&#xA;Das entspricht etwa 1,7 Ladepunkten pro 1.000 Einwohnern.&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
