<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>excel on S Anand</title>
    <link>https://www.s-anand.net/blog/tag/excel/</link>
    <description>Recent content in excel on S Anand</description>
    <generator>Hugo -- 0.156.0</generator>
    <language>en-us</language>
    <lastBuildDate>Sat, 06 May 2023 04:53:37 +0000</lastBuildDate>
    <atom:link href="https://www.s-anand.net/blog/tag/excel/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>My first LAMBDA in Excel</title>
      <link>https://www.s-anand.net/blog/my-first-lambda-in-excel/</link>
      <pubDate>Sat, 06 May 2023 04:53:37 +0000</pubDate>
      <guid>https://www.s-anand.net/blog/my-first-lambda-in-excel/</guid>
      <description>&lt;p&gt;&lt;img alt=&#34;My first LAMBDA in Excel&#34; loading=&#34;lazy&#34; src=&#34;https://www.s-anand.net/blog/assets/image-75.webp&#34;&gt;&lt;/p&gt;
&lt;p&gt;Ever since Excel introduced the LAMBDA function, I&#39;ve been itching to use it in real life. I got my first chance today.&lt;/p&gt;
&lt;p&gt;We track the skill index of our different teams (consulting, analytics, technology, etc.) like this:&lt;/p&gt;
&lt;figure class=&#34;wp-block-table&#34;&gt;&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Team&lt;/th&gt;&lt;th class=&#34;has-text-align-right&#34; data-align=&#34;right&#34;&gt;Skill Index&lt;/th&gt;&lt;th class=&#34;has-text-align-right&#34; data-align=&#34;right&#34;&gt;Apr-23&lt;/th&gt;&lt;th class=&#34;has-text-align-right&#34; data-align=&#34;right&#34;&gt;May-23&lt;/th&gt;&lt;th class=&#34;has-text-align-right&#34; data-align=&#34;right&#34;&gt;Jun-23&lt;/th&gt;&lt;th class=&#34;has-text-align-right&#34; data-align=&#34;right&#34;&gt;Jul-23&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Consulting&lt;/td&gt;&lt;td class=&#34;has-text-align-right&#34; data-align=&#34;right&#34;&gt;0%&lt;/td&gt;&lt;td class=&#34;has-text-align-right&#34; data-align=&#34;right&#34;&gt;0%&lt;/td&gt;&lt;td class=&#34;has-text-align-right&#34; data-align=&#34;right&#34;&gt;&lt;/td&gt;&lt;td class=&#34;has-text-align-right&#34; data-align=&#34;right&#34;&gt;&lt;/td&gt;&lt;td class=&#34;has-text-align-right&#34; data-align=&#34;right&#34;&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Analytics&lt;/td&gt;&lt;td class=&#34;has-text-align-right&#34; data-align=&#34;right&#34;&gt;33%&lt;/td&gt;&lt;td class=&#34;has-text-align-right&#34; data-align=&#34;right&#34;&gt;33%&lt;/td&gt;&lt;td class=&#34;has-text-align-right&#34; data-align=&#34;right&#34;&gt;&lt;/td&gt;&lt;td class=&#34;has-text-align-right&#34; data-align=&#34;right&#34;&gt;&lt;/td&gt;&lt;td class=&#34;has-text-align-right&#34; data-align=&#34;right&#34;&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Technology&lt;/td&gt;&lt;td class=&#34;has-text-align-right&#34; data-align=&#34;right&#34;&gt;72%&lt;/td&gt;&lt;td class=&#34;has-text-align-right&#34; data-align=&#34;right&#34;&gt;72%&lt;/td&gt;&lt;td class=&#34;has-text-align-right&#34; data-align=&#34;right&#34;&gt;&lt;/td&gt;&lt;td class=&#34;has-text-align-right&#34; data-align=&#34;right&#34;&gt;&lt;/td&gt;&lt;td class=&#34;has-text-align-right&#34; data-align=&#34;right&#34;&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;etc.&lt;/td&gt;&lt;td class=&#34;has-text-align-right&#34; data-align=&#34;right&#34;&gt;&lt;/td&gt;&lt;td class=&#34;has-text-align-right&#34; data-align=&#34;right&#34;&gt;&lt;/td&gt;&lt;td class=&#34;has-text-align-right&#34; data-align=&#34;right&#34;&gt;&lt;/td&gt;&lt;td class=&#34;has-text-align-right&#34; data-align=&#34;right&#34;&gt;&lt;/td&gt;&lt;td class=&#34;has-text-align-right&#34; data-align=&#34;right&#34;&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/figure&gt;
&lt;p&gt;The &#34;Skill Index&#34; column should pick the LAST value. If Apr-23 is filled, use that. But if May-23 is also filled, use that.&lt;/p&gt;
&lt;p&gt;I needed something like a &lt;code&gt;=LASTVALUE(range)&lt;/code&gt; formula. But none exists.&lt;/p&gt;
&lt;p&gt;A good alternative is &lt;a href=&#34;https://exceljet.net/formulas/get-value-of-last-non-empty-cell&#34;&gt;this formula to get the last non-empty cell&lt;/a&gt;:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code class=&#34;language-excel&#34; data-lang=&#34;excel&#34;&gt;=LOOKUP(2,1/(range&amp;lt;&amp;gt;&amp;#34;&amp;#34;),range)
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;So, I followed the &lt;a href=&#34;https://support.microsoft.com/en-us/office/lambda-function-bd212d27-1cd1-4321-a34a-ccbf254b8b67&#34;&gt;instructions&lt;/a&gt; to create a function in the Name Manager (Ctrl+F3)&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://www.s-anand.net/blog/assets/image-75.webp&#34;&gt;&lt;/p&gt;
&lt;p&gt; ... and simply fill in &lt;code&gt;=LASTVALUE(H6:S6)&lt;/code&gt; and the like in the &#34;Skills Index&#34; cell.&lt;/p&gt;
&lt;p&gt;The LOOKUP formula is confusing. My aim is to confuse our team less. But I wonder if they&#39;ll start Google-ing for this LASTVALUE formula no one ever heard of, and get more confused 🤔.&lt;/p&gt;
</description>
    </item>
    <item>
      <title>2 inches will change my life</title>
      <link>https://www.s-anand.net/blog/2-inches-will-change-my-life/</link>
      <pubDate>Wed, 30 Dec 2020 10:45:33 +0000</pubDate>
      <guid>https://www.s-anand.net/blog/2-inches-will-change-my-life/</guid>
      <description>&lt;h3&gt;&lt;strong&gt;I walked ~11 million steps in the last 3 years, at ~10K steps daily.&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;Since 1 Jan 2018, I&#39;ve steadily increased my walking average until Aug 2018. Then my legs started aching. So I cut it down until Jan 2019. In Feb, I resumed and was fairly steady until May 2020. To complement workouts like this, products that are aimed for &lt;strong&gt;&lt;a href=&#34;https://theislandnow.com/blog-112/best-testosterone-booster/&#34; rel=&#34;noreferrer noopener&#34; target=&#34;_blank&#34;&gt;men over 50&lt;/a&gt;&lt;/strong&gt; can be used.&lt;/p&gt;
&lt;p&gt;In May, my wife refused to let me walk for more than an hour a day. It took me a few months to convince her and level up. I ended 2020 averaging a little over &lt;a href=&#34;https://www.s-anand.net/blog/walking-10000-steps-a-day/&#34;&gt;10K steps for the year&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://www.s-anand.net/blog/assets/image-png-9.webp&#34;&gt;&lt;/p&gt;
&lt;h3&gt;&lt;strong&gt;I&#39;m becoming more regular. I walked 10K/day 15% more in 2020 than in 2018.&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;2018: I walked 10K steps almost half the time.&lt;br/&gt;2019: it grew to a bit more, to 56%.&lt;br/&gt;2020: I walked 10K steps a day almost two-thirds of the time.&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://www.s-anand.net/blog/assets/image-png-10.webp&#34;&gt;&lt;/p&gt;
&lt;h3&gt;&lt;strong&gt;But in May 2020, I went for 5 days without walking even 3K steps.&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;In 2018, I started being more and more regular until my leg started aching.&lt;br/&gt;2019 was fairly consistent.&lt;br/&gt;2020 is when I applied brakes again -- for very different reasons.&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://www.s-anand.net/blog/assets/image-png-11.webp&#34;&gt;&lt;/p&gt;
&lt;p&gt;I&#39;ve never gone for 5 days without walking even 3K/day before, since 2018. At most, it was 3 days at a stretch.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;But when my wife refused to let me walk for more than an hour a day in May 2020, I went on strike! 😉&lt;/strong&gt;&lt;/p&gt;
&lt;h3&gt;&lt;strong&gt;I walk ~77 min daily. This has increased over the years.&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;In 2020, this has gone up slightly to 84 min -- but it&#39;s still under an hour-and-half. I spend most of this time on calls or listening to audio books / podcasts.&lt;br/&gt;Instead of spending it with my family.&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://www.s-anand.net/blog/assets/image-png-12.webp&#34;&gt;&lt;/p&gt;
&lt;h3&gt;&lt;strong&gt;Sometimes, I lose myself in calls and walk for almost 3 hrs and 20K steps&lt;/strong&gt;.&lt;/h3&gt;
&lt;p&gt;&lt;a href=&#34;https://www.linkedin.com/in/naveengattu/&#34;&gt;Naveen&lt;/a&gt; is usually to blame. But this happens rarely. I walked 20K steps just 6 times over the last 3 years.&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://www.s-anand.net/blog/assets/image-png-13.webp&#34;&gt;&lt;/p&gt;
&lt;p&gt;Though the longest walk here indicates over 3 hrs, I&#39;ve never walked 3 hrs in a day.&lt;/p&gt;
&lt;p&gt;On 21 Nov, my daughter borrowed my phone and went for her walk. So my phone shows our combined walks, not mine. Many of the other long walks are spread out during the day when I commute by walking in Singapore.&lt;/p&gt;
&lt;figure class=&#34;wp-block-table is-style-stripes&#34;&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class=&#34;has-text-align-right&#34; data-align=&#34;right&#34;&gt;&lt;strong&gt;Date&lt;/strong&gt;&lt;/td&gt;&lt;td class=&#34;has-text-align-right&#34; data-align=&#34;right&#34;&gt;&lt;strong&gt;hrs&lt;/strong&gt;&lt;/td&gt;&lt;td class=&#34;has-text-align-right&#34; data-align=&#34;right&#34;&gt;&lt;strong&gt;km&lt;/strong&gt;&lt;/td&gt;&lt;td class=&#34;has-text-align-right&#34; data-align=&#34;right&#34;&gt;&lt;strong&gt;#&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;strong&gt;Why?&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&#34;has-text-align-right&#34; data-align=&#34;right&#34;&gt;21-Nov-20&lt;/td&gt;&lt;td class=&#34;has-text-align-right&#34; data-align=&#34;right&#34;&gt;3.46&lt;/td&gt;&lt;td class=&#34;has-text-align-right&#34; data-align=&#34;right&#34;&gt;15.5&lt;/td&gt;&lt;td class=&#34;has-text-align-right&#34; data-align=&#34;right&#34;&gt;1&lt;/td&gt;&lt;td&gt;My daughter took my phone.&lt;br/&gt;These are her + my walking stats.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&#34;has-text-align-right&#34; data-align=&#34;right&#34;&gt;15-Nov-19&lt;/td&gt;&lt;td class=&#34;has-text-align-right&#34; data-align=&#34;right&#34;&gt;2.98&lt;/td&gt;&lt;td class=&#34;has-text-align-right&#34; data-align=&#34;right&#34;&gt;11.5&lt;/td&gt;&lt;td class=&#34;has-text-align-right&#34; data-align=&#34;right&#34;&gt;2&lt;/td&gt;&lt;td&gt;Walked to meetings in Singapore.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&#34;has-text-align-right&#34; data-align=&#34;right&#34;&gt;17-Sep-19&lt;/td&gt;&lt;td class=&#34;has-text-align-right&#34; data-align=&#34;right&#34;&gt;2.96&lt;/td&gt;&lt;td class=&#34;has-text-align-right&#34; data-align=&#34;right&#34;&gt;10.7&lt;/td&gt;&lt;td class=&#34;has-text-align-right&#34; data-align=&#34;right&#34;&gt;3&lt;/td&gt;&lt;td&gt;Walked to meetings in Singapore.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&#34;has-text-align-right&#34; data-align=&#34;right&#34;&gt;11-Jul-20&lt;/td&gt;&lt;td class=&#34;has-text-align-right&#34; data-align=&#34;right&#34;&gt;2.89&lt;/td&gt;&lt;td class=&#34;has-text-align-right&#34; data-align=&#34;right&#34;&gt;13.9&lt;/td&gt;&lt;td class=&#34;has-text-align-right&#34; data-align=&#34;right&#34;&gt;4&lt;/td&gt;&lt;td&gt;Was talking to Pratap &amp;amp; Ganes.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&#34;has-text-align-right&#34; data-align=&#34;right&#34;&gt;15-Oct-18&lt;/td&gt;&lt;td class=&#34;has-text-align-right&#34; data-align=&#34;right&#34;&gt;2.83&lt;/td&gt;&lt;td class=&#34;has-text-align-right&#34; data-align=&#34;right&#34;&gt;9.5&lt;/td&gt;&lt;td class=&#34;has-text-align-right&#34; data-align=&#34;right&#34;&gt;5&lt;/td&gt;&lt;td&gt;Walked to meetings in Singapore.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&#34;has-text-align-right&#34; data-align=&#34;right&#34;&gt;03-Sep-20&lt;/td&gt;&lt;td class=&#34;has-text-align-right&#34; data-align=&#34;right&#34;&gt;2.82&lt;/td&gt;&lt;td class=&#34;has-text-align-right&#34; data-align=&#34;right&#34;&gt;13.0&lt;/td&gt;&lt;td class=&#34;has-text-align-right&#34; data-align=&#34;right&#34;&gt;6&lt;/td&gt;&lt;td&gt;Was talking to Naveen &amp;amp; my coach.&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/figure&gt;
&lt;h3&gt;&lt;strong&gt;I want to walk faster. I walk at ~4.4 km/hr. My target is 5 km/hr.&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;Walking at over 5 km/hr speeds the heart up and improves metabolism. (Or so I&#39;ve heard.)&lt;/p&gt;
&lt;p&gt;I was steadily going towards 5 km/hr in my early days of walking. I slowed down starting Aug 2018, since my legs were aching. Then I picked up speed in end-2018.&lt;/p&gt;
&lt;p&gt;I slowed down again in Nov 2019 -- and I don&#39;t remember why.&lt;/p&gt;
&lt;p&gt;In Jun 2020, I started walking much faster -- mainly to complete 10K steps within the hour my wife gave me. That seems to have had a lasting impact. I walked faster overall in 2020.&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://www.s-anand.net/blog/assets/image-png-14.webp&#34;&gt;&lt;/p&gt;
&lt;h3&gt;&lt;strong&gt;I&#39;ve managed fast walking 66 times in 2020, a bit more than before.&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;In Jun 2020, I walked at over 5 km / hr on 20 / 30 days -- a very consistent high speed. I&#39;ve never gotten close to this any other month.&lt;br/&gt;(Clearly, there are adverse effects of being able to convince my wife.)&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://www.s-anand.net/blog/assets/image-15.webp&#34;&gt;&lt;/p&gt;
&lt;h3&gt;&lt;strong&gt;The fastest I walked was in 2018, at 6.8 km/hr. It might have led to my leg aches.&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;My top 5 walking speeds were in 2018. In 2020, I&#39;ve managed to walk faster than 6 km / hr just once.&lt;/p&gt;
&lt;figure class=&#34;wp-block-table is-style-stripes&#34;&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class=&#34;has-text-align-right&#34; data-align=&#34;right&#34;&gt;&lt;strong&gt;Fastest days&lt;/strong&gt;&lt;/td&gt;&lt;td class=&#34;has-text-align-right&#34; data-align=&#34;right&#34;&gt;&lt;strong&gt;km/hr&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&#34;has-text-align-right&#34; data-align=&#34;right&#34;&gt;07-Jun-2018&lt;/td&gt;&lt;td class=&#34;has-text-align-right&#34; data-align=&#34;right&#34;&gt;6.80&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&#34;has-text-align-right&#34; data-align=&#34;right&#34;&gt;05-Jan-2019&lt;/td&gt;&lt;td class=&#34;has-text-align-right&#34; data-align=&#34;right&#34;&gt;6.65&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&#34;has-text-align-right&#34; data-align=&#34;right&#34;&gt;16-Mar-2018&lt;/td&gt;&lt;td class=&#34;has-text-align-right&#34; data-align=&#34;right&#34;&gt;6.34&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&#34;has-text-align-right&#34; data-align=&#34;right&#34;&gt;08-Jun-2018&lt;/td&gt;&lt;td class=&#34;has-text-align-right&#34; data-align=&#34;right&#34;&gt;6.31&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&#34;has-text-align-right&#34; data-align=&#34;right&#34;&gt;06-Feb-2018&lt;/td&gt;&lt;td class=&#34;has-text-align-right&#34; data-align=&#34;right&#34;&gt;6.19&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&#34;has-text-align-right&#34; data-align=&#34;right&#34;&gt;05-Jun-2020&lt;/td&gt;&lt;td class=&#34;has-text-align-right&#34; data-align=&#34;right&#34;&gt;6.02&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/figure&gt;
&lt;p&gt;&lt;a href=&#34;https://www.omnicalculator.com/sports/stride-length#average-stride-length&#34;&gt;The normal stride/height ratio is 0.43&lt;/a&gt;. I&#39;m 5&#39;8&#34;. My stride is 2.4 ft. That&#39;s almost exactly 0.43 times my height. So all is well.&lt;/p&gt;
&lt;h3&gt;&lt;strong&gt;By increasing my stride by 2 inches, I can cover 10,000 steps in 8 min less time.&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;For every inch I lengthen my stride, I walk ~0.2km/hr faster.&lt;/p&gt;
&lt;p&gt;I&#39;ve walked with a stride as long as 32&#34;, which is 3&#34; more than my 2020 average stride. &lt;strong&gt;By walking with a 2&#34; longer stride, I can be 9.2% faster.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://www.s-anand.net/blog/assets/image-17.webp&#34;&gt;&lt;/p&gt;
&lt;h3&gt;&lt;strong&gt;So in 2021, I plan to get healthier (and scolded less) with a 2&#34; longer stride.&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;A longer stride means a faster walk. That&#39;s a good cardio exercise.&lt;br/&gt;A faster walk also means that it takes less time. So I&#39;ll get beaten up less.&lt;br/&gt;All it takes is stretching my legs 2&#34; more. Might hurt a bit. I&#39;ll report on this when I know better.&lt;/p&gt;
&lt;figure class=&#34;wp-block-table is-style-stripes&#34;&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;/td&gt;&lt;td class=&#34;has-text-align-right&#34; data-align=&#34;right&#34;&gt;&lt;strong&gt;Now&lt;/strong&gt;&lt;/td&gt;&lt;td class=&#34;has-text-align-right&#34; data-align=&#34;right&#34;&gt;&lt;strong&gt;New&lt;/strong&gt;&lt;/td&gt;&lt;td class=&#34;has-text-align-right&#34; data-align=&#34;right&#34;&gt;&lt;strong&gt;Change&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;strong&gt;Benefit&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Longer stride&lt;/td&gt;&lt;td class=&#34;has-text-align-right&#34; data-align=&#34;right&#34;&gt;29&#34;&lt;/td&gt;&lt;td class=&#34;has-text-align-right&#34; data-align=&#34;right&#34;&gt;31&#34;&lt;/td&gt;&lt;td class=&#34;has-text-align-right&#34; data-align=&#34;right&#34;&gt;2&#34;&lt;/td&gt;&lt;td&gt;Builds character?&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Faster walk (kmph)&lt;/td&gt;&lt;td class=&#34;has-text-align-right&#34; data-align=&#34;right&#34;&gt;4.5&lt;/td&gt;&lt;td class=&#34;has-text-align-right&#34; data-align=&#34;right&#34;&gt;5.0&lt;/td&gt;&lt;td class=&#34;has-text-align-right&#34; data-align=&#34;right&#34;&gt;0.5&lt;/td&gt;&lt;td&gt;Better cardio exercise&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Time to 10K steps (min)&lt;/td&gt;&lt;td class=&#34;has-text-align-right&#34; data-align=&#34;right&#34;&gt;84&lt;/td&gt;&lt;td class=&#34;has-text-align-right&#34; data-align=&#34;right&#34;&gt;77&lt;/td&gt;&lt;td class=&#34;has-text-align-right&#34; data-align=&#34;right&#34;&gt;-8&lt;/td&gt;&lt;td&gt;Less scolding from wife&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/figure&gt;
&lt;p&gt;&lt;strong&gt;PostScript&lt;/strong&gt;: This analysis was done in Excel. Download see the sheet below.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://files.s-anand.net/blog/a/walking.xlsx&#34;&gt;Walking Excel sheet&lt;/a&gt; (Download)&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;comments&#34;&gt;Comments&lt;/h2&gt;
&lt;!-- wp-comments-start --&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Somnath&lt;/strong&gt; &lt;em&gt;30 Dec 2020 11:28 am&lt;/em&gt;:
Great to see you back blogging on your personal site.
Interesting analysis on your walking with cool insights (and learning Excel tricks) from download :-)
Enjoy walking in 2021 to stay healthy and meet your resolution(s).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&#34;https://www.s-anand.net/blog/my-year-in-2022/&#34;&gt;My Year in 2022 - S Anand&lt;/a&gt;&lt;/strong&gt; &lt;em&gt;31 Dec 2024 4:31 pm&lt;/em&gt; &lt;em&gt;(pingback)&lt;/em&gt;:
[…] Walk 10,000 steps daily. […]&lt;/li&gt;
&lt;/ul&gt;
&lt;!-- wp-comments-end -
</description>
    </item>
    <item>
      <title></title>
      <link>https://www.s-anand.net/blog/always-a-pleasure-watching-richie-work-his-magic-on-excel-looking-forward-to-ric/</link>
      <pubDate>Fri, 14 Sep 2018 21:14:53 +0000</pubDate>
      <guid>https://www.s-anand.net/blog/always-a-pleasure-watching-richie-work-his-magic-on-excel-looking-forward-to-ric/</guid>
      <description>&lt;p&gt;Always a pleasure watching Richie work his magic on Excel. Looking forward to Richie showing Michael Jackson dance in Excel 😀&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://www.linkedin.com/feed/update/urn%3Ali%3Ashare%3A6446476191489720320&#34;&gt;LinkedIn&lt;/a&gt;&lt;/p&gt;
</description>
    </item>
    <item>
      <title>Geocoding in Excel</title>
      <link>https://www.s-anand.net/blog/geocoding-in-excel/</link>
      <pubDate>Wed, 08 May 2013 09:17:03 +0000</pubDate>
      <guid>https://www.s-anand.net/blog/geocoding-in-excel/</guid>
      <description>&lt;p&gt;It’s easy to convert addresses into latitudes and longitudes into addresses in Excel. Here&amp;rsquo;s the &lt;a href=&#34;https://github.com/sanand0/geocode-excel&#34;&gt;Github project&lt;/a&gt; with a downloadable &lt;a href=&#34;https://github.com/sanand0/geocode-excel/raw/master/Geocode.xlsm&#34;&gt;Excel file&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This is via Visual Basic code for a &lt;code&gt;GoogleGeocode&lt;/code&gt; function that &lt;a href=&#34;https://developers.google.com/maps/documentation/geocoding/&#34;&gt;geocodes&lt;/a&gt; addresses.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-javascript&#34; data-lang=&#34;javascript&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;Function&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;GoogleGeocode&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;address&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;As&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;String&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;As&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;String&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nx&#34;&gt;Dim&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;xDoc&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;As&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;New&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;MSXML2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;DOMDocument&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nx&#34;&gt;xDoc&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;kr&#34;&gt;async&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;False&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nx&#34;&gt;xDoc&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;Load&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;http://maps.googleapis.com/maps/api/geocode/&amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;_&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;s2&#34;&gt;&amp;#34;xml?address=&amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;address&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&amp;amp;sensor=false&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nx&#34;&gt;If&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;xDoc&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;parseError&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;ErrorCode&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;&amp;gt;&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;Then&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nx&#34;&gt;GoogleGeocode&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;xDoc&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;parseError&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;reason&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nx&#34;&gt;Else&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nx&#34;&gt;xDoc&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;setProperty&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;SelectionLanguage&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;XPath&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nx&#34;&gt;lat&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;xDoc&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;SelectSingleNode&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;//lat&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;).&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;Text&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nx&#34;&gt;lng&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;xDoc&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;SelectSingleNode&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;//lng&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;).&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;Text&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nx&#34;&gt;GoogleGeocode&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;lat&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;amp;&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;,&amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;amp;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;lng&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nx&#34;&gt;End&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;If&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;End&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;Function&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;hr&gt;
&lt;h2 id=&#34;comments&#34;&gt;Comments&lt;/h2&gt;
&lt;!-- wp-comments-start --&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Ryan&lt;/strong&gt; &lt;em&gt;8 Jun 2015 9:28 pm&lt;/em&gt;:
I find this isn&amp;rsquo;t working and says, Compile Error; User defined type not defined
xDoc As New MSXML2.DOMDocument what do I change to fix it?
Thank you&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Richie Lionell&lt;/strong&gt; &lt;em&gt;27 Jul 2016 6:40 am&lt;/em&gt;:
Ryan, Inside the VBE, Go to Tools -&amp;gt; References, then Select Microsoft XML, v6.0 . If that doesn&amp;rsquo;t work unselect that and select Microsoft XML, v3.0&lt;/li&gt;
&lt;/ul&gt;
&lt;!-- wp-comments-end --&gt;
</description>
    </item>
    <item>
      <title>The three Rs</title>
      <link>https://www.s-anand.net/blog/the-three-rs/</link>
      <pubDate>Mon, 23 Jan 2012 18:13:08 +0000</pubDate>
      <guid>https://www.s-anand.net/blog/the-three-rs/</guid>
      <description>&lt;p&gt;Reading, wRiting and aRithmetic are the 3 &amp;lsquo;R&amp;rsquo;s that are taught at school. I was thinking about their relevance today.&lt;/p&gt;
&lt;p&gt;Reading continues to be relevant. The volume of information available today is more than before. So you need to read faster AND smarter. (If there was one good thing that came out of my IIM coaching classes, it was the ability to read fast, and making it subconscious.)&lt;/p&gt;
&lt;p&gt;But I wouldn&amp;rsquo;t say the same of writing. In the last 10 years, I have typed several hundred more pages than I&amp;rsquo;ve written. So have all my friends.&lt;/p&gt;
&lt;p&gt;Yesterday, I was at a bank with a relationship manager as he was taking notes in paper and pen. I do the same on occassion. I looked at his notes later. I could not understand a single word. &amp;ldquo;Don&amp;rsquo;t worry, sir, I can read it. I&amp;rsquo;ll type it out and mail you,&amp;rdquo; he said. And he did.&lt;/p&gt;
&lt;p&gt;Writing seems to have become a device for personal memory, not communication. He&amp;rsquo;s faster at writing than typing, perhaps. Or note taking is more convenient on paper. But for communication, he still prefers a typed format. So do I, and most other people.&lt;/p&gt;
&lt;p&gt;Perhaps writing will fade. Perhaps not. I don&amp;rsquo;t know. But what I do know is that typing has become more important than writing. Yet, writing is taught more at school than typing.&lt;/p&gt;
&lt;p&gt;(A broader aspect of writing, though, is expressing oneself. That will remain important, of course.)&lt;/p&gt;
&lt;p&gt;The third R is aRithmetic. When I was 12, I could multiply four-digit numbers in my head reasonably well. I could recite 50 digits of Pi. I could do long division. Today, I can&amp;rsquo;t. Nor can my friends. Nor have we needed to. A good feel for the numbers has helped, but not the actual mechanics of the calculations.&lt;/p&gt;
&lt;p&gt;We had an undergraduate course in statistics that taught us how to solve a linear regression problem. That skill went completely unused. I&amp;rsquo;ve never since used regression without a computer. We had a graduate course in statistics that taught us how to INTERPRET the results of a linear regression. That was worth it&amp;rsquo;s weight in gold.&lt;/p&gt;
&lt;p&gt;This is not a critique of the three Rs. Rather, an attempt to re-interpret them. It&amp;rsquo;s about comprehension, expression and computation. Two decades ago, it was reading, writing and arithmetic. Today, it&amp;rsquo;s reading, typing and computing.&lt;/p&gt;
&lt;p&gt;Computers will grow more powerful. It may be worth planning for it. Teaching the ability to use them can go a long way. A tool like Excel for general purpose computing gives incredible power in the hands of people. It&amp;rsquo;s worth training children for that.&lt;/p&gt;
&lt;p&gt;If I oversimplified, I&amp;rsquo;d say children must learn typing and Excel.&lt;/p&gt;
&lt;p&gt;Over the next few years, this is something I plan to work on. Making sure schools and parents do this. Any suggestions or leads you may have are welcome!&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;comments&#34;&gt;Comments&lt;/h2&gt;
&lt;!-- wp-comments-start --&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&#34;http://arunrocks.com/&#34;&gt;Arun&lt;/a&gt;&lt;/strong&gt; &lt;em&gt;7 Feb 2012 12:05 pm&lt;/em&gt;:
I find the 3 Rs to be redundant but still useful for cognition. I find any computer input device to be limiting because I cannot doodle or sketch if I need to while mapping an idea. Paper offers freedom to graphically detail a problem in ways that cannot be replicated easily or effortlessly on a computer (or a tablet for that matter). Somehow whiteboards the best way to communicate to a team than Powerpoint.
Agree about aRithmetic. We almost never find ourselves without a computing device . But should we be completely reliant on them? What if you are marooned in an island? :D
Today, I would simply add a fourth R - &amp;lsquo;Recursion&amp;rsquo;. Implying the art of programming, the lack of which has become a serious handicap.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Somnath&lt;/strong&gt; &lt;em&gt;23 Jan 2012 7:04 pm&lt;/em&gt;:
You don&amp;rsquo;t need to teach typing I guess - kids these days have computer at home if not at private schools. My 1.5 year old has seen me type and has taken to imitate that. Over time they will learn typing out of necessity. Excel I agree you need to teach as it might not be seen as necessary - not Word or Powerpoint though as they will pick it up out of necessity due to school work.
Having said that I still carry a simple ball-point pen and a paper whenever I get in a meeting or on my desk to take notes. No technology can get in that as I see it as obstructive.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&#34;http://www.verge2.com&#34;&gt;Ken Jones&lt;/a&gt;&lt;/strong&gt; &lt;em&gt;22 Feb 2012 6:59 pm&lt;/em&gt;:
Anand, I stumbled across your site 4 years ago and have always loved it.
I agree that Excel is a wonderful tool to teach. It has the beauty of being as simple or and fantastically intricate and complicated tool you can make it. And these days you can link it to all the xml you want.
I have always thought that logic - especially as it applies to programming - is very useful. However, I feel that there need to be more visual tools to assist in its education. Kids are able to follow nested loops and if/then stateemnts if they have an easy way to navigate the logic initially. I became very interested in the way Montessori teaches mathematics at an early age. But I have yet to see effective tools like that for logic education at a young age ( 4-10)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Judy H&lt;/strong&gt; &lt;em&gt;23 Feb 2012 6:55 am&lt;/em&gt;:
I have noticed for a long time that my handwriting has gone to hell ever since I&amp;rsquo;ve had a computer at my desk. I had nice handwriting, and now it looks awful and feels cumbersome as well. I have heard that school districts have stopped teaching cursive writing to children. Imagine! Not that I disagree, how much really free hand writing does anyone do anymore? Maybe this will free up time to teach them things they really need, as some noted already: logic, analytical thinking, problem solving, and common sense. My background is in math and statistics. I spent many years working with people in other sciences who had a tough time working through a problem, or setting up an experiment, in a logical and thoughtful way &amp;ndash; planning and executing, learning from the result, and setting up the next iteration. These types of skills, along with communications skills (getting your point across as well as listening), are critical for success in life. I don&amp;rsquo;t think Excel has entirely taken away the need for learning arithmetic, but I would like to see kids get an answer to a problem and know whether they have gotten the right answer (so some time of quick estimation method is needed). I emphasized it with my kids &amp;ndash; you can easily use a calculator, but how do you know you got the right answer? Does the answer you got make sense? To round out the basic public school education, I would include lots of other topics, but mostly to expose kids to what is out there &amp;ndash; literature, geography, philosophy, anthropology &amp;ndash; to make them more curious to explore on their own. Every thing is at your fingertips these days, I love it! Why are we still forcing kids to read books they hate? I would rather let them gravitate toward what thrills them &amp;ndash; Lord of the Rings instead of Huck Finn, or Tolstoy instead of Shakespeare, whatever turns them on.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Rajesh Bhura&lt;/strong&gt; &lt;em&gt;14 Mar 2012 9:35 am&lt;/em&gt;:
Anand, what do you think about the utility of tools like abacus for teaching aRithmetic to children? Spandana who is 9 yrs old has been going to this UCMAS class for 3-4 yrs and i am still to find true value in this. i know i am deviating from the main discussion but wanted to know your and the views of others pls.
&lt;a href=&#34;http://www.ucmasindia.com/mental&#34;&gt;http://www.ucmasindia.com/mental&lt;/a&gt;_arithmetic/aboutusnew2.html&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&#34;http://tildekarthik.blogspot.com&#34;&gt;Karthik A&lt;/a&gt;&lt;/strong&gt; &lt;em&gt;12 Feb 2012 3:37 am&lt;/em&gt;:
I feel that logic (aRgument) helps increase flow for children and sometimes, like sleeping a problem over, helps in generating leaps of logic (intuition or conceptualization). We need to teach these in place of writing.
Long back I remember my grandfather telling me that they used to have logic as a subject!&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ravi&lt;/strong&gt; &lt;em&gt;10 Apr 2012 10:40 pm&lt;/em&gt;:
&lt;a href=&#34;http://www.themodernword.com/eco/eco&#34;&gt;http://www.themodernword.com/eco/eco&lt;/a&gt;_future_of_book.html
This is from Umberto Eco, one of the foremost and important intellectual of our times. This is his area &amp;ldquo;Semiotics&amp;rdquo; - the science of signs.
Somehow I remembered this discussion and thought it would make sense to post this here.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ravi&lt;/strong&gt; &lt;em&gt;20 Feb 2012 9:44 pm&lt;/em&gt;:
The three R&amp;rsquo;s are going to be relevant as long as civilization exists - their forms and formats will undergo constant shifts and changes. All these three R&amp;rsquo;s are at some level only abstractions. If you think about it, reading was always a tool of internalization of concepts and communicating and creating within, writing was for externalization and communication without, and arithmetic was just a name given to the abstract name for the reliazation of the natural phenomena through a number line. By writing, if you meant translating your thoughts on a paper using a pen/pencil - yes that is receding; but the act of translating your thoughts onto something has not changed. In fact, if a medeival saint who perhaps wrote on &amp;ldquo;tala&amp;rdquo; leaves using a stylus magically appeared in 1950&amp;rsquo;s, he would be flabbergasted by the meaning &amp;ldquo;writing&amp;rdquo; had acquired; same surprise that our grandfathers would express watching our kids type on computer screens and tablets. Arithmetic, however if narrowed down to doing math in the mind has definitely as an academic discipline has taken a violent beating at the hands of xcel, the ubiquitious calculator; but the concept of numbers has not. Neither will till the civilization exists.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;deepan&lt;/strong&gt; &lt;em&gt;24 Jan 2012 8:12 am&lt;/em&gt;:
Programming is still a subject that scares many. Misguided Focus on syntax rather than on logic and problem solving ,makes the learner diffident .Excel offers an easy way to dabble ,solve problems and experience sheer joy of working smart.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Shankar V&lt;/strong&gt; &lt;em&gt;24 Jan 2012 9:21 am&lt;/em&gt;:
I agree with Somnath. Note taking is still paper and pen in my case. I tried using the evernotes, the onenotes and the sticky notes. I simply lose my way there. With a notebook, it is all chronologically sequenced and I know what I am looking for the moment I open the pages.
But writing skills other than personal note taking is almost dead. And we still have schools teaching &amp;ldquo;cursive writing&amp;rdquo; skills to kids. :)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Rajesh B&lt;/strong&gt; &lt;em&gt;26 Jan 2012 6:04 am&lt;/em&gt;:
Good points. A redefinition of the 3 R&amp;rsquo;s is definitely called for. But, I would still add typing and excel as auxiliary skill sets, and spend lots of time on the basics. Excel, typing are more &amp;ldquo;skill sets&amp;rdquo; to have. At very young ages, it is very important to build the mind to be able to process stuff, rather than be able to &amp;ldquo;know&amp;rdquo; stuff. Kind of like the difference between academic education and vocational education. No offence to excel, but it clearly falls under &amp;ldquo;skills&amp;rdquo; category. As in, if we can make our kids more receptive and intelligent, they can figure out excel without much difficulty.
Writing (in the communication aspect, not the putting pen to paper aspect), Reading and arithmetic all play a role in shaping the mind. Comprehension, articulation and analysis (not necessarily just computation) are important bits in piecing together a keen mind. I would look at all of schooling as the phase where the mind is made better. And not really worry about pure &amp;ldquo;skill sets&amp;rdquo;
In computer terminology, till age 16 or 18, work on the RAM. The apps can come later. If your RAM is cranked up really well, loading apps is very easy. And the hard-disk generally is sound enough for the basics as well.
Most of the students that I interact with (all in the 21-30 age group) have good apps, hajaar heavy hard-drive, but are running on a 128 MB RAM.
I would want entire schooling to focus on improving processing ability and stamina. Everything else can come later.
We can (and probably should) de-emphasize writing, and supplement it with typing. We are essentially working on articulation. As far as arithmetic goes, we should de-emphasize computation and increase the role of context and analysis. Include logical reasoning type questions in the pedagogy in order to combine analysis and comprehension skills. We should definitely expand the role of reading.
But I am a little old-fashioned so would want to keep original frameworks. My biggest fear is that we introduce an app in the hope that it will improve processing power and somewhere down the line it becomes a task in itself and loses all value.
This is what has happened to our ability of multiplying two 2-digit numbers mentally. Originally, it was a way to teach kids to have an intuition about size. Now, it is a cr*p vedic maths module with no basis. Pardon my language, Anand.
I do not know if I have communicated clearly here. When you (Anand) were asked to do 47 * 74, it might have been to tell you that it is somewhere close to 50 * 70. And to help you to process and remember at the same time. Now, it is a template and there is no-one who discusses how this is close to 50 * 70.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&#34;http://www.amlan.in&#34;&gt;Amlan&lt;/a&gt;&lt;/strong&gt; &lt;em&gt;17 Feb 2012 3:12 pm&lt;/em&gt;:
Products like the Livescribe smartpen will merge the worlds of writing and computing.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ravi&lt;/strong&gt; &lt;em&gt;10 Apr 2012 10:44 pm&lt;/em&gt;:
I hasten to add that this was a lecture in a 1994 symposium when Steve Jobs was still disillusioned about Apple and was making movies and not dreaming his &amp;ldquo;i&amp;rdquo; devices :-) yet the discussion is useful and the cross-references to historical and intellectual motifs are invaluable.&lt;/li&gt;
&lt;/ul&gt;
&lt;!-- wp-comments-end --&gt;
</description>
    </item>
    <item>
      <title>Formatting tables</title>
      <link>https://www.s-anand.net/blog/formatting-tables/</link>
      <pubDate>Fri, 10 Jun 2011 12:53:08 +0000</pubDate>
      <guid>https://www.s-anand.net/blog/formatting-tables/</guid>
      <description>&lt;p&gt;Formatting tables in Excel is a fairly common task, but there are a number of ways to improve on the way it&amp;rsquo;s done most of the time.&lt;/p&gt;
&lt;p&gt;Here are a few tips. Fairly basic stuff, but hopefully useful.&lt;/p&gt;
&lt;div class=&#34;video-embed&#34;&gt;&lt;iframe src=&#34;https://www.youtube.com/embed/kHvFC5uMuf8&#34; title=&#34;YouTube video&#34; loading=&#34;lazy&#34; allow=&#34;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture&#34; allowfullscreen&gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;hr&gt;
&lt;h2 id=&#34;comments&#34;&gt;Comments&lt;/h2&gt;
&lt;!-- wp-comments-start --&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Neela&lt;/strong&gt; &lt;em&gt;18 Aug 2011 6:16 pm&lt;/em&gt;:
Thanks a lot for the tips! I think there might be a small error in the video posted above, since the last part about conditional formatting is repeated twice. Very useful nonetheless!&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&#34;http://www.jigsawacedemy.in&#34;&gt;Gaurav Vohra&lt;/a&gt;&lt;/strong&gt; &lt;em&gt;27 Sep 2011 10:55 am&lt;/em&gt;:
Hey (stud) Anand , stumbled upon your blog recently. It is a great read.
Lou Reed said &amp;ldquo;between thought and expression, lies a lifetime&amp;rdquo;. I think you bridge that gap really well.
You can add me to your list of avid followers now. :)
I would especially recommend your blog to anyone who wants to get into the field of business analytics (all my students :) )&lt;/li&gt;
&lt;/ul&gt;
&lt;!-- wp-comments-end --&gt;
</description>
    </item>
    <item>
      <title>Moderating marks</title>
      <link>https://www.s-anand.net/blog/moderating-marks/</link>
      <pubDate>Sun, 20 Mar 2011 10:23:07 +0000</pubDate>
      <guid>https://www.s-anand.net/blog/moderating-marks/</guid>
      <description>&lt;p&gt;Sometimes, school marks are moderated. That is, the actual marks are adjusted to better reflect students&#39; performances. For example, if an exam is very easy compared to another, you may want to scale down the marks on the easy exam to make it comparable. &lt;/p&gt; &lt;p&gt;I was testing out the impact of moderation. In this video, I&#39;ll try and walk through the impact, visually, of using a simple scaling formula.  &lt;p&gt;BTW, this set of videos is intended for a very specific audience. &lt;a href=&#34;http://cm.bell-labs.com/cm/cs/who/dmr/odd.html&#34;&gt;You are not expected to understand this&lt;/a&gt;. &lt;p&gt;&lt;object width=&#34;425&#34; height=&#34;344&#34;&gt;&lt;param name=&#34;movie&#34; value=&#34;http://www.youtube.com/v/ifZW8au8NYU?hl=en&amp;amp;fs=1&#34;&gt;&lt;/param&gt;&lt;param name=&#34;allowFullScreen&#34; value=&#34;true&#34;&gt;&lt;/param&gt;&lt;param name=&#34;allowscriptaccess&#34; value=&#34;always&#34;&gt;&lt;/param&gt;&lt;embed src=&#34;http://www.youtube.com/v/ifZW8au8NYU?hl=en&amp;amp;fs=1&#34; type=&#34;application/x-shockwave-flash&#34; allowscriptaccess=&#34;always&#34; allowfullscreen=&#34;true&#34; width=&#34;425&#34; height=&#34;344&#34;&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/p&gt; &lt;p&gt;&lt;object width=&#34;425&#34; height=&#34;344&#34;&gt;&lt;param name=&#34;movie&#34; value=&#34;http://www.youtube.com/v/AP6-Jhes1NU?hl=en&amp;amp;fs=1&#34;&gt;&lt;/param&gt;&lt;param name=&#34;allowFullScreen&#34; value=&#34;true&#34;&gt;&lt;/param&gt;&lt;param name=&#34;allowscriptaccess&#34; value=&#34;always&#34;&gt;&lt;/param&gt;&lt;embed src=&#34;http://www.youtube.com/v/AP6-Jhes1NU?hl=en&amp;amp;fs=1&#34; type=&#34;application/x-shockwave-flash&#34; allowscriptaccess=&#34;always&#34; allowfullscreen=&#34;true&#34; width=&#34;425&#34; height=&#34;344&#34;&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/p&gt; &lt;p&gt;&lt;object width=&#34;425&#34; height=&#34;344&#34;&gt;&lt;param name=&#34;movie&#34; value=&#34;http://www.youtube.com/v/wjZaN7W8HME?hl=en&amp;amp;fs=1&#34;&gt;&lt;/param&gt;&lt;param name=&#34;allowFullScreen&#34; value=&#34;true&#34;&gt;&lt;/param&gt;&lt;param name=&#34;allowscriptaccess&#34; value=&#34;always&#34;&gt;&lt;/param&gt;&lt;embed src=&#34;http://www.youtube.com/v/wjZaN7W8HME?hl=en&amp;amp;fs=1&#34; type=&#34;application/x-shockwave-flash&#34; allowscriptaccess=&#34;always&#34; allowfullscreen=&#34;true&#34; width=&#34;425&#34; height=&#34;344&#34;&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Rough transcript&lt;/strong&gt;  &lt;p&gt;First, let me show you how to generate marks randomly. Let&#39;s say we want marks with a mean of 50 and a standard deviation of 20. That means that two-thirds of the marks will be between 50 plus/minus 20. I use the NORMINV formula in Excel to generate the numbers. The formula =NORMINV(RAND(), Mean, SD) will generate a random mark that fits this distribution. Let&#39;s say we create 225 students&#39; marks in this way.  &lt;p&gt;Now, I&#39;ll plot it as a scatterplot. We want the X-axis to range from 0 to 225. We want the Y-axis to range from 0 to 100. We can remove the title, axes and the gridlines. Now, we can shrink the graph and position it in a single column. It&#39;s a good idea to change the marker style to something smaller as well. Now, that&#39;s a quick visual representation of students&#39; marks in one exam.&lt;br&gt;&lt;/p&gt; &lt;p&gt;Let&#39;s say our exam has a mean of 70 and a standard deviation of 10. The students have done fairly well here. If I want to compare the scores in this exam with another exam with a mean of 50 and standard deviation of 20, it&#39;s possible to scale that in a very simple way. &lt;/p&gt; &lt;p&gt;We reduce the mean from the marks. We divide by the standard deviation. Then multiply by the new standard deviation. And add back the new mean.  &lt;p&gt;Let me plot this. I&#39;ll copy the original plot, position it, and change the data.  &lt;p&gt;Now, you can see that the mean has gone down a bit -- it&#39;s down from 70 to 50, and the spread has gone up as well -- from 10 to 20.&lt;br&gt;&lt;/p&gt; &lt;p&gt;Let&#39;s try and understand what this means. &lt;/p&gt; &lt;p&gt;If the first column has the marks in a school internal exam, and the second in a public exam, we can scale the internal scores to be in line with the public exam scores for them to be comparable.  &lt;p&gt;The internal exam has a higher average, which means that it was easier, and a lower spread, which means that most of the students answered similarly. When scaling it to the public exam, students who performed well in the interal exam would continue to perform well after scaling. But students with an average performance would have their scores pulled down.  &lt;p&gt;This is because the internal exam is an easy one, and in order to make it comparable, we&#39;re stretching their marks to the same range. As a result, the good performers would continue getting a top score. But poor performers who&#39;ve gotten a better score than they would have in a public exam lose out.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;comments&#34;&gt;Comments&lt;/h2&gt;
&lt;!-- wp-comments-start --&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Vinu&lt;/strong&gt; &lt;em&gt;13 Apr 2011 8:17 pm&lt;/em&gt;:
Nice one&amp;hellip; your analysis does assume that the performance of a group of students in an easy exam and the performance of the same group of students in a tough exam will both have similar distributions&amp;hellip;
I am sure you will recall how the loss of resolution in marks (marks were awarded in increments of no less than 1/2) and the clustering of results at the top end ( remember our 10th &amp;amp; 12th public results in &amp;lsquo;90 &amp;amp; &amp;lsquo;92 respy) led to very skewed distribution?
In tough exams, I would expect that the skew would shift downward with a lot more positive Kurtosis&amp;hellip; so besides the normalization of the exam scores, it would probably be necessary to perform some additional transformations to really compare 2 exams of different &amp;rsquo;toughnesses&amp;rsquo;.
All this, without even considering the &amp;lsquo;performance factor&amp;rsquo; from the student introducing its own variations&amp;hellip;
After writing all this, I do realize that my points are perhaps academically motivated - but if all we want to do is to help teachers pick out the students who are more likely to need &amp;rsquo;extra tuition assistance&amp;rsquo; to make a better showing in a tough public exam, then the basic normalization is sufficient.
Of course, most good teachers would say not need statistics to tell them that - they know their students well enough to understand who needs help and who is on autopilot to ace the exams&amp;hellip; (ring any bells ? ;) )&lt;/li&gt;
&lt;/ul&gt;
&lt;!-- wp-comments-end --&gt;
</description>
    </item>
    <item>
      <title>Make backgrounds transparent</title>
      <link>https://www.s-anand.net/blog/make-backgrounds-transparent/</link>
      <pubDate>Wed, 28 Apr 2010 06:57:37 +0000</pubDate>
      <guid>https://www.s-anand.net/blog/make-backgrounds-transparent/</guid>
      <description>&lt;p&gt;This is the simplest way that I’ve found to make the background colour of an image transparent.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href=&#34;http://portableapps.com/apps/graphics_pictures/gimp_portable&#34;&gt;Download GIMP&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Open your image. I’ll pick this one:&lt;br&gt;
&lt;a href=&#34;https://www.s-anand.net/blog/assets/killme1.webp&#34;&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://www.s-anand.net/blog/assets/killme1.webp&#34;&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Optional: Select Image – Mode – RGB if it’s not RGB.&lt;/li&gt;
&lt;li&gt;Select Colors – Colors to Alpha…&lt;br&gt;
&lt;a href=&#34;https://www.s-anand.net/blog/assets/killme2.webp&#34;&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://www.s-anand.net/blog/assets/killme2.webp&#34;&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Click on the white button next to “From” and select the eye-dropper.&lt;a href=&#34;https://www.s-anand.net/blog/assets/killme3.webp&#34;&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://www.s-anand.net/blog/assets/killme3.webp&#34;&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Pick the green colour on the image, and click OK&lt;br&gt;
&lt;a href=&#34;https://www.s-anand.net/blog/assets/killme4.webp&#34;&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://www.s-anand.net/blog/assets/killme4.webp&#34;&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The anti-aliasing is preserved as well.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;comments&#34;&gt;Comments&lt;/h2&gt;
&lt;!-- wp-comments-start --&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Vinu&lt;/strong&gt; &lt;em&gt;28 Apr 2010 11:21 pm&lt;/em&gt;:
There is a tool in MS Office products (Word, Excel, PowerPoint) to set the transparent color as well, assuming of course that you plan to embed the image in a document&amp;hellip;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&#34;http://www.s-anand.net/&#34;&gt;S Anand&lt;/a&gt;&lt;/strong&gt; &lt;em&gt;29 Apr 2010 7:19 am&lt;/em&gt;:
Need to use the image in web pages, mostly. Would this MS Office tool still work?&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&#34;http://www.s-anand.net/&#34;&gt;S Anand&lt;/a&gt;&lt;/strong&gt; &lt;em&gt;29 Apr 2010 7:20 am&lt;/em&gt;:
True, Ravi. I need to automate this task, though. Tried ImageMagick at first, but gave up after a while.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Vinu&lt;/strong&gt; &lt;em&gt;30 Apr 2010 5:51 pm&lt;/em&gt;:
Good question. If you use a drag and drop, WYSIWYG web page editor, then perhaps it will translate. I tested it between Powerpoint &amp;amp; Word and it worked.
Here&amp;rsquo;s the location of the control on PowerPoint 2007: on the Picture Tools /Format ribbon&amp;gt; Recolor (in the Adjust group, first from the left) drop down to &amp;ldquo;Set Transparent Color&amp;rsquo;.
Keyboard accelerator = Alt + J P E S.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&#34;http://www.raviatluri.in&#34;&gt;Atluri&lt;/a&gt;&lt;/strong&gt; &lt;em&gt;28 Apr 2010 3:59 pm&lt;/em&gt;:
This works well only for text and images with strong contrast against their background
text as an image is outdated ;)
and for images i would use blend-&amp;gt;merge-&amp;gt;eraser for edges!&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&#34;http://bit.ly/vipulrawal&#34;&gt;Vipul&lt;/a&gt;&lt;/strong&gt; &lt;em&gt;13 May 2010 5:31 am&lt;/em&gt;:
Remove background option in MS-PowerPoint 2010 works even better. In love with that feature. :)&lt;/li&gt;
&lt;/ul&gt;
&lt;!-- wp-comments-end --&gt;
</description>
    </item>
    <item>
      <title>Motion charts in Excel</title>
      <link>https://www.s-anand.net/blog/motion-charts-in-excel/</link>
      <pubDate>Thu, 12 Mar 2009 13:56:26 +0000</pubDate>
      <guid>https://www.s-anand.net/blog/motion-charts-in-excel/</guid>
      <description>&lt;p&gt;Creating &lt;a href=&#34;http://www.google.com/search?q=motion+chart&#34;&gt;motion charts&lt;/a&gt; in Excel is a simple four-step process.&lt;/p&gt; &lt;ol&gt; &lt;li&gt;Get the data in a tabular format with the columns [date, item, x, y, size]  &lt;/li&gt;&lt;li&gt;Make a “today” cell, and create a lookup table for “today”  &lt;/li&gt;&lt;li&gt;Make a bubble chart with that lookup table  &lt;/li&gt;&lt;li&gt;Add a scroll bar and a play button linked to the “today” cell&lt;/li&gt;&lt;/ol&gt; &lt;p&gt;For the impatient, here’s a &lt;a href=&#34;https://files.s-anand.net/blog/a/motion-chart.xls&#34;&gt;motion chart spreadsheet&lt;/a&gt; that you can tailor to your needs.&lt;br&gt;For the patient and the puzzled, here’s a quick introduction to bubble and motion charts.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;What is a bubble chart?&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;A bubble chart is a way of capturing 3 dimensions. For example, the chart below could be the birth, literacy rate and population of countries (X-axis, Y-axis and size). Or the growth, margin and market cap of companies. &lt;/p&gt; &lt;p&gt;&lt;a title=&#34;Bubble chart&#34; href=&#34;https://www.s-anand.net/blog/assets/flickr-bubble-chart_3348447675_o-png.webp&#34;&gt;&lt;img height=&#34;300&#34; alt=&#34;Example of a bubble chart&#34; src=&#34;https://www.s-anand.net/blog/assets/flickr-bubble-chart_3348447675_o-png.webp&#34; width=&#34;450&#34;&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;It lets you compare three dimensions at a glance. The size dimension is a different from the X and Y axes, though. It’s not easy to compare differences in size. And the eye tends to focus on the big objects. So usually, size is used highlight important things, and the X and Y axes used to measure the performance of these things.&lt;/p&gt; &lt;p&gt;If I were to summarise bubble charts in a sentence, it would be: &lt;em&gt;bubble charts show the performance of important things (in two dimensions)&lt;/em&gt;. (In contrast, &lt;a href=&#34;https://www.s-anand.net/blog/visualisation-centralising-improves-productivity/&#34;&gt;Variwide charts&lt;/a&gt; show the same on one dimension.)&lt;/p&gt; &lt;p&gt;Say you’re a services firm. You want to track the productivity of your most &lt;em&gt;expensive&lt;/em&gt; groups (“the important things”). Productivity is measured by 2 parameters: &lt;em&gt;utilisation&lt;/em&gt; and &lt;em&gt;margin&lt;/em&gt;. The bubble chart would then have the &lt;em&gt;expense&lt;/em&gt; of each group as the size, and its &lt;em&gt;utilisation&lt;/em&gt; and &lt;em&gt;contribution&lt;/em&gt; as the X and Y axes.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;What is a motion chart?&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;Motion charts are animated bubble charts. &lt;em&gt;They &lt;font color=&#34;#ff0000&#34;&gt;track &lt;/font&gt;the performance of important things over time (in two dimensions)&lt;/em&gt;. This is chart with 4 dimensions. But not all data with 4 dimensions can be plotted as a motion chart. One dimension has to be time, and another has to be linked to the importance of the item.&lt;/p&gt;&lt;object classid=&#34;clsid:D27CDB6E-AE6D-11cf-96B8-444553540000&#34; codebase=&#34;http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0&#34; width=&#34;451&#34; height=&#34;334&#34; id=&#34;motion-chart.swf&#34;&gt;  &lt;param name=&#34;movie&#34; value=&#34;/a/motion-chart.swf&#34;&gt;  &lt;param name=&#34;quality&#34; value=&#34;high&#34;&gt;  &lt;param name=&#34;bgcolor&#34; value=&#34;#ffffff&#34;&gt;  &lt;embed src=&#34;https://www.s-anand.net/blog/a/motion-chart.swf&#34; quality=&#34;high&#34; bgcolor=&#34;#ffffff&#34; width=&#34;451&#34; height=&#34;334&#34; name=&#34;motion-chart.swf&#34; type=&#34;application/x-shockwave-flash&#34; pluginspage=&#34;http://www.macromedia.com/go/getflashplayer&#34;&gt;&lt;/embed&gt;  &lt;/object&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Motion charts were pioneered by &lt;a href=&#34;http://en.wikipedia.org/wiki/Hans_Rosling&#34;&gt;Hans Rosling&lt;/a&gt; and his &lt;a href=&#34;http://www.ted.com/index.php/talks/hans_rosling_shows_the_best_stats_you_ve_ever_seen.html&#34;&gt;TED Talk&lt;/a&gt; shows you the true power of motion charts.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;How do I create these charts?&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;Use the &lt;a href=&#34;http://www.google.com/ig/directory?url=www.google.com/ig/modules/motionchart.xml&#34;&gt;Motion Chart Gadget&lt;/a&gt; to display any of your data on a web page. Or use &lt;a href=&#34;http://docs.google.com/&#34;&gt;Google Spreadsheets&lt;/a&gt; if you need to see the chart on a spreadsheet: motion charts are built in. &lt;/p&gt; &lt;p&gt;If you or your viewer don’t have access to these, and you want to use Excel, here’s how.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;1. Get the data in a tabular format&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;Get the data in the format below. You need the X, Y and size for &lt;em&gt;each thing&lt;/em&gt;, for &lt;em&gt;each date&lt;/em&gt;.&lt;/p&gt; &lt;table class=&#34;lines numbers&#34;&gt; &lt;tbody&gt; &lt;tr&gt; &lt;td&gt;&lt;strong&gt;Date&lt;/strong&gt;&lt;/td&gt; &lt;td&gt;&lt;strong&gt;Thing&lt;/strong&gt;&lt;/td&gt; &lt;td&gt;&lt;strong&gt;X&lt;/strong&gt;&lt;/td&gt; &lt;td&gt;&lt;strong&gt;Y&lt;/strong&gt;&lt;/td&gt; &lt;td&gt;&lt;strong&gt;Size&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td&gt;08/02/2009&lt;/td&gt; &lt;td&gt;A&lt;/td&gt; &lt;td&gt;64%&lt;/td&gt; &lt;td&gt;11%&lt;/td&gt; &lt;td&gt;1&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td&gt;08/02/2009&lt;/td&gt; &lt;td&gt;B&lt;/td&gt; &lt;td&gt;14%&lt;/td&gt; &lt;td&gt;33%&lt;/td&gt; &lt;td&gt;2&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td&gt;08/02/2009&lt;/td&gt; &lt;td&gt;C&lt;/td&gt; &lt;td&gt;78%&lt;/td&gt; &lt;td&gt;55%&lt;/td&gt; &lt;td&gt;3&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td&gt;08/02/2009&lt;/td&gt; &lt;td&gt;D&lt;/td&gt; &lt;td&gt;57%&lt;/td&gt; &lt;td&gt;73%&lt;/td&gt; &lt;td&gt;4&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td&gt;08/02/2009&lt;/td&gt; &lt;td&gt;E&lt;/td&gt; &lt;td&gt;39%&lt;/td&gt; &lt;td&gt;32%&lt;/td&gt; &lt;td&gt;5&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td&gt;08/02/2009&lt;/td&gt; &lt;td&gt;F&lt;/td&gt; &lt;td&gt;40%&lt;/td&gt; &lt;td&gt;81%&lt;/td&gt; &lt;td&gt;6&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td&gt;09/02/2009&lt;/td&gt; &lt;td&gt;A&lt;/td&gt; &lt;td&gt;64%&lt;/td&gt; &lt;td&gt;12%&lt;/td&gt; &lt;td&gt;1&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td&gt;09/02/2009&lt;/td&gt; &lt;td&gt;B&lt;/td&gt; &lt;td&gt;14%&lt;/td&gt; &lt;td&gt;33%&lt;/td&gt; &lt;td&gt;2&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td&gt;09/02/2009&lt;/td&gt; &lt;td&gt;C&lt;/td&gt; &lt;td&gt;78%&lt;/td&gt; &lt;td&gt;56%&lt;/td&gt; &lt;td&gt;3&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td&gt;09/02/2009&lt;/td&gt; &lt;td&gt;D&lt;/td&gt; &lt;td&gt;57%&lt;/td&gt; &lt;td&gt;73%&lt;/td&gt; &lt;td&gt;4&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td&gt;09/02/2009&lt;/td&gt; &lt;td&gt;E&lt;/td&gt; &lt;td&gt;39%&lt;/td&gt; &lt;td&gt;32%&lt;/td&gt; &lt;td&gt;5&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td&gt;09/02/2009&lt;/td&gt; &lt;td&gt;F&lt;/td&gt; &lt;td&gt;40%&lt;/td&gt; &lt;td&gt;81%&lt;/td&gt; &lt;td&gt;6&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td&gt;…&lt;/td&gt; &lt;td&gt;…&lt;/td&gt; &lt;td&gt;…&lt;/td&gt; &lt;td&gt;…&lt;/td&gt; &lt;td&gt;..&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt; &lt;p&gt;To make life (and lookups) easier, add a column called “Key” which concatenates the date and the things. Typing “=A2&amp;amp;B2” will concatenate cells A2 and B2. (&lt;font color=&#34;#ff0000&#34;&gt;Red cells&lt;/font&gt; use formulas.)&lt;/p&gt; &lt;table class=&#34;lines numbers&#34;&gt; &lt;tbody&gt; &lt;tr&gt; &lt;td&gt;Date&lt;/td&gt; &lt;td&gt;Thing&lt;/td&gt; &lt;td&gt;Key&lt;/td&gt; &lt;td&gt;X&lt;/td&gt; &lt;td&gt;Y&lt;/td&gt; &lt;td&gt;Size&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td&gt;08/02/2009&lt;/td&gt; &lt;td&gt;A&lt;/td&gt; &lt;td&gt;&lt;font color=&#34;#ff0000&#34;&gt;39852A&lt;/font&gt;&lt;/td&gt; &lt;td&gt;64%&lt;/td&gt; &lt;td&gt;11%&lt;/td&gt; &lt;td&gt;1&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td&gt;08/02/2009&lt;/td&gt; &lt;td&gt;B&lt;/td&gt; &lt;td&gt;&lt;font color=&#34;#ff0000&#34;&gt;39852B&lt;/font&gt;&lt;/td&gt; &lt;td&gt;14%&lt;/td&gt; &lt;td&gt;33%&lt;/td&gt; &lt;td&gt;2&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td&gt;08/02/2009&lt;/td&gt; &lt;td&gt;C&lt;/td&gt; &lt;td&gt;&lt;font color=&#34;#ff0000&#34;&gt;39852C&lt;/font&gt;&lt;/td&gt; &lt;td&gt;78%&lt;/td&gt; &lt;td&gt;55%&lt;/td&gt; &lt;td&gt;3&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td&gt;08/02/2009&lt;/td&gt; &lt;td&gt;D&lt;/td&gt; &lt;td&gt;&lt;font color=&#34;#ff0000&#34;&gt;39852D&lt;/font&gt;&lt;/td&gt; &lt;td&gt;57%&lt;/td&gt; &lt;td&gt;73%&lt;/td&gt; &lt;td&gt;4&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td&gt;…&lt;/td&gt; &lt;td&gt;…&lt;/td&gt; &lt;td&gt;…&lt;/td&gt; &lt;td&gt;…&lt;/td&gt; &lt;td&gt;…&lt;/td&gt; &lt;td&gt;…&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt; &lt;p&gt;&lt;strong&gt;2. Make a “today” cell, and create a lookup table for “today”&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;Create a cell called “Offset” and type in 0 as its value. Add another cell called Today whose value is the start date (08/02/2009 in this case) plus the offset (0 in this case)&lt;/p&gt; &lt;table class=&#34;lines&#34;&gt; &lt;tbody&gt; &lt;tr&gt; &lt;td&gt;Offset&lt;/td&gt; &lt;td&gt;0&lt;/td&gt; &lt;td&gt;(Just type 0)&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td&gt;Today&lt;/td&gt; &lt;td&gt;&lt;font color=&#34;#ff0000&#34;&gt;08/02/2009&lt;/font&gt;&lt;/td&gt; &lt;td&gt;Use a formula: =STARTDATE + OFFSET&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt; &lt;p&gt;Now, if you change the offset from 0 to 1, “Today” changes to 09/02/2009. By changing just this one cell, we can create a table that holds the bubble chart details for that day, like below.&lt;/p&gt; &lt;table class=&#34;lines&#34;&gt; &lt;tbody&gt; &lt;tr&gt; &lt;td&gt;&lt;strong&gt;Thing&lt;/strong&gt;&lt;/td&gt; &lt;td&gt;&lt;strong&gt;X&lt;/strong&gt;&lt;/td&gt; &lt;td&gt;&lt;strong&gt;Y&lt;/strong&gt;&lt;/td&gt; &lt;td&gt;&lt;strong&gt;Size&lt;/strong&gt;&lt;/td&gt; &lt;td&gt;&lt;strong&gt;Formula&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td&gt;A&lt;/td&gt; &lt;td&gt;&lt;font color=&#34;#ff0000&#34;&gt;44%&lt;/font&gt;&lt;/td&gt; &lt;td&gt;&lt;font color=&#34;#ff0000&#34;&gt;19%&lt;/font&gt;&lt;/td&gt; &lt;td&gt;&lt;font color=&#34;#ff0000&#34;&gt;1&lt;/font&gt;&lt;/td&gt; &lt;td rowspan=&#34;6&#34;&gt; &lt;p&gt;X =VLOOKUP(TODAY &amp;amp; THING, DATA, 2, 0)&lt;/p&gt; &lt;p&gt;Y =VLOOKUP(TODAY &amp;amp; THING, DATA, 3, 0)&lt;/p&gt; &lt;p&gt;Size =VLOOKUP(TODAY &amp;amp; THING, DATA, 4, 0)&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td&gt;B&lt;/td&gt; &lt;td&gt;&lt;font color=&#34;#ff0000&#34;&gt;6%&lt;/font&gt;&lt;/td&gt; &lt;td&gt;&lt;font color=&#34;#ff0000&#34;&gt;13%&lt;/font&gt;&lt;/td&gt; &lt;td&gt;&lt;font color=&#34;#ff0000&#34;&gt;2&lt;/font&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td&gt;C&lt;/td&gt; &lt;td&gt;&lt;font color=&#34;#ff0000&#34;&gt;90%&lt;/font&gt;&lt;/td&gt; &lt;td&gt;&lt;font color=&#34;#ff0000&#34;&gt;71%&lt;/font&gt;&lt;/td&gt; &lt;td&gt;&lt;font color=&#34;#ff0000&#34;&gt;3&lt;/font&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td&gt;D&lt;/td&gt; &lt;td&gt;&lt;font color=&#34;#ff0000&#34;&gt;41%&lt;/font&gt;&lt;/td&gt; &lt;td&gt;&lt;font color=&#34;#ff0000&#34;&gt;61%&lt;/font&gt;&lt;/td&gt; &lt;td&gt;&lt;font color=&#34;#ff0000&#34;&gt;4&lt;/font&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td&gt;E&lt;/td&gt; &lt;td&gt;&lt;font color=&#34;#ff0000&#34;&gt;59%&lt;/font&gt;&lt;/td&gt; &lt;td&gt;&lt;font color=&#34;#ff0000&#34;&gt;40%&lt;/font&gt;&lt;/td&gt; &lt;td&gt;&lt;font color=&#34;#ff0000&#34;&gt;5&lt;/font&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td&gt;F&lt;/td&gt; &lt;td&gt;&lt;font color=&#34;#ff0000&#34;&gt;16%&lt;/font&gt;&lt;/td&gt; &lt;td&gt;&lt;font color=&#34;#ff0000&#34;&gt;77%&lt;/font&gt;&lt;/td&gt; &lt;td&gt;&lt;font color=&#34;#ff0000&#34;&gt;6&lt;/font&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt; &lt;p&gt;Check out my &lt;a href=&#34;https://files.s-anand.net/blog/a/motion-chart.xls&#34;&gt;motion chart spreadsheet&lt;/a&gt; to see how these are constructed.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;3. Make a bubble chart with that lookup table&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;This is a simple Insert – Chart. Go through the chart types and select bubble. Play around with the data selection until you get the X, Y and Size columns right.&lt;/p&gt; &lt;p&gt;&lt;a title=&#34;Bubble chart&#34; href=&#34;https://www.s-anand.net/blog/assets/flickr-bubble-chart_3348447675_o-png.webp&#34;&gt;&lt;img height=&#34;300&#34; alt=&#34;Example of a bubble chart&#34; src=&#34;https://www.s-anand.net/blog/assets/flickr-bubble-chart_3348447675_o-png.webp&#34; width=&#34;450&#34;&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;4. Add a scroll bar and a play button linked to the “today” cell&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;Now for the magic. Add a scroll bar below the chart.&lt;br&gt;&lt;em&gt;Excel 2007 users:&lt;/em&gt; Go to Developer – Insert and add a scroll bar.&lt;br&gt;&lt;em&gt;Excel 2003 users:&lt;/em&gt; Go to View - Toolbars - Control Toolbox and add a scroll bar&lt;/p&gt; &lt;p&gt;Right click on the scroll bar, go to Format Control… and link the scroll bar to the “Offset” cell. Now, as you move the scroll bar, the value in the offset cell will change to reflect it. So the “today” cell will change too. So will the lookup table. And so will the chart.&lt;/p&gt; &lt;p&gt;Next, create a button called “Play” and edit its code.&lt;br&gt;&lt;em&gt;Excel 2007 users:&lt;/em&gt; Right click the button, go to Developer – View Code.&lt;br&gt;&lt;em&gt;Excel 2003 users:&lt;/em&gt; Right click the button and select View Code.&lt;/p&gt; &lt;p&gt;Type in the following code for the button’s click event:&lt;/p&gt;
```vb
Declare Sub Sleep Lib &#34;kernel32&#34; (ByVal dwMilliseconds As Long)
&lt;p&gt;Sub Button1_Click()
Dim i As Integer
For i = 0 To 40: &amp;rsquo; Replace 40 with your range
Range(&amp;ldquo;J1&amp;rdquo;).Value = i &amp;rsquo; Replace J1 with your offset cell
Application.Calculate
Sleep (100)
Next
End Sub&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;&amp;lt;p&amp;gt;Now clicking on the Play button will give you this glorious motion chart in Excel:&amp;lt;/p&amp;gt;
&amp;lt;p&amp;gt;&amp;lt;/p&amp;gt;&amp;lt;object classid=&amp;#34;clsid:D27CDB6E-AE6D-11cf-96B8-444553540000&amp;#34; codebase=&amp;#34;http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0&amp;#34; width=&amp;#34;451&amp;#34; height=&amp;#34;334&amp;#34; id=&amp;#34;motion-chart.swf&amp;#34;&amp;gt;
&amp;lt;param name=&amp;#34;movie&amp;#34; value=&amp;#34;/a/motion-chart.swf&amp;#34;&amp;gt;
&amp;lt;param name=&amp;#34;quality&amp;#34; value=&amp;#34;high&amp;#34;&amp;gt;
&amp;lt;param name=&amp;#34;bgcolor&amp;#34; value=&amp;#34;#ffffff&amp;#34;&amp;gt;
&amp;lt;embed src=&amp;#34;/a/motion-chart.swf&amp;#34; quality=&amp;#34;high&amp;#34; bgcolor=&amp;#34;#ffffff&amp;#34; width=&amp;#34;451&amp;#34; height=&amp;#34;334&amp;#34; name=&amp;#34;motion-chart.swf&amp;#34; type=&amp;#34;application/x-shockwave-flash&amp;#34; pluginspage=&amp;#34;http://www.macromedia.com/go/getflashplayer&amp;#34;&amp;gt;&amp;lt;/embed&amp;gt;
&amp;lt;/object&amp;gt;

---

## Comments

&amp;lt;!-- wp-comments-start --&amp;gt;
- **[Vinoth](http://vinovator.blogspot.com)** _13 Mar 2009 9:27 am_:
  Hi Anand.Very useful article.
  I can use similar motion chart to showcase how each of my team member&amp;#39;s cumulative performance is contributing at the overall level.
- **Zoheb** _21 Mar 2009 12:02 am_:
  also could you rewrite the whole code,on how to slow it down.. i tried inserting it.but i don&amp;#39;t think i put it in the right place.
- **David** _18 Mar 2009 2:16 pm_:
  Thanks! That did the trick! Great Blog!
- **David** _17 Mar 2009 7:56 pm_:
  Is there a way to slow it down?
- **[S Anand](http://www.s-anand.net/)** _17 Mar 2009 8:44 pm_:
  Sure. Use the sleep function. Add this to the module:
 \
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Declare Sub Sleep Lib &amp;ldquo;kernel32&amp;rdquo; (ByVal dwMilliseconds As Long)&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;\
Then add a Sleep function after `Application.Calculate`
\
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Sleep 200&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;- **Nach** _17 Mar 2009 8:50 am_:
Thank you...this is something that I have been trying to do for a long time now...but didnt know how to write the looped macro in Excel.
- **Zoheb** _20 Mar 2009 9:52 pm_:
Hi I had a question, if I wanted the counter by 3, how would i do that?
Thanks
-Zoheb
- **[S Anand](http://www.s-anand.net/)** _23 Mar 2009 7:39 am_:
I&amp;#39;ve changed the code and also revised it in the Excel file. Take a look.
To increment the counter by 3, change the properties of the scroll bar to make the increment 3 instead of 1. (Right click on the scroll bar and select &amp;#34;Properties&amp;#34;)
- **[Al-Hamour](http://www.alhamour.com)** _23 Mar 2009 1:50 am_:
Great post! Thanks for sharing. Time delay code is very useful if you can upload it.. right now it goes too fast to see.
Also, is there a way to make the graph trace each of the moving circles?
- **Venkat** _1 Apr 2009 3:12 pm_:
Thanks Anand. Very useful to represent often boring data like time series analysis.
- **Firman** _17 Apr 2009 3:53 am_:
Thank you so much... i hope in the near future you can give us tutorial / article about how to make it more interactive... say... after we click the bubble we can divide it into smaller / more detailed parts.
Thank you
- **Reginald Vaz** _17 Apr 2009 7:08 pm_:
Extremely useful...thanks a lot for sharing
- **Pradeep Jindal** _2 May 2009 6:57 pm_:
Fabulous! I just starting to do it and find this article...
everything redy and beautiful...
can we add drill down to it
Thank you Anand :)
- **Mike** _12 May 2009 3:43 pm_:
Great Tool. I am also looking for a way to pause the animation. Any ideas?
- **Pete** _4 Jun 2009 1:30 am_:
Is there a way to embed the animation in excel?
- **[S Anand](http://www.s-anand.net/)** _14 Jul 2009 5:25 pm_:
Don&amp;#39;t think we can export these motion charts into Powerpoint, I&amp;#39;m afraid.
- **[Sunny](http://www.iimb.ernet.in)** _13 Jul 2009 9:38 pm_:
Is there any way I can export these motion charts into microsoft powerpoint?
- **beth** _15 Jul 2009 1:50 am_:
do you know how you can embed this into a powerpoint? when i try to embed, you can&amp;#39;t do the motion.
- **Sabnish** _11 Jul 2009 11:26 am_:
Hi...great help...thanks a lot....but for my presentation i will need to see the evolution by years...in this example it is the date which gets incremented...how to increase the year instead...thanks...hope you can help me....
- **Michael Brault** _8 Dec 2009 3:11 pm_:
I have the motion chart embed into a Dashboard with other charts and tables. The macro increments all tables. Any ida on how to limit the macro to a single table of data?
- **Alex** _22 Jan 2010 10:57 pm_:
Having problems creating it in Excel for mac. Any ideas?
- **[derek](http://i-ocean.blogspot.com/)** _14 May 2010 7:17 pm_:
Another kind of motion chart can be a line or bar chart showing the evolution of multiple line shapes or histograms with time.
You can also add a time display to show when the events are occurring. Rosling&amp;#39;s application cleverly displays the year as a giant watermark behind the bubbles, so the eye doesn&amp;#39;t have to stray to a corner to see the time. I&amp;#39;ve often thought a clock face symbol might be a neat alternative to a simple text display.
- **[Jeff Koenig](http://connellcommodities.com)** _5 Feb 2010 7:33 pm_:
Great bubble chart solution. I&amp;#39;ve been looking for a 3D bubble chart so I can move bubbles in 3D space, allowing me to track an additional dimension. Any ideas?
- **Dirk Cornette** _13 Apr 2010 10:23 pm_:
Great solution Anand.
I am trying to customize it, showing 1 customer per buble, size = revenue, Y-axes = number of our staff working for that customer, X axes showing margin %.
Solving two issues would make it more gapminder-like.
1. How to add a data label to the buble, showing the customer name ?
2. How to show the year ?
Any ideas ?
- **[Mahdi Meskin](http://www.meskin.ir)** _4 Jun 2010 6:24 am_:
Great post!
thanks.
- **[Drew](http://www.totallyawesomemapping.com)** _11 May 2010 4:10 pm_:
Just found your post, and I can&amp;#39;t wait to try it out. Thanks for the tips!
- **NIall Tallon** _18 Aug 2010 12:08 pm_:
HI Anand,
This is great - a while since I updated and wrote macros - I am running a 64bit version of windows 7 and excel 2010 - and the macro won&amp;#39;t run there - any ideas?
Thanks,
Niall
- **Niall Tallon** _18 Aug 2010 12:19 pm_:
HI Again,
Actually just have to add &amp;#34;PTRsafe&amp;#34; in the macro near the declare statement.
Pretty easy.......Email me if you want a copy with the changed macro.
Best regfards and with thanks,
NT
- **Kamesh.M** _15 Sep 2010 10:00 am_:
Great Post!
This can be done without Macros also.....
http://www.webanalyticsindia.com/2009-11-20/motion-chart-in-excel/
Best Regards
Kamesh
- **Pvl** _27 Jun 2012 8:41 am_:
Hi, Anand,
Thanks for good tutorial. But I&amp;#39;m very interested in creating such motion chart in Flash, like You posted as an example. Any suggestions how to do that?
- **Scott** _20 Dec 2010 4:31 pm_:
Hi,
Is it possible to make this so the individual bubbles have different colors or at least unique labels? I can only seem to have all the bubbles be one color and one label &amp;#39;Thing&amp;#39;....
Thanks,
Scott
- **James Arnott** _8 Sep 2011 2:56 pm_:
Hi - I&amp;#39;ve come late to this but am finding it very useful. Thanks for sharing your work with us as it would have taken me ages to work it out myself.
- **Anna** _2 Nov 2011 3:52 pm_:
Does anyone know if it is possible to include this chart in a Share Point site? I know you can upload dashboards with the REST API but I don&amp;#39;t know if it is possible to add motion charts. Can you shed some light on this topic. Thanks!
- **Atisha Banjare** _11 Nov 2011 11:06 am_:
Hi!! Great stuff and really useful. Thanks
- **kalaisam** _23 Jan 2012 11:37 am_:
Hai,
I read Excel file from my Google account using Zend. I call Motion chart using Publish gadget script. It automatically assign the default X-axis and Y-axis .I wish to assign the X- axis and Y-axis . I choose Advanced settings option to change the Axis and then call that script string in Php code. But Default axis only displayed ! How can i fix that ?
- **Bill** _16 Apr 2012 5:41 pm_:
Is it possible to have bubble diameters also show thier diameter change over time? Various smoothing algorithms could be offered to choose from.
- **Nal** _23 Mar 2012 6:48 am_:
hi, this is fantastic! Is it possible to put this into my powerpoint presentation?
thanks!
- **Sreekar** _3 Sep 2011 9:19 pm_:
Hi Anand - I tried using your macro and it gives a compilation error &amp;#34;Sub or Function not defined&amp;#34;; would you know how I could fix it? I am using 2010 Excel
- **Alan** _15 Sep 2011 1:01 am_:
Can you please post me the updated version for Excel 2010.
I dont know how to update the declare statement to include &amp;#34;PTR Safe&amp;#34;
Thank you
Alan
- **Chris** _28 Mar 2012 11:08 pm_:
Wonderful! Thanks for all this work. I use Excel 2010 and it shouldn&amp;#39;t be too hard to adapt it (I won&amp;#39;t bother you about it).
It&amp;#39;s too bad it can&amp;#39;t be embedded in PPT. Microsoft definitely needs to add this kind of thing to PowerPoint.
- **Kirk** _23 Jun 2012 4:57 pm_:
I tried this macro but got an error saying the macros in this project are disabled. Anyone have an idea on what I am doing wrong?
Sub Button20\_Click()
Declare Sub Sleep Lib &amp;#34;kernel32&amp;#34; (ByVal dwMilliseconds As Long)
Sub Button1\_Click()
Dim i As Integer
For i = 0 To 40:
Range(&amp;#34;J1&amp;#34;).Value = i
Application.Calculate
Sleep (100)
Next
End Sub
- **CK** _6 May 2012 10:18 am_:
Thank you for this useful tutorial.
How did you embed the motion chart moving on your web page please?
- **Gary** _16 Jul 2012 2:37 am_:
Oh, sorry to mention that it stops at the Sleep (100). I even tried to add the Declare but for some odd reason it keep advancing above where I type it. I appreciate any help.
Thank you
- **Gary** _16 Jul 2012 2:34 am_:
First let me say thank you. The code you posted did not work for me. I am using MS Excel 2010 and I keep getting the same error.
Microsoft Visual Basic for Applications
Compile error:
Sub or Function not defined.
Can you help me fix this error. This is what I have typed.
Sub Button1\_Click()
Dim i As Integer
For i = 1 to 39:
Range (&amp;#34;C1&amp;#34;).Value = 1
Application.Calculate
Sleep (100)
Next
End Sub
- **Seymon** _15 Jul 2012 2:17 am_:
it is awesome, thanks
- **Merry Turnip** _9 Oct 2012 12:21 pm_:
THANK YOU SO MUCH, FOR YOUR TUTORIAL, I HAVE TRIED IT AND IT WORKS.
THANK YOU SO MUCH.
By the way, when I change Years to months, however, it doesn&amp;#39;t work. Could you please teach me how to change year to months?
THANK AGAIN
REGARDS
- **Mukesh** _5 Sep 2012 11:24 pm_:
Hi Anand,
I need to show the data for only 4 years.
Could you please tell me how to slow down the motion further ?
I tried increasing the value of the number in Sleep (), but its not making a difference
- **maanu** _19 Nov 2012 10:34 am_:
hi anand, i want to build a bubble chart for my applications globally with four variables, application investment strategy meaning invest, maintain or disinvest, cost, location, and functional match. i want to handle location with color as there are only 8 locations, and cost with size. i want app investment strategy as numbers (1,2 ,3) on y axis and functional match with five categories (0-20 21-40,41-60,61-80,81-100) on x axis. can we use your technique to achieve this ?
- **Obed** _18 Feb 2013 8:02 am_:
Thanks for sharing your wealth of knowledge with others. Great stuff!!!
- **Michael** _24 Feb 2013 5:31 am_:
In their infinite wisdom Google is discontinuing motion chart gadgets in 2013 so a big thank you for this alternative:-)
- **[Ganeshan Nadarajan](http://www.solidradicle.com)** _16 Jan 2013 12:27 pm_:
Motion charts are animated bubble charts. They track the performance of important things over time (in two dimensions). This is chart with 4 dimensions. But not all data with 4 dimensions can be plotted as a motion chart. One dimension has to be time, and another has to be linked to the importance of the item.
- **isspenguin** _17 Jan 2013 5:12 pm_:
Hello - How do I create &amp;#34;trails&amp;#34; that trace the path of individual bubbles in Excel, like they do in Google motion charts?﻿ Please feel free to email me your response at rdivya09@gmail.com. Thanks!
- **[Stefan Selby](https://googledrive.com/host/0B0Ms4sM4a2RoSW9YYmkxbVlMc2M/vbamotioncharts.html)** _25 Nov 2013 8:07 pm_:
It is interesting to see how you did your motion charts. I have created an app that does more than just bubble charts. I have done the same for most excel charts and a speedometer chart. It is shared with the world have a look at:https://googledrive.com/host/0B0Ms4sM4a2RoSW9YYmkxbVlMc2M/vbamotioncharts.html
- **[sireesh](http://www.ses.com)** _11 Jul 2013 10:17 pm_:
how to transfer bubble chart to ppt?
- **Mike** _26 Jul 2013 11:02 pm_:
Does the code work with 2010? Nothing happens when I copy and paste it in. When I run debug the sleep (100) highlights even after I replace the data as you indicated with my own. Granted, I&amp;#39;m new to developer stuff so I may be making a silly mistake.
- **Max** _19 Jul 2013 6:50 pm_:
Thanks for the great write up. Any ideas as to how one could add a &amp;#34;tail&amp;#34; behind the moving bubble to track the past data?
- **Diana** _9 Nov 2013 4:08 am_:
Actually.....shows how hopeless I actually am....I am in Excel 2013, not 2010!
- **Diana** _9 Nov 2013 4:05 am_:
I&amp;#39;m also asking the same question as Mike #5. I can&amp;#39;t get the code to work in 2010 and the sleep (100) highlights. As I&amp;#39;m not a programmer and really don&amp;#39;t have a clue, I&amp;#39;d love to get this handled. I&amp;#39;ve come this far and have great individual graphs!. Thanks....
- **Loveleen** _8 Apr 2014 3:57 am_:
I can’t get the code to work in 2010 and the sleep (100) highlights. As I’m not a programmer to understand the coding. COuld you please how it works in 2010
regards,
Loveleen
- **Ye** _13 Mar 2015 6:28 pm_:
Thank you so much for this workaround (I usually did this with googledocs) in excel. I am trying to make this work - not based on increasing date, but on temperature. Imagine a chemistry-based excel sheet and I want to show how different components change volume, weight and surface opaqueness with rising temperature. Right now, I struggle to make the today and offset work for me since the example is (like google docs) based on a start date.
Thanks for your reply in advance.
Y
- **Durga** _18 Jun 2014 4:11 pm_:
This was very useful for me. Thank you for describing the play button logic. On the web site when I click on the pause or the stop button the chart stops at that moment but I didn&amp;#39;t see it in the excel. Could you please tell me how to code the stop button or the pause button on excel.
- **Nathalie** _11 Jun 2014 5:06 pm_:
It is very interesting. However, there is one little problem that stops me from using this kind of chart: the size of the bubbles does not follow the variation of size values in time. For instance, if bubble A remains the biggest bubble over the time, it will keep the same size in the chart, even if its value has increased by a factor 3 one year. I would have expected the size to be 3 times bigger than in the previous year. Is there a way to remedy this (without having to use Google motion charts)?
- **[Stef](http://developingdata.azurewebsites.net/)** _30 Dec 2014 12:46 pm_:
I have created an app that creates these and other types of motion charts. You can find it at http://developingdata.azurewebsites.net/Excel/ExcelMotionCharts
Knowing excel and reading this article would help (good article) but I have tried to make the app easy to use.
- **Des Klass** _1 Jan 2015 1:01 am_:
Hi I am having the same problem as Mike(#5) and just can&amp;#39;t get the motion working. Greatful for any suggestions(I am using my own data)
- **Atom** _18 Dec 2014 8:07 am_:
How do i change the years to seconds?
- **Ryan** _14 Aug 2015 7:42 pm_:
I&amp;#39;m also having the same Sleep (100) error in 2010. Is there a work around for this?
- **[Niall](http://n/a)** _22 Mar 2016 5:07 pm_:
HI There - really love the motion chart work here - I&amp;#39;ve been using it for a while - but I recently went to O365 and the graphs I made don&amp;#39;t work anymore - any ideas?
Many thanks,
Niall
- **Rochny** _15 Feb 2019 12:24 pm_:
I can’t get the code to work in 2016 and the sleep (100) highlights.
Can get help, as i am not a programmer.
regards
Rochny
- **[JEP](http://patientflow.dk)** _3 Apr 2017 9:26 am_:
The code work with 2010 if you delete &amp;#34;sleep (100)&amp;#34; :-)
&amp;lt;!-- wp-comments-end --&amp;gt;
&lt;/code&gt;&lt;/pre&gt;</description>
    </item>
    <item>
      <title>Split text</title>
      <link>https://www.s-anand.net/blog/split-text/</link>
      <pubDate>Sat, 06 Sep 2008 12:00:00 +0000</pubDate>
      <guid>https://www.s-anand.net/blog/split-text/</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;This is a series on what &lt;a href=&#34;http://docs.google.com/&#34;&gt;Google Spreadsheets&lt;/a&gt; can do that Excel can&amp;rsquo;t.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;a href=&#34;http://documents.google.com/support/spreadsheets/bin/answer.py?answer=105612&#34;&gt;SPLIT(string, delimiter)&lt;/a&gt; splits a string using a delimiter. So if you have &amp;ldquo;one,two,three,four&amp;rdquo; in cell A1, you could split that into 4 cells using =SPLIT(A1,&amp;quot;,&amp;quot;)&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://www.s-anand.net/blog/assets/flickr-31_2830261663_o-png.webp&#34;&gt;&lt;img alt=&#34;3.1&#34; loading=&#34;lazy&#34; src=&#34;https://www.s-anand.net/blog/assets/flickr-31_2830261663_o-png.webp&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;That&amp;rsquo;s similar to Data &amp;gt; Text to Columns, except that if the original data changed, Text to Columns does not revise the output. SPLIT can give you &lt;strong&gt;dynamic text-to-columns&lt;/strong&gt;. This is pretty useful when processing text data, in three ways:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;You retain the original data&lt;/li&gt;
&lt;li&gt;You don&amp;rsquo;t need to re-apply Text to Columns. Extending the formula will work (and that&amp;rsquo;s quicker)&lt;/li&gt;
&lt;li&gt;It&amp;rsquo;s dynamic. If the data changes, your split changes&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Since SPLIT returns an array, you can do a bunch of useful things with it.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;=COUNTA(SPLIT(A1,&amp;quot; &amp;quot;))&lt;/code&gt; gives you the number of words in a string&lt;/p&gt;
&lt;p&gt;&lt;code&gt;=SUM(SPLIT(A1,&amp;quot;,&amp;quot;))&lt;/code&gt; sums up a comma separated list. &amp;ldquo;1,2,3,4&amp;rdquo; is added up to 10.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;=ARRAYFORMULA(SUM(LEN(SPLIT(A1,&amp;quot;,&amp;quot;))))&lt;/code&gt; sums up the word lengths. So &amp;ldquo;one,two,three,four&amp;rdquo; splits into 4 words of length 3,3,5,4 each, which adds up to 15.&lt;/p&gt;
&lt;p&gt;\&lt;/p&gt;
&lt;p&gt;The ability to join and split also lets you &lt;strong&gt;sort by multiple keys&lt;/strong&gt;. For example, say you had income by country and product. You want to show it sorted by Country &amp;amp; Product. You also want to show it by Product &amp;amp; Country.&lt;/p&gt;
&lt;p&gt;So first take the data sorted by Country and Product.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://www.s-anand.net/blog/assets/flickr-32_2830261665_o-png.webp&#34;&gt;&lt;img alt=&#34;3.2&#34; loading=&#34;lazy&#34; src=&#34;https://www.s-anand.net/blog/assets/flickr-32_2830261665_o-png.webp&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Now, in column E, create a key that&amp;rsquo;s sorted by Product and then by Income. Type&lt;/p&gt;
&lt;p&gt;&lt;code&gt;=SORT(ARRAYFORMULA(B2:B10&amp;amp;&amp;quot;:&amp;quot;&amp;amp;A2:A10&amp;amp;&amp;quot;:&amp;quot;&amp;amp;C2:C10))&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&amp;hellip; in cell E2. That will give you all the data in one cell, sorted by Product and then by Country. Now, just split the data, as shown here.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://www.s-anand.net/blog/assets/flickr-33_2830261669_o-png.webp&#34;&gt;&lt;img alt=&#34;3.3&#34; loading=&#34;lazy&#34; src=&#34;https://www.s-anand.net/blog/assets/flickr-33_2830261669_o-png.webp&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;\&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Note&lt;/strong&gt;: You could have done the whole thing using one formula:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;=ARRAYFORMULA(SPLIT(SORT(ARRAYFORMULA(B2:B10&amp;amp;&amp;quot;:&amp;quot;&amp;amp;A2:A10&amp;amp;&amp;quot;:&amp;quot;&amp;amp;C2:C10)),&amp;quot;:&amp;quot;))&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;But for some reason, this doesn&amp;rsquo;t seem to show the first row properly. No idea why.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Can I do that in Excel?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Well, not really. You&amp;rsquo;re best off creating a user-defined function to duplicate the SPLIT function.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;comments&#34;&gt;Comments&lt;/h2&gt;
&lt;!-- wp-comments-start --&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Prakash H Ayer&lt;/strong&gt; &lt;em&gt;9 Sep 2008 8:25 am&lt;/em&gt;:
Thanks Anand. This is very useful.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Prakash Ayer&lt;/strong&gt; &lt;em&gt;9 Sep 2008 8:25 am&lt;/em&gt;:
Thanks Anand. This is very useful.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Sridhar&lt;/strong&gt; &lt;em&gt;17 Sep 2008 10:19 am&lt;/em&gt;:
Cant &amp;ldquo;mid&amp;rdquo; with &amp;ldquo;find&amp;rdquo; and &amp;ldquo;len&amp;rdquo; replace &amp;ldquo;split&amp;rdquo;? Even though its a round about way i think it can still do it.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Sridhar&lt;/strong&gt; &lt;em&gt;17 Sep 2008 11:11 am&lt;/em&gt;:
@Sridhar: Yes, this can be done, within reason. Chandoo has a post about &lt;a href=&#34;http://chandoo.org/wp/2008/09/08/split-text-excel-functions/&#34;&gt;Splitting text in excel using formulas&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;St&lt;/strong&gt; &lt;em&gt;27 Sep 2008 6:54 am&lt;/em&gt;:
It can be done in excel - we used excel to split up a sentence field into constituent words - but it is a bit roundabout - search for spaces or commas, count, split by count of space/comma&lt;/li&gt;
&lt;/ul&gt;
&lt;!-- wp-comments-end --&gt;
</description>
    </item>
    <item>
      <title>Dynamically sort data</title>
      <link>https://www.s-anand.net/blog/dynamically-sort-data/</link>
      <pubDate>Fri, 05 Sep 2008 12:00:00 +0000</pubDate>
      <guid>https://www.s-anand.net/blog/dynamically-sort-data/</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;This is a series on what &lt;a href=&#34;http://docs.google.com/&#34;&gt;Google Spreadsheets&lt;/a&gt; can do that Excel can&amp;rsquo;t.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;To sort data, use the &lt;a href=&#34;http://documents.google.com/support/spreadsheets/bin/answer.py?hl=en-uk&amp;amp;answer=92022&#34;&gt;SORT function.&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;For example, if you have a list of products, their revenues and profits in A2:C9. Type SORT(A2:C9, 2, FALSE) in cell E2 to get the products sorted by the second column, revenues.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://www.s-anand.net/blog/assets/flickr-21_2825546558_o-png.webp&#34;&gt;&lt;img alt=&#34;2.1&#34; loading=&#34;lazy&#34; src=&#34;https://www.s-anand.net/blog/assets/flickr-21_2825546558_o-png.webp&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;This is a dynamic list. If you change the revenues, the products are reordered automatically.&lt;/p&gt;
&lt;p&gt;The first parameter to the SORT function is the data range you want to sort. The remaining parameters are optional. The second parameter is the column to sort by. By default, the data is sorted by the first column, in ascending order. In this example, we sorted by the 2nd column. The third parameter is FALSE for descending order, and TRUE for ascending order.&lt;/p&gt;
&lt;p&gt;You can specify additional columns to sort by. Just add the second column number and the order, third column number and order, and so on.&lt;/p&gt;
&lt;p&gt;For example, this formula sorts by the 2nd column (ascending), 4th column (descending) and 1st column (ascending):&lt;/p&gt;
&lt;p&gt;&lt;code&gt;=SORT(A1:D100, 2, TRUE, 4, FALSE, 1, TRUE)&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;You can create a dashboard with multiple views. Say you wanted to show the above data, and also summarise the top 3 products by revenue and profitability. Go to cell E2, and type&lt;/p&gt;
&lt;p&gt;&lt;code&gt;=NOEXPAND(SORT(A1:A9, B2:B9, TRUE))&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;This sorts the products (A1:A9) using the revenues (B2:B9) in ascending order (TRUE or 1). This would show all 8 products. If you want to keep only the top 3, you need to put the NOEXPAND around the formula. Otherwise, even if you delete the 4th product, Google will put it back.&lt;/p&gt;
&lt;p&gt;Now, delete all but the top 3 products. Similarly, in cell E7, type&lt;/p&gt;
&lt;p&gt;&lt;code&gt;=NOEXPAND(SORT(A1:A9, C2:C9, TRUE))&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;This sorts by profitability instead. That&amp;rsquo;s it! You have a dynamic list of the top 3 products by revenue and profitability.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://www.s-anand.net/blog/assets/flickr-22_2825546564_o-png.webp&#34;&gt;&lt;img alt=&#34;2.2&#34; loading=&#34;lazy&#34; src=&#34;https://www.s-anand.net/blog/assets/flickr-22_2825546564_o-png.webp&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Can I do that in Excel?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Excel doesn&amp;rsquo;t have a function to sort. You can sort a list in-place. That changes the order permanently. There&amp;rsquo;s no way of retaining the original order.&lt;/p&gt;
&lt;p&gt;You could make a copy of the list and sort it. But the copy will not change when the original list changes.&lt;/p&gt;
&lt;p&gt;If the length of the list is fixed, and the values you want to sort by are unique, you could use the LARGE/SMALL, INDEX and MATCH functions to simulate this effect. First, type the numbers 1-8 in column D. Then type this formula in F2:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;=LARGE(B$2:B$9,D2)&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;This will give you the largest revenue figure. Copy this down the column. This will show the largest revenue figures in descending order. Now, fill cells E2 downwards with the formula:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;=INDEX(A$2:A$9,MATCH(F2,B$2:B$9,0))&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;The MATCH function finds the revenue in the first table, and the INDEX function looks up the corresponding product. You can use the same principle to get the profitability. However, this will not work if two products have the same revenue figure.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://www.s-anand.net/blog/assets/flickr-23_2825556484_o-png.webp&#34;&gt;&lt;img alt=&#34;2.3&#34; loading=&#34;lazy&#34; src=&#34;https://www.s-anand.net/blog/assets/flickr-23_2825556484_o-png.webp&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;comments&#34;&gt;Comments&lt;/h2&gt;
&lt;!-- wp-comments-start --&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&#34;http://www.isheet.com&#34;&gt;hk&lt;/a&gt;&lt;/strong&gt; &lt;em&gt;21 May 2009 3:41 am&lt;/em&gt;:
put your data in column B, say b1:b20
in column A put formula =rank(b1, $b$1:$b$20). pull down
in column D drag down all ordinals - ie: 1 to 20. In column E =vlookup(d1,$a$1:$b$20, 2,false)
then pull down
There&amp;rsquo;s your sorted list of the data in column B, only issue being duplicate ranks get #NA.&lt;/li&gt;
&lt;/ul&gt;
&lt;!-- wp-comments-end --&gt;
</description>
    </item>
    <item>
      <title>Dynamically eliminate duplicates</title>
      <link>https://www.s-anand.net/blog/dynamically-eliminate-duplicates/</link>
      <pubDate>Thu, 04 Sep 2008 12:00:00 +0000</pubDate>
      <guid>https://www.s-anand.net/blog/dynamically-eliminate-duplicates/</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;This is a series on what &lt;a href=&#34;http://docs.google.com/&#34;&gt;Google Spreadsheets&lt;/a&gt; can do that Excel can&amp;rsquo;t&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;To get a list of unique values from a list, use the &lt;a href=&#34;http://documents.google.com/support/spreadsheets/bin/answer.py?hl=en-uk&amp;amp;answer=92022&#34;&gt;UNIQUE function&lt;/a&gt; on &lt;a href=&#34;http://docs.google.com/&#34;&gt;Google Spreadsheets&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;For example, if you have a list of browsers in column A, type &lt;code&gt;=UNIQUE(A1:A17)&lt;/code&gt; at cell B1 to get a unique list of browsers. This is a dynamic list. If you change the list of browsers, the unique list gets updated automatically.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://www.s-anand.net/blog/assets/flickr-11_2825546538_o-png.webp&#34;&gt;&lt;img alt=&#34;1.1&#34; loading=&#34;lazy&#34; src=&#34;https://www.s-anand.net/blog/assets/flickr-11_2825546538_o-png.webp&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;You can use UNIQUE to &lt;strong&gt;create a dynamic pivot table&lt;/strong&gt;. Quite often, you end up creating a pivot table simply to summarise by one column. The main purpose the pivot table serves is in getting a list of unique values on that column. Plus, it&amp;rsquo;s a bit heavy on the UI. And every time the data changes, you need to refresh the pivot. But with the UNIQUE function, you can get a dynamic list of unique values, and you can use the COUNTIF and SUMIF function next to each value. Here is an example showing the frequency table of the browsers shown earlier. Column C does a COUNTIF of the unique values on the original list.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://www.s-anand.net/blog/assets/flickr-12_2825546532_o-png.webp&#34;&gt;&lt;img alt=&#34;1.2&#34; loading=&#34;lazy&#34; src=&#34;https://www.s-anand.net/blog/assets/flickr-12_2825546532_o-png.webp&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;You can also use UNIQUE as the input to another formula:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;=COUNT(UNIQUE(LIST))&lt;/code&gt; counts the number of unique values&lt;/p&gt;
&lt;p&gt;&lt;code&gt;=COUNT(LIST)-COUNT(UNIQUE(LIST))&lt;/code&gt; gives the number of duplicates&lt;/p&gt;
&lt;p&gt;&lt;code&gt;=INDEX(UNIQUE(LIST),3)&lt;/code&gt; gives you the third unique value&lt;/p&gt;
&lt;p&gt;&lt;code&gt;=LARGE(UNIQUE(LIST),3)&lt;/code&gt; gives you the third largest unique value&lt;/p&gt;
&lt;p&gt;&amp;hellip; and so on.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Can I do that in Excel?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;You can, but not easily. There are two approaches, but each has its limitations.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;A. Use Advanced Filters: easy but static&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Create an advanced filter on column A (Alt-D-F-A)&lt;/li&gt;
&lt;li&gt;Select Copy to another location&lt;/li&gt;
&lt;li&gt;Click in the Copy to box, and then click the cell B1&lt;/li&gt;
&lt;li&gt;Select Unique records only&lt;/li&gt;
&lt;li&gt;Click OK&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;a href=&#34;https://www.s-anand.net/blog/assets/flickr-13_2825546548_o-png.webp&#34;&gt;&lt;img alt=&#34;1.3&#34; loading=&#34;lazy&#34; src=&#34;https://www.s-anand.net/blog/assets/flickr-13_2825546548_o-png.webp&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;But the list of unique values that you get here is static. If you changed one of the values, the list of unique values does not change.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;B. Use a complex formulae that are dynamic&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;First, blank out the duplicates by typing this formula:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;=IF(COUNTIF(A$1:A1,A1)=1,A1,&amp;quot;&amp;quot;)&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;adjacent to the first cell (into B1), and dragging it all the way down (to B17).&lt;/p&gt;
&lt;p&gt;Now, create a named range (Alt-I-N-D) for these cells (B1:B17) called WithBlanks and another named range called NoBlanks for the cells one column to the right (C1:C17).&lt;/p&gt;
&lt;p&gt;On the first cell of NoBlanks (C1), type this &lt;a href=&#34;http://www.cpearson.com/&#34;&gt;formula&lt;/a&gt;:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code class=&#34;language-excel&#34; data-lang=&#34;excel&#34;&gt;=IF(ROW()-ROW(NoBlanks)+1&amp;gt;ROWS(WithBlanks)-COUNTBLANK(WithBlanks),&amp;#34;&amp;#34;,
    INDIRECT(ADDRESS(SMALL((IF(WithBlanks&amp;lt;&amp;gt;&amp;#34;&amp;#34;,ROW(WithBlanks),ROW()+
    ROWS(WithBlanks))),ROW()-ROW(NoBlanks)+1),COLUMN(WithBlanks),4)))
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Press Ctrl-Shift-Enter rather than Enter, because it&amp;rsquo;s an array formula. Now drag this all the way down (to C17).&lt;/p&gt;
&lt;p&gt;The list in column C is dynamic. If you change a cell in column A, column C is updated. But the formula can only handle one column. Google Spreadsheets&amp;rsquo; UNIQUE function works with any number of columns. If you had data in the range A1:D100 and wanted the unique rows, UNIQUE(A1:D100) gets that for you.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://www.s-anand.net/blog/assets/flickr-14_2825546554_o-png.webp&#34;&gt;&lt;img alt=&#34;1.4&#34; loading=&#34;lazy&#34; src=&#34;https://www.s-anand.net/blog/assets/flickr-14_2825546554_o-png.webp&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Note&lt;/strong&gt;: I&amp;rsquo;m staying away from &lt;a href=&#34;https://www.s-anand.net/blog/user-defined-functions-in-excel/&#34;&gt;user defined functions&lt;/a&gt;. You could, of course, create a UNIQUE function in Excel using Visual Basic. In fact, you should!&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;comments&#34;&gt;Comments&lt;/h2&gt;
&lt;!-- wp-comments-start --&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Ken J&lt;/strong&gt; &lt;em&gt;19 Sep 2008 1:10 pm&lt;/em&gt;:
Great entry. I love your site. It is perfect for advanced users.&lt;br&gt;
&lt;br&gt;
Let&amp;rsquo;s hope Google&amp;rsquo;s pressure will force some innovation at excel.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&#34;http://www.isheet.com&#34;&gt;hk&lt;/a&gt;&lt;/strong&gt; &lt;em&gt;21 May 2009 3:30 am&lt;/em&gt;:
What about Data/Consolidate from menu?&lt;/li&gt;
&lt;/ul&gt;
&lt;!-- wp-comments-end --&gt;
</description>
    </item>
    <item>
      <title>Animated charts in Excel</title>
      <link>https://www.s-anand.net/blog/animated-charts-in-excel/</link>
      <pubDate>Tue, 19 Aug 2008 12:00:00 +0000</pubDate>
      <guid>https://www.s-anand.net/blog/animated-charts-in-excel/</guid>
      <description>&lt;p&gt;Watch &lt;a href=&#34;http://en.wikipedia.org/wiki/Hans_Rosling&#34;&gt;Hans Rosling&lt;/a&gt;&#39;s &lt;a href=&#34;http://www.ted.com/&#34;&gt;TED Talks&lt;/a&gt; on &lt;a href=&#34;http://www.ted.com/index.php/talks/hans_rosling_shows_the_best_stats_you_ve_ever_seen.html&#34;&gt;debunking third world myths&lt;/a&gt; and &lt;a href=&#34;http://www.ted.com/index.php/talks/hans_rosling_reveals_new_insights_on_poverty.html&#34;&gt;new insights on poverty&lt;/a&gt; and ask yourself: &lt;b&gt;could I do this with my own data?&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;Yes. Google has a gadget called &lt;a href=&#34;http://www.google.com/ig/directory?url=www.google.com/ig/modules/motionchart.xml&#34;&gt;MotionChart&lt;/a&gt; that lets you do this.&lt;/p&gt;
&lt;p&gt;Now, you could put this up on your web page, but that&#39;s not quite useful when presenting to a client. (It is shocking, but there are many practical problems getting an Internet connection at a client site. The room doesn&#39;t have a connection. The cable isn&#39;t long enough. You can&#39;t access the LAN. Their proxy requires authentication. The connection is too slow. Whatever.)&lt;/p&gt;
&lt;p&gt;So you need this in Excel. Let me explain a variant of the technique I described &lt;a href=&#34;https://www.s-anand.net/blog/excel-make-your-model-visually-obvious/&#34;&gt;earlier&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Let&#39;s start by creating a simple bubble chart. &lt;/p&gt;
&lt;p&gt;&lt;a title=&#34;Bubble chart&#34; href=&#34;https://www.s-anand.net/blog/assets/flickr-1-scatter_2777902130_o-png.webp&#34;&gt;&lt;img height=&#34;374&#34; alt=&#34;&#34; src=&#34;https://www.s-anand.net/blog/assets/flickr-1-scatter_2777902130_o-png.webp&#34; width=&#34;480&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;For each item in a bubble chart, you need 3 pieces of data: the X-axis, Y-axis and size. This graph shows three items A, B and C in one year: 2001. To animate this, you need data for more years, so let&#39;s create that.&lt;/p&gt;
&lt;p&gt;&lt;a title=&#34;Data for multiple years&#34; href=&#34;https://www.s-anand.net/blog/assets/flickr-2-data_2777043817_o-png.webp&#34;&gt;&lt;img height=&#34;221&#34; alt=&#34;&#34; src=&#34;https://www.s-anand.net/blog/assets/flickr-2-data_2777043817_o-png.webp&#34; width=&#34;269&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The first 3 rows contain the same data as before, except that I&#39;ve added a &amp;quot;Year&amp;quot; column and a &amp;quot;Key&amp;quot; column (which is just a concatenation of the Year and the Item). The data now goes on for many more years. &lt;/p&gt;
&lt;p&gt;Now we need to create a scroll bar that can be used to change the year. So add a scroll bar below the bubble chart...&lt;/p&gt;
&lt;p&gt;&lt;a title=&#34;Adding a Scroll Bar&#34; href=&#34;https://www.s-anand.net/blog/assets/flickr-3-format-control_2777043857_o-png.webp&#34;&gt;&lt;img height=&#34;250&#34; alt=&#34;&#34; src=&#34;https://www.s-anand.net/blog/assets/flickr-3-format-control_2777043857_o-png.webp&#34; width=&#34;496&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;... and right click the scroll bar and go to Format Control. Now, select the cell link to some cell ($H$1 in this case). Now, if you move the scroll bar, the cell value will change.&lt;/p&gt;
&lt;p&gt;&lt;a title=&#34;Scroll bar format control&#34; href=&#34;https://www.s-anand.net/blog/assets/flickr-4-link_2777902264_o-png.webp&#34;&gt;&lt;img height=&#34;469&#34; alt=&#34;&#34; src=&#34;https://www.s-anand.net/blog/assets/flickr-4-link_2777902264_o-png.webp&#34; width=&#34;497&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;All you need to do is to now change the source data for the chart based on the year. From the table on the left, VLOOKUP the year + item, and put this into the table on the right. When the year in the cell H1 changes, the data updates itself. So now, as you move the scroll bar, cell H1 changes, then so does the data and hence the graph. &lt;/p&gt;
&lt;p&gt;&lt;a title=&#34;Using VLOOKUP to change the source data&#34; href=&#34;https://www.s-anand.net/blog/assets/flickr-5-formula_2777902326_o-png.webp&#34;&gt;&lt;img height=&#34;303&#34; alt=&#34;&#34; src=&#34;https://www.s-anand.net/blog/assets/flickr-5-formula_2777902326_o-png.webp&#34; width=&#34;500&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;This is what the animation looks like.&lt;/p&gt;
&lt;object classid=&#34;clsid:D27CDB6E-AE6D-11cf-96B8-444553540000&#34; codebase=&#34;http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0&#34; width=&#34;485&#34; height=&#34;342&#34;&gt;
    &lt;param name=&#34;movie&#34; value=&#34;/gapminder.swf&#34;&gt;
    &lt;param name=&#34;quality&#34; value=&#34;high&#34;&gt;
    &lt;param name=&#34;bgcolor&#34; value=&#34;#ffffff&#34;&gt;
    &lt;embed src=&#34;https://www.s-anand.net/blog/gapminder.swf&#34; quality=high bgcolor=&#34;#ffffff&#34; width=&#34;485&#34; height=&#34;342&#34; name=&#34;Gapminder.swf&#34; type=&#34;application/x-shockwave-flash&#34; pluginspage=&#34;http://www.macromedia.com/go/getflashplayer&#34;&gt;&lt;/embed&gt;
&lt;/object&gt;
&lt;p&gt;And here&amp;rsquo;s the &lt;a href=&#34;https://files.s-anand.net/blog/a/gapminder.xls&#34;&gt;Excel file&lt;/a&gt;.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;comments&#34;&gt;Comments&lt;/h2&gt;
&lt;!-- wp-comments-start --&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;S Anand&lt;/strong&gt; &lt;em&gt;29 Jan 2009 9:47 am&lt;/em&gt;:
For this particular example, Ganesh, you&amp;rsquo;re probably better of not&lt;br&gt;
using the scheme I described. It&amp;rsquo;s probably better to reduce the data&lt;br&gt;
to fewer dimensions (e.g. in pairs: dimensions (A,B), (A,C), (B,C),&lt;br&gt;
etc.). Sorry, without a sense of what the data is about, I&amp;rsquo;m not sure&lt;br&gt;
I can think of a good way of doing this.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;S Ganesh&lt;/strong&gt; &lt;em&gt;3 Feb 2009 3:21 am&lt;/em&gt;:
Hi Anand
As I told you earlier, I came up with something like the above image. 5 processes each measured on 4 Dimensions.
I was trying to get each of these respective xl charts one on top of the other on Z-axis which could make the representation in 3D.. But I could not.
Regards
&lt;ul&gt;
&lt;li&gt;S Ganesh&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;S Anand&lt;/strong&gt; &lt;em&gt;21 Jan 2009 6:38 am&lt;/em&gt;:
I think it would depend on the dimensions, SG. The best way of modelling up&lt;br&gt;
to 4 dimensions I&amp;rsquo;ve seen are using Hans Rosling&amp;rsquo;s charts at gapminder.org.&lt;br&gt;
But you&amp;rsquo;d need the 4 dimensions to be mappable to X, Y, size and time.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;SG&lt;/strong&gt; &lt;em&gt;21 Jan 2009 7:03 am&lt;/em&gt;:
Thanks Anand for the immediate response. A bit more to explain myself.&lt;br&gt;
&lt;br&gt;
The things that I would like to depict are these.&lt;br&gt;
To model the system A, I have 4 dimensions each with varying weights. The response score for each dimension is expressed as %. In bubble chart terms- Say, one of the dimension is represented as a bubble, then the outer circle diameter denote the Relative weight of the dimension and a circle inside denote the actual score.&lt;br&gt;
&lt;br&gt;
Roughly, I visualize to represent the Model as a stack for 4 bubbles (dimmensions)one on top of other. something like a 3D color model&lt;br&gt;
&lt;br&gt;
In the example, that you referred.. Size and time are something which is common to X and Y..&lt;br&gt;
&lt;br&gt;
Thanks&lt;br&gt;
Ganesh S&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;l b&lt;/strong&gt; &lt;em&gt;13 Nov 2008 12:16 pm&lt;/em&gt;:
size can be the annual sales value of a product&lt;br&gt;
x can be year&lt;br&gt;
y growth&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Shaun&lt;/strong&gt; &lt;em&gt;24 Nov 2008 10:18 am&lt;/em&gt;:
Hi. Very useful way of doing this - thanks!&lt;br&gt;
&lt;br&gt;
Is there any way to automate the scroll bar so that I can click just one button and the graph updates itself automatically?&lt;br&gt;
&lt;br&gt;
Thanks&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Theertharao n&lt;/strong&gt; &lt;em&gt;8 Dec 2008 2:44 am&lt;/em&gt;:
very nice and simple&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;SG&lt;/strong&gt; &lt;em&gt;21 Jan 2009 6:27 am&lt;/em&gt;:
Hi Anand,&lt;br&gt;
&lt;br&gt;
This is very nice, I landed on this page googling for something I wanted for in xl charting.&lt;br&gt;
&lt;br&gt;
Can you help ? I am trying to model a &amp;ldquo;System A&amp;rdquo;. I have 4 identified dimensions D1, D2, D3, D4 for it, each on a scale of say, 1 to 400.&lt;br&gt;
&lt;br&gt;
I wanted to represent them in one composite chart to show, this is how the &amp;ldquo;System A&amp;rdquo; looks like. Is there anyway out ?&lt;br&gt;
&lt;br&gt;
Thanks&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Thejesh GN&lt;/strong&gt; &lt;em&gt;20 Aug 2008 2:45 am&lt;/em&gt;:
cool tip. I will use it.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Sundar R&lt;/strong&gt; &lt;em&gt;1 Sep 2008 8:20 pm&lt;/em&gt;:
Does this method work only in MS Excel 2007? I am using MS Excel 2003 and I was not able to get the &amp;ldquo;Control&amp;rdquo; tab in the properties of the scroll bar.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;S Anand&lt;/strong&gt; &lt;em&gt;2 Sep 2008 12:11 am&lt;/em&gt;:
@Sundar: It works on Excel 2003 as well, except I&amp;rsquo;m not sure what the menu shortcuts are.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Sundar R&lt;/strong&gt; &lt;em&gt;3 Sep 2008 12:16 am&lt;/em&gt;:
After some googling I found out the problem: There are scroll bar object in both &amp;ldquo;Control toolbox&amp;rdquo; and &amp;ldquo;Forms&amp;rdquo; tool bars. The scroll bar in the &amp;ldquo;Control toolbox&amp;rdquo; does not have the &amp;ldquo;Control&amp;rdquo; tab in its properties. The scroll bar in the &amp;ldquo;Forms&amp;rdquo; does have the &amp;ldquo;Control&amp;rdquo; tab in its properties. I was adding the scroll bar object from the Control toolbox toolbar. That&amp;rsquo;s the reason I was not able to get it working earlier.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Sridhar&lt;/strong&gt; &lt;em&gt;17 Sep 2008 10:06 am&lt;/em&gt;:
I don&amp;rsquo;t understand what the &amp;ldquo;size&amp;rdquo; could be in the data.. can u help?&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;S Anand&lt;/strong&gt; &lt;em&gt;17 Sep 2008 11:09 am&lt;/em&gt;:
@Sridhar: The size is the radius of the circles. You&amp;rsquo;ll notice that this changes in the animation as well. Initially, the circles are of the same size, but over time, they become bigger or smaller.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&#34;http://www.animatexl.com&#34;&gt;Phil&lt;/a&gt;&lt;/strong&gt; &lt;em&gt;13 Oct 2009 4:31 pm&lt;/em&gt;:
Hi there,
I&amp;rsquo;ve created a little Excel add-in that does a similar thing, but without the need for adding controls to your Excel worksheet. The user simply creates a table of data, creates a chart from the top row of the table and then uses the add-in&amp;rsquo;s menu to run the animation.
It is free - for now at least :) - and can be downloaded from my website - &lt;a href=&#34;http://www.animatexl.com&#34;&gt;http://www.animatexl.com&lt;/a&gt;.
I&amp;rsquo;d be very interested to know what anyone thinks of it.
Regards
Phil.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Mercy&lt;/strong&gt; &lt;em&gt;12 Aug 2010 2:59 am&lt;/em&gt;:
Hi -
Your idea is so fantastic!
I am trying to use it with a line/area graph, and it is more or less taking shape - got all the filters and vlookups all in place like you recommended; I even put in place 3 scroll bars so that it is now a dynamic graph that is getting controlled by 3 different variables.
The only thing I wondered about was how to get the scroll bar to display the value of its position as it is getting scrolled.
Also I wanted to display the variable names that each of the scroll bars are representing and their max and min points.
I ma sure there is some VB code that can be pasted somewhere - but I needed to get this done by tomorrow, so I&amp;rsquo;m writing this SOS in the hope you&amp;rsquo;ll read.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ash&lt;/strong&gt; &lt;em&gt;4 May 2010 5:19 pm&lt;/em&gt;:
Hi everyone,
Ive been playing about with this technique (which is highly appreciated by the way). For anyone working with percentages, i.e. you want the slider to affect a percentage scoring, you need to do this in a different way (or so I have found - if anyone has a simpler way of doing this, please post).
Since Excel stores a percentage number as a decimal (e.g. 10% is stored as 0.1), you will need to have a separate reference cell to that where the percentage is stored.
For example, in cell A2, type the number 5.
In cell A1, Type &amp;rsquo; =A2/100&amp;rsquo; and then change the cell format to Percentage.
Add in the slider and set the parameters as per the instructions above, making the cell reference A2, minimum value 0, and maximum value 10.
The slider will now change the percentage by increments of 10%
To get greater accuracy, change the formula in cell A1 to reflect how many decimals you wish to go to. For example, for 1 d.p. use &amp;rsquo; =A2/1000&amp;rsquo;, for 2d.p. use &amp;rsquo; =A2/10000.
You will also need to change the parameters in the maximum/minimum values in the slider control options to allow you to reach 100%. You will see what i mean once you play about with it.
Ash&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Mercy&lt;/strong&gt; &lt;em&gt;12 Aug 2010 3:00 am&lt;/em&gt;:
Thanks, meanwhile for this really helpful website.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;LexiK&lt;/strong&gt; &lt;em&gt;15 Jun 2012 12:20 pm&lt;/em&gt;:
These are amazing, thanks!
Just a quick query-I can build these in excel no problem, however, if I try to build the same within an excel macro-enabled insert in powerpoint although if I manually scroll along the bar, the graphics change, they don&amp;rsquo;t seem to when the scroll is moved by the &amp;lsquo;play&amp;rsquo; button. Any ideas as to how to get around this?&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&#34;http://excelhero.com/blog/&#34;&gt;Daniel Ferry&lt;/a&gt;&lt;/strong&gt; &lt;em&gt;18 May 2011 6:08 pm&lt;/em&gt;:
Hello.
I just found your site. I thought you might be interested in the dozens of Excel animated charts on my blog:
&lt;a href=&#34;http://www.excelhero.com/blog/2010/05/animated-business-chart.html&#34;&gt;http://www.excelhero.com/blog/2010/05/animated-business-chart.html&lt;/a&gt;
Kind regards,
Daniel Ferry
Excel Hero Academy&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Arun&lt;/strong&gt; &lt;em&gt;1 Jan 2012 5:21 am&lt;/em&gt;:
This is not working with the months level data , as numerical conversion of the months not possible , pl help&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;vinoth&lt;/strong&gt; &lt;em&gt;11 Aug 2012 4:23 am&lt;/em&gt;:
whether the animation will work if i copy it in ppt.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Gustavo&lt;/strong&gt; &lt;em&gt;16 Feb 2014 5:11 pm&lt;/em&gt;:
Hi Anand,
Do you know if this works with Excel for Mac or Numbers? I use Excel for Mac and get an error for the animation button when it looks for Kernes32, I&amp;rsquo;m using your data for the animated chart where you inserted a button with code.
thanks in advance&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Jayan&lt;/strong&gt; &lt;em&gt;6 Feb 2019 12:58 pm&lt;/em&gt;:
Hi Ananad. Your blog on bubble chart was very useful and I Created a test case bubble chart. It work fine in when using the scroll bar, however when executing the vba script using the play button it doesn&amp;rsquo;t work. The excel data are changing as per the dimension, however the bubble charts not moving as they moves in scroll bar. Could you kindly advise&amp;hellip;please&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;David Ashley&lt;/strong&gt; &lt;em&gt;22 Apr 2020 8:39 pm&lt;/em&gt;:
Hi Anand -
I am using the code for the animated bubble charts. I don’t know what the “Sleep (100)” is for as I keep getting an error (compile error sub or function not defined) related to that when I run the script. It highlights “Sleep” in the error. Thanks for any help you can provide.&lt;/li&gt;
&lt;/ul&gt;
&lt;!-- wp-comments-end --&gt;
</description>
    </item>
    <item>
      <title>RSS feeds in Excel</title>
      <link>https://www.s-anand.net/blog/rss-feeds-in-excel/</link>
      <pubDate>Thu, 03 May 2007 12:00:00 +0000</pubDate>
      <guid>https://www.s-anand.net/blog/rss-feeds-in-excel/</guid>
      <description>&lt;p&gt;The technique of &lt;a href=&#34;https://www.s-anand.net/blog/web-lookup-using-excel/&#34;&gt;Web lookups in Excel&lt;/a&gt; I described yesterday is very versatile. I will be running through some of the practical uses it can be put to over the next few days&lt;/p&gt;
&lt;p&gt;TO generalise things beyond just &lt;a href=&#34;https://www.s-anand.net/blog/web-lookup-using-excel/&#34;&gt;getting the Amazon price&lt;/a&gt;, I created a &lt;a href=&#34;https://www.s-anand.net/blog/user-defined-functions-in-excel/&#34;&gt;user-defined function&lt;/a&gt; called XPATH. It takes two parameters:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;URL&lt;/strong&gt; of the XML feed to read&lt;br&gt;
&lt;strong&gt;Search&lt;/strong&gt; XPath list string (separated by spaces)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;This function can be used to extract information out of any XML file on the Web and get it out as a table. For example, if you wanted to watch the Top 10 movies on the &lt;a href=&#34;http://www.imdb.com/chart/top&#34;&gt;IMDb Top 250&lt;/a&gt;, and were looking for torrents, an RSS feed is available from &lt;a href=&#34;http://www.mininova.org/&#34;&gt;mininova&lt;/a&gt;. The URL &lt;a href=&#34;http://www.mininova.org/rss/movie&#34;&gt;http://www.mininova.org/rss/movie&lt;/a&gt;_name/4 gives you an RSS file matching all movies with &amp;ldquo;movie_name&amp;rdquo;. From this, we need to extract the &lt;item&gt;&lt;title&gt; and &lt;item&gt;&lt;link&gt; elements. That&amp;rsquo;s represented by &amp;ldquo;//item title link&amp;rdquo; on my search string.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://www.s-anand.net/blog/assets/flickr-mininova-rss-feed-in-excel_482789516_o-png.webp&#34;&gt;&lt;img alt=&#34;Mininova RSS feed in Excel&#34; loading=&#34;lazy&#34; src=&#34;https://www.s-anand.net/blog/assets/flickr-mininova-rss-feed-in-excel_482789516_o-png.webp&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The formula becomes &lt;code&gt;XPath2( &amp;quot;http://www.mininova.org/rss/&amp;quot;&amp;amp;A2&amp;amp;&amp;quot;/4&amp;quot;, &amp;quot;//item title link&amp;quot;)&lt;/code&gt;. The result is a 2-dimensional array returning individual items in rows, and the columns are title and link. Pulling it all together, you can get the sheet above.&lt;/p&gt;
&lt;p&gt;All of this could be done using a command-line program. Excel has one huge advantage though. It&amp;rsquo;s one of the most powerful user-interfaces. Increasingly, I&amp;rsquo;m beginning to rely on just two user interfaces for almost any task. One is the browser, and the other is Excel. With Excel, I could have a sheet that has my &lt;a href=&#34;https://www.s-anand.net/blog/wishlist-for-movies/&#34;&gt;movie wishlist&lt;/a&gt; (which changes often), and add check to see if the torrent exists. Every time I add a bunch of movies to the wishlist, it&amp;rsquo;s just a matter of copying the formula down. No need to visit a torrent search engine and typing each movie in, one by one.&lt;/p&gt;
&lt;p&gt;Another example. Someone suggests 10 movies to watch. I&amp;rsquo;d rather watch the ones with a higher IMDb rating. Again, enter the Web lookup. Type in the movie names. Use a function like this to look up the rating on IMDb, and sort by the rating.&lt;/p&gt;
&lt;p&gt;The possibilities are endless.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;comments&#34;&gt;Comments&lt;/h2&gt;
&lt;!-- wp-comments-start --&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Isit?&lt;/strong&gt; &lt;em&gt;3 May 2007 12:00 pm&lt;/em&gt;:
Is it possible to have the feeds update cumulative so the old feeds dont get replaced in excel?&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Alex&lt;/strong&gt; &lt;em&gt;3 May 2007 12:00 pm&lt;/em&gt;:
Hi, I have an Excel spreadsheet with URLs of move titles on IMDB, and I would like to retrieve the movie rating. I&amp;rsquo;ve read your tutorials, and this one comes closest to what I need. However I still cannot figure out what needs to be done. It looks like you have this problem solved. If so, can you possibly share your solution with me? Thank you, Alex&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Kishan&lt;/strong&gt; &lt;em&gt;3 May 2007 12:00 pm&lt;/em&gt;:
I came here searching for the other way round. That is to publish an RSS feed of what I have in Xcel! Thanks Anyways&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;venkat&lt;/strong&gt; &lt;em&gt;15 Oct 2010 4:09 pm&lt;/em&gt;:
Anand
Can you provide the xpath function?, I need to read a rss feed into excel, and i want only some columns of data, i would appreciate if you could send the xpath function to my email id
Thanks
venkat&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&#34;http://www.light-sensors.com&#34;&gt;Light Sensors&lt;/a&gt;&lt;/strong&gt; &lt;em&gt;2 Dec 2010 7:08 pm&lt;/em&gt;:
movie ratings really depend on how cool the movie is, i usually rate movies depending on the story line `-;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;rt&lt;/strong&gt; &lt;em&gt;27 Jun 2013 5:41 pm&lt;/em&gt;:
Hi, nice job ! can you share with me your xpath2 (i tried your other one without succes on amazon) ?Thanks, R&lt;/li&gt;
&lt;/ul&gt;
&lt;!-- wp-comments-end --&gt;
</description>
    </item>
    <item>
      <title>Web lookup using Excel</title>
      <link>https://www.s-anand.net/blog/web-lookup-using-excel/</link>
      <pubDate>Thu, 03 May 2007 12:00:00 +0000</pubDate>
      <guid>https://www.s-anand.net/blog/web-lookup-using-excel/</guid>
      <description>&lt;p&gt;Take a look at the Excel screenshot below.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://www.s-anand.net/blog/assets/flickr-amazon-web-prices_481952444_o-png.webp&#34;&gt;&lt;img alt=&#34;Amazon Web Prices&#34; loading=&#34;lazy&#34; src=&#34;https://www.s-anand.net/blog/assets/flickr-amazon-web-prices_481952444_o-png.webp&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Yes, that&amp;rsquo;s right. I have a &lt;a href=&#34;https://www.s-anand.net/blog/user-defined-functions-in-excel/&#34;&gt;user-defined function&lt;/a&gt; called AMAZONPRICE. And it returns these cameras&amp;rsquo; &lt;strong&gt;prices directly from Amazon.com&lt;/strong&gt;. (Given the category and some keywords, it returns the price of the bestselling item on Amazon.com.)&lt;/p&gt;
&lt;p&gt;Here&amp;rsquo;s the code behind the function.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-javascript&#34; data-lang=&#34;javascript&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;Function&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;AmazonPrice&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;index&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;As&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;String&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;keywords&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;As&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;String&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;As&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;String&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nx&#34;&gt;Dim&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;xDoc&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;As&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;MSXML2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;DOMDocument30&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nx&#34;&gt;Set&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;xDoc&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;New&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;MSXML2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;DOMDocument30&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nx&#34;&gt;xDoc&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;kr&#34;&gt;async&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;False&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nx&#34;&gt;If&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;xDoc&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;Load&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;http://ecs.amazonaws.com/onca/xml?Service=AWSECommerceService&amp;#34;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;_&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;s2&#34;&gt;&amp;#34;&amp;amp;Version=2005-03-23&amp;amp;Operation=ItemSearch&amp;amp;SubscriptionId=03SDGQDFEB455W53SB82&amp;#34;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;_&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;s2&#34;&gt;&amp;#34;&amp;amp;AssociateTag=sanand-20&amp;amp;MinimumPrice=10000&amp;amp;ResponseGroup=OfferSummary,Small&amp;#34;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;_&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;s2&#34;&gt;&amp;#34;&amp;amp;Sort=salesrank&amp;amp;SearchIndex=&amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;amp;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;index&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;amp;&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&amp;amp;Keywords=&amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;amp;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;keywords&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;Then&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nx&#34;&gt;xDoc&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;setProperty&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;SelectionLanguage&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;XPath&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nx&#34;&gt;xDoc&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;setProperty&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;SelectionNamespaces&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;_&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;s2&#34;&gt;&amp;#34;xmlns:a=&amp;#34;&amp;#34;http://webservices.amazon.com/AWSECommerceService/2005-03-23&amp;#34;&amp;#34;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nx&#34;&gt;AmazonPrice&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;xDoc&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;selectSingleNode&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;/a:ItemSearchResponse//a:Amount&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;).&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;Text&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nx&#34;&gt;End&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;If&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;End&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;Function&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;hr&gt;
&lt;p&gt;This is how it all started&amp;hellip;&lt;/p&gt;
&lt;p&gt;Flickr has a &lt;a href=&#34;http://www.flickr.com/cameras/&#34;&gt;camera finder&lt;/a&gt; that shows the most popular cameras in the Flickr community.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://www.s-anand.net/blog/assets/flickr-flickr-camera-finder_481952446_o-png.webp&#34;&gt;&lt;img alt=&#34;flickr Camera Finder&#34; loading=&#34;lazy&#34; src=&#34;https://www.s-anand.net/blog/assets/flickr-flickr-camera-finder_481952446_o-png.webp&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I &lt;a href=&#34;https://www.s-anand.net/blog/how-i-buy-gadgets/&#34;&gt;love comparing gadgets&lt;/a&gt;, I&amp;rsquo;d been doing some research around these cameras, and the &lt;a href=&#34;http://www.flickr.com/cameras/fujifilm/&#34;&gt;Fuji series&lt;/a&gt; (because I own a &lt;a href=&#34;https://www.s-anand.net/blog/my-fuji-finepix-s5600/&#34;&gt;Fuji Finepix S5600&lt;/a&gt;). I&amp;rsquo;d normally make a spreadsheet that compares these cameras on various parameters, including price.&lt;/p&gt;
&lt;p&gt;Since I believe in &lt;a href=&#34;https://www.s-anand.net/blog/excel-never-type-in-data/&#34;&gt;never typing in data&lt;/a&gt;, wondered if there was a way to get the prices in automatically&amp;hellip;&lt;/p&gt;
&lt;p&gt;Two things made this possible.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Amazon offers &lt;a href=&#34;http://www.amazon.com/gp/browse.html?node=3435361&#34;&gt;web services&lt;/a&gt; which let you get price (and almost any other) data for their products&lt;/li&gt;
&lt;li&gt;Visual Basic lets you use pretty much any ActiveX object as a control. Microsoft offers &lt;a href=&#34;http://msdn2.microsoft.com/en-us/xml/bb291077.aspx&#34;&gt;MSXML&lt;/a&gt; which you can use to load (or download) any XML file, and parse it.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The first task is to get the XML feed for a product you want. Amazon lets you do that through by typing in a URL. The best way to construct the URL is through &lt;a href=&#34;http://www.awszone.com/&#34;&gt;AWSZone&lt;/a&gt;. I picked the &lt;a href=&#34;http://www.awszone.com/scratchpads/aws/ecs.us/ItemSearch.aws&#34;&gt;US ItemSearch&lt;/a&gt; method, which searches for a title or keyword within a category, and returns the matches. The feed for the Canon EOS Digital Rebel XT, based on this, would be at:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;http://ecs.amazonaws.com/onca/xml?
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    Service=AWSECommerceService&amp;amp;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    Version=2005-03-23&amp;amp;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    Operation=ItemSearch&amp;amp;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    SubscriptionId=0525E2PQ81DD7ZTWTK82&amp;amp;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    SearchIndex=Electronics&amp;amp;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    Keywords=Canon EOS Digital Rebel XT&amp;amp;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    Sort=salesrank&amp;amp;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    ResponseGroup=Offers,Small
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;(You really need to replace the Subscription ID with your own.)&lt;/p&gt;
&lt;p&gt;If you &lt;a href=&#34;http://ecs.amazonaws.com/onca/xml?Service=AWSECommerceService&amp;amp;Version=2005-03-23&amp;amp;Operation=ItemSearch&amp;amp;SubscriptionId=0525E2PQ81DD7ZTWTK82&amp;amp;SearchIndex=Electronics&amp;amp;Keywords=Canon%20EOS%20Digital%20Rebel%20XT&amp;amp;Sort=salesrank&amp;amp;ResponseGroup=Offers,Small&#34;&gt;retrieved this URL&lt;/a&gt;, you have an XML file containing the details of all Canon EOS Digital Rebel XTs, sorted by sales rank.&lt;/p&gt;
&lt;p&gt;To load this in Excel, you need to create a &lt;a href=&#34;https://www.s-anand.net/blog/user-defined-functions-in-excel/&#34;&gt;UDF&lt;/a&gt; in Visual Basic. First, go to &lt;strong&gt;Tools - References and enable Microsoft XML, v3.0 or v4.0&lt;/strong&gt;. Now, to load an XML document, do this:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-vb&#34; data-lang=&#34;vb&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;Dim&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;xDoc&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;As&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;MSXML2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;DOMDocument30&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;Set&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;xDoc&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;New&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;MSXML2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;DOMDocument30&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;xDoc&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;async&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;False&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;xDoc&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Load&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;url&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;If the load succeeds, then you can extract the information fairly easily, using &lt;a href=&#34;http://www.w3.org/TR/xpath&#34;&gt;XPath&lt;/a&gt;.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-vb&#34; data-lang=&#34;vb&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;xDoc&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;setProperty&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;SelectionLanguage&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;XPath&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;xDoc&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;setProperty&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;SelectionNamespaces&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; _
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;s&#34;&gt;&amp;#34;xmlns:a=&amp;#34;&amp;#34;http://webservices.amazon.com/AWSECommerceService/2005-03-23&amp;#34;&amp;#34;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The first line says we&amp;rsquo;ll be searching using XPath. The second line is a &lt;a href=&#34;http://support.microsoft.com/kb/313372&#34;&gt;workaround to support default namespaces&lt;/a&gt;. (Don&amp;rsquo;t worry about it. I don&amp;rsquo;t quite get it either.)&lt;/p&gt;
&lt;p&gt;Finally, you get the price from the XML tree. In this case, it&amp;rsquo;s under ItemSearchResponse/Items/Item/OfferSummary/LowestNewPrice/Amount, and it&amp;rsquo;s in cents.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-vb&#34; data-lang=&#34;vb&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;AmazonPrice&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;xDoc&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;selectSingleNode&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;/a:ItemSearchResponse//a:Amount&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;).&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Text&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;That&amp;rsquo;s it! Now that this function is defined, just pass it the category and keywords, and you have the price of the first matching product. You can retrieve any other information about products as well &amp;ndash; like sales rank, weight, ratings, reviews, etc.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Here&amp;rsquo;s the &lt;a href=&#34;https://files.s-anand.net/blog/a/AmazonPrices.xls&#34;&gt;spreadsheet&lt;/a&gt; for you to play around with.&lt;/p&gt;
&lt;hr&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://www.amazon.com/gp/product/0764540726&#34;&gt;Excel 2003 Power Programming with VBA (Excel Power Programming With Vba&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://www.amazon.com/gp/product/0596003595&#34;&gt;Writing Excel Macros with VBA, 2nd Edition&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&#34;comments&#34;&gt;Comments&lt;/h2&gt;
&lt;!-- wp-comments-start --&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Saurabh&lt;/strong&gt; &lt;em&gt;3 May 2007 7:38 am&lt;/em&gt;:
There is a simpler way as well. Use Data-&amp;gt;Import External Data-&amp;gt;New Web Query. While this is not as powerful as the user defined function that you have created, but definitely a good starting point for lesser geeks :) I use this, for example, to have a dashboard kind of view for the status of the multiple projects that I handle at my work. We rely heavily on Microsoft Sharepoint at work, and using the Web Query option, I can easily get a snapshot of the status of various projects. Same can also fetch shareprices from various websites.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;S Anand&lt;/strong&gt; &lt;em&gt;3 May 2007 8:16 am&lt;/em&gt;:
Good point, Saurabh! Web Query does make getting stuff out of HTML very easy. My function operates in a different domain, though. It can access XML, which Web Query won&amp;rsquo;t, but can&amp;rsquo;t access HTML, which Web Query does. I&amp;rsquo;m planning a few more posts on how to extend this concept&amp;hellip; that will explain what I mean.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;rick sherrin&lt;/strong&gt; &lt;em&gt;3 May 2007 12:00 pm&lt;/em&gt;:
Hi, I work at a public library, in the acquisitions department. The majority of the work is manually keying in order information (that is available electronically elsewhere). I read your article about using Excel to retrieve amazon information. This is something that would be very useful to our library and would make my job easier. I have a little excel knowledge, but I have no experience with visual basic or xml, etc. So although it looks straightforward, it is still out of my reach. I would like to be able to enter a column of ISBN numbers in one column, and retrieve title, author, publisher, price, reviews, synopsis, cover image, in adjacent columns. I would appreciate your help if you would give me an example of how I could easily do this. Thanks Rick&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;dat&lt;/strong&gt; &lt;em&gt;12 Aug 2008 8:10 am&lt;/em&gt;:
useful article!
Btw, how do I retrieve other info from amazon (published date, sales rank, customer review, etc)???
thanks&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;S Anand&lt;/strong&gt; &lt;em&gt;13 Aug 2008 2:15 am&lt;/em&gt;:
@dat: Have a look at &lt;a href=&#34;http://www.awszone.com/&#34;&gt;http://www.awszone.com/&lt;/a&gt; for examples on other parameters.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Lydia&lt;/strong&gt; &lt;em&gt;3 May 2010 12:05 am&lt;/em&gt;:
this worked until august last year when amazon changed the way the query signs into their system&amp;hellip;it now requires a signature with a timestamp in addition to the subscription ID&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Bobby Baker&lt;/strong&gt; &lt;em&gt;10 Feb 2015 7:09 am&lt;/em&gt;:
Have you updated the search functions for this or do you have a new code for this?&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Vlad&lt;/strong&gt; &lt;em&gt;26 Aug 2015 10:00 pm&lt;/em&gt;:
Hey Annand
is it possible o get the racking status fro fedex for a column of tracking numbers?&lt;/li&gt;
&lt;/ul&gt;
&lt;!-- wp-comments-end --&gt;
</description>
    </item>
    <item>
      <title>User defined array functions in Excel</title>
      <link>https://www.s-anand.net/blog/user-defined-array-functions-in-excel/</link>
      <pubDate>Fri, 23 Feb 2007 12:00:00 +0000</pubDate>
      <guid>https://www.s-anand.net/blog/user-defined-array-functions-in-excel/</guid>
      <description>&lt;p&gt;Many languages have functions to process lists (array). These functions usually return a list, so you can pass that to another list function. This chaining of functions is really powerful.&lt;/p&gt;
&lt;p&gt;UNIX provides this sort of chaining capability. If I had a cities (with some repetitions) and I wanted to find out how many started with the letter &amp;lsquo;A&amp;rsquo;, I&amp;rsquo;d just type:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cat cities &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; sort &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; uniq &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; grep &lt;span class=&#34;s2&#34;&gt;&amp;#34;^A&amp;#34;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; wc
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;cat&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;types the cities.&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;sort&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;sorts the cities alphabetically.&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;uniq&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;finds unique cities (works only if sorted - that&amp;#39;s why we had to sort the list).&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;grep&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;filters the cities. Only allows cities beginning with A.&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;wc&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;word count&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;To do this on Excel, the only way is to&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;get the unique values&lt;/strong&gt;. Data - Filter - Advanced Filter, and select &amp;ldquo;Unique records only&amp;rdquo;, &amp;ldquo;Copy the list to another location&amp;rdquo;, and select a location&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;get the first letter&lt;/strong&gt;. =LEFT(cell,1) returns the first letter of the cell.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;count the number of &amp;ldquo;A&amp;quot;s&lt;/strong&gt;. =COUNT(range, &amp;ldquo;A&amp;rdquo;) counts the number of &amp;ldquo;A&amp;quot;s.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;But ideally, I&amp;rsquo;d like a 1-line formula like&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code class=&#34;language-excel&#34; data-lang=&#34;excel&#34;&gt;=LENGTH(UNIQUE(GREP(&amp;#34;^A&amp;#34;, range)))
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Excel doesn&amp;rsquo;t provide these functions by default, but you can add them as &lt;a href=&#34;https://www.s-anand.net/blog/user-defined-functions-in-excel/&#34;&gt;user defined functions&lt;/a&gt;. Doing this &lt;strong&gt;lets you condense several cells into one&lt;/strong&gt;. Instead of having to copy all your data into a set of unique values, and then adding a column for the first cell, the entire operation can be condensed into one formula.&lt;/p&gt;
&lt;p&gt;I consider the following functions the a basic set for list processing.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;LENGTH(list) counts the number of elements in a list&lt;/li&gt;
&lt;li&gt;INDEX(list, n) returns the nth element of the list&lt;/li&gt;
&lt;li&gt;GREP(string, list) returns elements of the list that have the string&lt;/li&gt;
&lt;li&gt;UNIQUE(list) filters unique values&lt;/li&gt;
&lt;li&gt;UNION(list, list) returns elements in at least one of the lists&lt;/li&gt;
&lt;li&gt;INTERSECTION(list, list) returns elements in both lists&lt;/li&gt;
&lt;li&gt;DIFFERENCE(list, list) returns the elements in the first list but not the second&lt;/li&gt;
&lt;li&gt;REVERSE(list) reverses the order of the list&lt;/li&gt;
&lt;li&gt;STRJOIN(separator, list) joins the elements of the list into a string, separated by a separator&lt;/li&gt;
&lt;li&gt;STRSPLIT(separator, string) splits the string into a list, using a separator&lt;/li&gt;
&lt;li&gt;MVLOOKUP(value, lookup, result) looks up value in &amp;ldquo;lookup&amp;rdquo;, and returns the corresponding MULTIPLE values from &amp;ldquo;result&amp;rdquo;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I created these UDFs. You can &lt;a href=&#34;https://files.s-anand.net/blog/a/Macros.xls&#34;&gt;download the functions&lt;/a&gt; and play with them. Below are some tasks that you can do with them, that are difficult otherwise.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Get the file name from a path.
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code class=&#34;language-excel&#34; data-lang=&#34;excel&#34;&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;=INDEX(REVERSE(STRSPLIT(&amp;rdquo;&amp;quot;, filename)), 1)&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;- Count the number of unique elements in a range.
  ```excel
=LENGTH(UNIQUE(range))
&lt;/code&gt;&lt;/pre&gt;&lt;ul&gt;
&lt;li&gt;How many common elements are there in range 1 and range 2?
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code class=&#34;language-excel&#34; data-lang=&#34;excel&#34;&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;=LENGTH(INTERSECTION(range1, range2))&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;- How many words are there in a string?
  ```excel
=LENGTH(STRSPLIT(&amp;#34; &amp;#34;, string))
&lt;/code&gt;&lt;/pre&gt;&lt;ul&gt;
&lt;li&gt;Get the smallest unique numbers in a range
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code class=&#34;language-excel&#34; data-lang=&#34;excel&#34;&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;=SMALL(UNIQUE(range), 5)&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;- Count the number of mismatches between two lists.
  ```excel
=COUNT(Range1)+COUNT(Range2) - COUNT(INTERSECTION(Range1,Range2))
&lt;/code&gt;&lt;/pre&gt;&lt;ul&gt;
&lt;li&gt;Get a list of mismatches between two lists.
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code class=&#34;language-excel&#34; data-lang=&#34;excel&#34;&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;=STRJOIN(&amp;rdquo;,&amp;quot;,UNION(DIFFERENCE(Range1,Range2), DIFFERENCE(Range2,Range1)))&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;- Count duplicate entries in a range.
  ```excel
=LENGTH(Range)-LENGTH(UNIQUE(Range))
&lt;/code&gt;&lt;/pre&gt;&lt;ul&gt;
&lt;li&gt;VLOOKUP multiple values
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code class=&#34;language-excel&#34; data-lang=&#34;excel&#34;&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;=MVLOOKUP(A1,Lookup_Range,Return_Range)&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;- Count the unique matches in a VLOOKUP
  ```excel
=COUNT(UNIQUE(MVLOOKUP(A1,Lookup_Range,Return_Range)
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;This is a small sample. The power of list processing is phenomenal, especially when combined with array formulas. &lt;a href=&#34;https://files.s-anand.net/blog/a/Macros.xls&#34;&gt;Download these macros&lt;/a&gt; and play with them!&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;comments&#34;&gt;Comments&lt;/h2&gt;
&lt;!-- wp-comments-start --&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Krishna&lt;/strong&gt; &lt;em&gt;24 Feb 2007 4:10 am&lt;/em&gt;:
Anand, thanks for an extremely useful stuff.In connection to our discussion on enhancing my excel skills, i think it would help me largely. Krishna&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Sundar&lt;/strong&gt; &lt;em&gt;26 Feb 2007 4:06 am&lt;/em&gt;:
Very neat job Anand. Congrats for a super job. Waht is your e-mail address? Thanx in advance&amp;hellip;&amp;hellip;&amp;hellip;&amp;hellip;S.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Anand Srini&lt;/strong&gt; &lt;em&gt;26 Feb 2007 9:40 pm&lt;/em&gt;:
Hi I reproduce this extract from your article &amp;ldquo;Instead of having to copy all your data into a set of unique values, and then adding a column for the first cell, the entire operation can be condensed into one formula&amp;rdquo; can you explain why a column has to be added for the first cell ?&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;ashwin&lt;/strong&gt; &lt;em&gt;27 Feb 2007 4:41 pm&lt;/em&gt;:
Dear Anand, As usual; another useful post from you. Thanks, Ashwin&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Kabir&lt;/strong&gt; &lt;em&gt;5 Mar 2007 9:01 pm&lt;/em&gt;:
you truly are a genius&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Shiva&lt;/strong&gt; &lt;em&gt;6 Mar 2007 2:03 pm&lt;/em&gt;:
Your site is turning to a Dexters Laboratory&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ramly&lt;/strong&gt; &lt;em&gt;19 Mar 2007 4:35 pm&lt;/em&gt;:
Thank you very much this will help a lot&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Mansi&lt;/strong&gt; &lt;em&gt;11 Apr 2007 4:22 am&lt;/em&gt;:
Hi, was just randomly searching for how to generate unique values on excel.. and came across your website. Must say, truly impressive work and this has helped me a lot! Thank you and keep up the good work! :)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;James&lt;/strong&gt; &lt;em&gt;23 Feb 2007 12:00 pm&lt;/em&gt;:
Cheers, a lot of great stuff here, makes my Excel work much easier. My hat off to you!&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Pete Watkins&lt;/strong&gt; &lt;em&gt;23 Feb 2007 12:00 pm&lt;/em&gt;:
Thanks ever so much for your work in developing these functions, as these have allowed me to avoid a huge amount of drudgery in processing data!&lt;/li&gt;
&lt;/ul&gt;
&lt;!-- wp-comments-end --&gt;
</description>
    </item>
    <item>
      <title>How to discover new functions in Excel</title>
      <link>https://www.s-anand.net/blog/how-to-discover-new-functions-in-excel/</link>
      <pubDate>Sat, 13 Jan 2007 12:00:00 +0000</pubDate>
      <guid>https://www.s-anand.net/blog/how-to-discover-new-functions-in-excel/</guid>
      <description>&lt;p&gt;Firstly, believe that &lt;strong&gt;Excel can do anything&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;It&amp;rsquo;s true. Excel is a &lt;a href=&#34;http://research.microsoft.com/~simonpj/Papers/excel/&#34;&gt;functional programming language&lt;/a&gt;. Not with the same power as some programming languages, maybe. But power is just a way of making a little go a long way (&lt;a href=&#34;http://www.paulgraham.com/power.html&#34;&gt;power = succinctness&lt;/a&gt;, according to Paul Graham). And Fred Brooks, in &lt;a href=&#34;http://www-inst.eecs.berkeley.edu/~maratb/readings/NoSilverBullet.html&#34;&gt;No Silver Bullet&lt;/a&gt;, argues:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;I believe the single most powerful software-productivity strategy for many organizations today is to equip the computer-naive intellectual workers who are on the firing line with personal computers and good generalized writing, drawing, file, and spreadsheet programs and then to turn them loose.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Next, believe that &lt;strong&gt;Excel probably already has the function&lt;/strong&gt; you&amp;rsquo;re looking for. Excel 2003 has over 300 functions. Presumably these are the most popular functions people use. Fair chance your function is one of them. Excellent chance that you don&amp;rsquo;t know about it.&lt;/p&gt;
&lt;p&gt;So first, search through Excel&amp;rsquo;s help. I&amp;rsquo;ll admit, it&amp;rsquo;s not the best way to do it. I&amp;rsquo;ve learnt a trick to help me out. I &lt;strong&gt;search for a function that does similar stuff, and see the &amp;ldquo;See Also&amp;rdquo; section&lt;/strong&gt;. Let me give you an example.&lt;/p&gt;
&lt;p&gt;Once, we were modelling the revenues of a leasing company. Their finance manager had prepared a model to calculate the interest accruing from a lease. We needed the interest across several leases. With his model, we&amp;rsquo;d have to create 1 sheet for each lease. We were going to model thousands of leases. Clearly impossible.&lt;/p&gt;
&lt;p&gt;Since I knew PMT could calculate the EMI, I checked the help on PMT, clicked the &amp;ldquo;See Also&amp;rdquo; link, and found a bunch of related functions. This, among others, lists the IPMT function, which can be used to calculate the interest at a single stroke, and a bunch of other useful functions. (That&amp;rsquo;s how I first learnt about IPMT.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://www.s-anand.net/blog/assets/flickr-you-can-just-click-and-type_353748101_o-png.webp&#34; title=&#34;Photo Sharing&#34;&gt;&lt;img alt=&#34;Related functions in Excel&#34; loading=&#34;lazy&#34; src=&#34;https://www.s-anand.net/blog/assets/flickr-you-can-just-click-and-type_353748101_o-png.webp&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;But the really useful link is the &amp;ldquo;Financial functions&amp;rdquo; one, which lists every single financial function in Excel. That&amp;rsquo;s worth going through in detail. In fact, there are many such categories that are useful: database functions, information functions, lookup and reference functions and text functions have some unexplored gems. Check out the &lt;a href=&#34;http://office.microsoft.com/en-us/excel/HP052042111033.aspx&#34;&gt;List of worksheet functions&lt;/a&gt; on Excel.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;comments&#34;&gt;Comments&lt;/h2&gt;
&lt;!-- wp-comments-start --&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Rajlaxmi&lt;/strong&gt; &lt;em&gt;13 Jan 2007 8:44 pm&lt;/em&gt;:
Hi Anand. i ve 50+ location data in pivot format. i imported this in a template using sumif. issue is editing the formula manually in the template to take the right location. any other way? Thx.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;ania&lt;/strong&gt; &lt;em&gt;13 Feb 2007 8:36 am&lt;/em&gt;:
how to calucate simpleinterest in excel or in m.s sheet? help me&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&#34;http://mainexcel.blogspot.com&#34;&gt;Firdas&lt;/a&gt;&lt;/strong&gt; &lt;em&gt;22 Mar 2009 4:23 am&lt;/em&gt;:
I am surprised that you can make motion with excel. Very powerful.&lt;/li&gt;
&lt;/ul&gt;
&lt;!-- wp-comments-end --&gt;
</description>
    </item>
    <item>
      <title>How to convert APR to interest rate</title>
      <link>https://www.s-anand.net/blog/how-to-convert-apr-to-interest-rate/</link>
      <pubDate>Fri, 12 Jan 2007 12:00:00 +0000</pubDate>
      <guid>https://www.s-anand.net/blog/how-to-convert-apr-to-interest-rate/</guid>
      <description>&lt;p&gt;If you don&amp;rsquo;t know your interest rate (IRR), but only have your APR, there is a way of figuring out the actual interest rate on Excel.&lt;/p&gt;
&lt;p&gt;For this, you need to know your EMI (monthly payment), duration of the loan (number of months) and principal (amount you borrowed).&lt;/p&gt;
&lt;p&gt;Let&amp;rsquo;s assume your EMI is 2,000 and you are paying over 5 years (60 months) on a loan of 100,000. Use &lt;strong&gt;Excel&amp;rsquo;s RATE function&lt;/strong&gt;. In this example:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;=RATE(60, 2000, -100000) * 12 = 7.42%&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I multiplied by 12 to convert the monthly interest rate to annual. Since the payment is in months (60 months), Excel returns the interest rate in months as well.&lt;/p&gt;
&lt;p&gt;Note that this method does not require the APR. Just the EMI, duration and principal will suffice. &lt;a href=&#34;https://www.everyday-loans.co.uk/&#34;&gt;Everyday Loans&lt;/a&gt; can help those of you who are not very financially literate, there&amp;rsquo;s no shame in getting help from experts.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;comments&#34;&gt;Comments&lt;/h2&gt;
&lt;!-- wp-comments-start --&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Graeme&lt;/strong&gt; &lt;em&gt;12 Jan 2007 12:00 pm&lt;/em&gt;:
Can you figure out the interest rate from the info you got&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Pradeep&lt;/strong&gt; &lt;em&gt;12 Jan 2007 12:00 pm&lt;/em&gt;:
Cool!&amp;hellip;Anand, i was trying to find a formula to calculate real interest rate and came across your article..quite informative and you mentioned the RATE formula in excel sheet also so my search is done as far as excel is concerned THANKS :)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Matt&lt;/strong&gt; &lt;em&gt;12 Jan 2007 12:00 pm&lt;/em&gt;:
Very good - helped me figure out how much I could save by paying off a loan early&lt;/li&gt;
&lt;/ul&gt;
&lt;!-- wp-comments-end --&gt;
</description>
    </item>
    <item>
      <title>Most popular movies on IMDb</title>
      <link>https://www.s-anand.net/blog/most-popular-movies-on-imdb/</link>
      <pubDate>Thu, 30 Nov 2006 12:00:00 +0000</pubDate>
      <guid>https://www.s-anand.net/blog/most-popular-movies-on-imdb/</guid>
      <description>&lt;p&gt;Here are the top 1000 most popular movies on the Internet Movie database, along with their ratings and number of votes. I&#39;ve also marked whether I&#39;ve seen them or not, as of today.&lt;/p&gt;
&lt;p&gt;This list, incidentally, is part of my source for the post on &lt;a href=&#34;https://www.s-anand.net/blog/popular-lousy-movies/&#34;&gt;popular lousy movies&lt;/a&gt;.&lt;/p&gt;
&lt;iframe width=&#39;500&#39; height=&#39;800&#39; frameborder=&#39;0&#39; src=&#39;http://spreadsheets.google.com/pub?key=poz40xh4E1ufRC7YturhxJQ&amp;output=html&amp;gid=0&amp;single=true&amp;widget=true&#39;&gt;&lt;/iframe&gt;
&lt;p&gt;Here is the &lt;a href=&#34;http://spreadsheets.google.com/pub?key=poz40xh4E1ufRC7YturhxJQ&amp;output=xls&#34;&gt;Excel list of Top 1000 movies on IMDb&lt;/a&gt;.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;comments&#34;&gt;Comments&lt;/h2&gt;
&lt;!-- wp-comments-start --&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Arch&lt;/strong&gt; &lt;em&gt;1 Dec 2006 10:14 am&lt;/em&gt;:
Your site is too good.I browse thru so many blogs every other day, but hav found nothing as entertaining and as informative as this one. U must be really gifted fella&amp;hellip;Y dont u post some pics of ur kid &amp;hellip;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;err&lt;/strong&gt; &lt;em&gt;1 Dec 2006 10:04 pm&lt;/em&gt;:
is to do.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;S Anand&lt;/strong&gt; &lt;em&gt;1 Dec 2006 10:35 pm&lt;/em&gt;:
Thanks, Arch. I haven&amp;rsquo;t gotten around to posting any family stuff. No specific reason. Maybe I will&amp;hellip;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Michelle&lt;/strong&gt; &lt;em&gt;5 Dec 2006 12:36 pm&lt;/em&gt;:
You have been writing movies, do you have top 10 books?&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;DeuceLee&lt;/strong&gt; &lt;em&gt;11 Dec 2009 2:37 am&lt;/em&gt;:
Hi, I really love your imdb top 1000. Seriously it&amp;rsquo;s great info. Can you get an updated version from imdb and swivel? Looks like it&amp;rsquo;s been a while (2006). :-)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Andreas Beer&lt;/strong&gt; &lt;em&gt;20 Oct 2010 4:38 pm&lt;/em&gt;:
Dude, you seriously should watch Yojimbo! Masterpiece! :D&lt;/li&gt;
&lt;/ul&gt;
&lt;!-- wp-comments-end --&gt;
</description>
    </item>
    <item>
      <title>Creating variwide charts in Excel</title>
      <link>https://www.s-anand.net/blog/creating-variwide-charts-in-excel/</link>
      <pubDate>Fri, 22 Sep 2006 12:00:00 +0000</pubDate>
      <guid>https://www.s-anand.net/blog/creating-variwide-charts-in-excel/</guid>
      <description>&lt;p&gt;I &lt;a href=&#34;https://www.s-anand.net/blog/visualisation-centralising-improves-productivity/&#34;&gt;mentioned&lt;/a&gt; that it&amp;rsquo;s possible to create variwides using X-Y scatter plots. The video below shows how.&lt;/p&gt;
&lt;div class=&#34;video-embed&#34;&gt;&lt;iframe src=&#34;https://www.youtube.com/embed/YBbw6kXTGJ4&#34; title=&#34;YouTube video&#34; loading=&#34;lazy&#34; allow=&#34;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture&#34; allowfullscreen&gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;hr&gt;
&lt;h2 id=&#34;comments&#34;&gt;Comments&lt;/h2&gt;
&lt;!-- wp-comments-start --&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;sathya&lt;/strong&gt; &lt;em&gt;22 Sep 2006 4:08 pm&lt;/em&gt;:
I can see the video. I use BSNL broadband. Howver Ihave th problm that i cant hear th audio. this is the case even with youtube. looks like BSNL does not allow streaming audio.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;S Anand&lt;/strong&gt; &lt;em&gt;22 Sep 2006 4:40 pm&lt;/em&gt;:
That&amp;rsquo;s a pity. Well, at least the video&amp;rsquo;s OK, and good that I&amp;rsquo;ve enabled captions. (Hope you can see those?)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ashwin&lt;/strong&gt; &lt;em&gt;6 Jan 2007 1:50 pm&lt;/em&gt;:
Yes Really useful&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;sumesh&lt;/strong&gt; &lt;em&gt;6 Apr 2007 10:42 am&lt;/em&gt;:
i cant see the video&lt;/li&gt;
&lt;/ul&gt;
&lt;!-- wp-comments-end --&gt;
</description>
    </item>
  </channel>
</rss>
