<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Ashish Srivastava</title>
    <description>The latest articles on DEV Community by Ashish Srivastava (@ashishexcelnotes).</description>
    <link>https://dev.to/ashishexcelnotes</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4196358%2F1f75e1f3-818d-40ee-ae92-0591c24bd5d3.png</url>
      <title>DEV Community: Ashish Srivastava</title>
      <link>https://dev.to/ashishexcelnotes</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/ashishexcelnotes"/>
    <language>en</language>
    <item>
      <title>How to Add an Order Status Dropdown That Colours Itself</title>
      <dc:creator>Ashish Srivastava</dc:creator>
      <pubDate>Wed, 21 Oct 2026 15:47:53 +0000</pubDate>
      <link>https://dev.to/ashishexcelnotes/how-to-add-an-order-status-dropdown-that-colours-itself-clp</link>
      <guid>https://dev.to/ashishexcelnotes/how-to-add-an-order-status-dropdown-that-colours-itself-clp</guid>
      <description>&lt;p&gt;&lt;strong&gt;Subtitle:&lt;/strong&gt; Data validation, conditional formatting, counts per status, a "stuck" flag, and a check that catches statuses typed by hand&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Written with AI assistance. I edited it. The formulas below were checked in LibreOffice Calc on sample rows (not in Excel or Google Sheets).&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;A status column is the simplest way to know where every order is. It's also where small sheets go wrong: "Shipped", "shipped", "Shipped " with a trailing space and "Sent" all mean the same thing to you, and four different things to a formula.&lt;/p&gt;

&lt;p&gt;Here's how to lock the column to a short list, colour each row by its status, count what's in each stage, and flag orders that have sat still too long. It uses data validation, conditional formatting, COUNTIF and SUMIFS, which work the same way in Excel and Google Sheets.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. The status list
&lt;/h2&gt;

&lt;p&gt;Make a tab called &lt;strong&gt;Lists&lt;/strong&gt; and type your stages in A2:A6:&lt;/p&gt;

&lt;p&gt;New, Packed, Shipped, Delivered, Cancelled&lt;/p&gt;

&lt;p&gt;Keep it short. Five stages you actually use beat twelve you don't.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. The dropdown
&lt;/h2&gt;

&lt;p&gt;Orders from row 5: &lt;strong&gt;A Order ID&lt;/strong&gt;, &lt;strong&gt;B Customer&lt;/strong&gt;, &lt;strong&gt;C Amount&lt;/strong&gt;, &lt;strong&gt;D Status&lt;/strong&gt;, &lt;strong&gt;E Status date&lt;/strong&gt; (the day the status last changed). Put an &lt;strong&gt;As of&lt;/strong&gt; date in B2 (&lt;code&gt;=TODAY()&lt;/code&gt; works).&lt;/p&gt;

&lt;p&gt;Select D5:D104, then:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Excel:&lt;/strong&gt; Data → Data Validation → Allow: List → Source: &lt;code&gt;=Lists!$A$2:$A$6&lt;/code&gt;. On the Error Alert tab, keep &lt;strong&gt;Stop&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Google Sheets:&lt;/strong&gt; Data → Data validation → Add rule → Dropdown (from a range) → &lt;code&gt;Lists!A2:A6&lt;/code&gt; → "Reject the input".&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;New entries now have to come from the list. But a dropdown doesn't clean rows that were already there, and pasted values can slip past it, so section 5 adds a check.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Colour each row by status
&lt;/h2&gt;

&lt;p&gt;Select A5:G104 and add one conditional formatting rule per status, each with a custom formula:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Rule formula&lt;/th&gt;
&lt;th&gt;Suggested fill&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;=$D5="Delivered"&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;light green&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;=$D5="Shipped"&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;light blue&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;=$D5="Cancelled"&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;grey&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;=AND($D5="Packed",$F5&amp;gt;2)&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;light red (stuck, see below)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The &lt;code&gt;$&lt;/code&gt; before D and F keeps every cell in the row looking at the status column. Without it, only the status cell changes colour.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Days in status and a "stuck" flag
&lt;/h2&gt;

&lt;p&gt;F5, days since the status last changed:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;=IF(E5="","",$B$2-E5)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;G5, a flag column:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;=IF(D5="","No status",IF(COUNTIF(Lists!$A$2:$A$6,D5)=0,"Not on list",IF(AND(D5="Packed",F5&amp;gt;2),"Stuck",IF(AND(D5="Shipped",F5&amp;gt;7),"Stuck",""))))
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Set your own limits: here an order packed for more than 2 days, or shipped for more than 7 without being marked delivered, gets flagged. Remember to update the status date whenever you change the status.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. Counts per status, and the check
&lt;/h2&gt;

&lt;p&gt;Put the five stages in J5:J9, then:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Cell&lt;/th&gt;
&lt;th&gt;Formula&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;K5: Orders&lt;/td&gt;
&lt;td&gt;&lt;code&gt;=COUNTIF($D$5:$D$104,J5)&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;L5: Amount&lt;/td&gt;
&lt;td&gt;&lt;code&gt;=SUMIFS($C$5:$C$104,$D$5:$D$104,J5)&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;K11: Status not on the list&lt;/td&gt;
&lt;td&gt;&lt;code&gt;=SUMPRODUCT(($D$5:$D$104&amp;lt;&amp;gt;"")*(COUNTIF(Lists!$A$2:$A$6,$D$5:$D$104)=0))&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;K12: Orders with no status&lt;/td&gt;
&lt;td&gt;&lt;code&gt;=COUNTIFS($A$5:$A$104,"&amp;lt;&amp;gt;",$D$5:$D$104,"")&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;K13: Accounted for&lt;/td&gt;
&lt;td&gt;&lt;code&gt;=SUM(K5:K9)+K11+K12&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;K14: All orders&lt;/td&gt;
&lt;td&gt;&lt;code&gt;=COUNTA($A$5:$A$104)&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;K15: Check&lt;/td&gt;
&lt;td&gt;&lt;code&gt;=IF(K13=K14,"OK","CHECK")&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Fill K5 and L5 down to row 9. K11 and K12 are the useful ones: they show orders that the per-status counts silently skip. The check in K15 confirms every order is either in a stage or listed as a problem.&lt;/p&gt;

&lt;h2&gt;
  
  
  6. What the sample showed
&lt;/h2&gt;

&lt;p&gt;Seven made-up orders, as of 21 Oct 2026:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Order&lt;/th&gt;
&lt;th&gt;Status&lt;/th&gt;
&lt;th&gt;Days in status&lt;/th&gt;
&lt;th&gt;Flag&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;O-101&lt;/td&gt;
&lt;td&gt;Delivered&lt;/td&gt;
&lt;td&gt;11&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;O-102&lt;/td&gt;
&lt;td&gt;Shipped&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;O-103&lt;/td&gt;
&lt;td&gt;Packed&lt;/td&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;Stuck&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;O-104&lt;/td&gt;
&lt;td&gt;New&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;O-105&lt;/td&gt;
&lt;td&gt;Cancelled&lt;/td&gt;
&lt;td&gt;9&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;O-106&lt;/td&gt;
&lt;td&gt;"shipped " (typed, trailing space)&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;Not on list&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;O-107&lt;/td&gt;
&lt;td&gt;(blank)&lt;/td&gt;
&lt;td&gt;(blank)&lt;/td&gt;
&lt;td&gt;No status&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Counts: one order in each of the five stages (New 650, Packed 500, Shipped 800, Delivered 1,200, Cancelled 300), plus 1 not on the list and 1 with no status. 7 accounted for out of 7 orders, so the check said OK.&lt;/p&gt;

&lt;p&gt;The typed "shipped " is the reason for K11. COUNTIF ignores capital letters, but not the trailing space, so that order would have been missing from the Shipped count without the check. Retype it from the dropdown and it moves into Shipped.&lt;/p&gt;

&lt;h2&gt;
  
  
  7. Test it before you trust it
&lt;/h2&gt;

&lt;p&gt;Add rows you know the answer to, then confirm:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;a status pasted in with a trailing space (should say "Not on list")&lt;/li&gt;
&lt;li&gt;an order with no status (should say "No status" and count in K12)&lt;/li&gt;
&lt;li&gt;a Packed order with a status date 3+ days old (should say "Stuck" and turn red)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Then delete them.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Prefer a ready-made file?&lt;/strong&gt; There's a free Order &amp;amp; Payment Tracker (.xlsx workbook, no macros). You log each order once, and it works out what's still owed and whether it's overdue, by customer and in a one-page summary: &lt;a href="https://ashishsrivastavajay.gumroad.com/l/free-order-payment-tracker" rel="noopener noreferrer"&gt;https://ashishsrivastavajay.gumroad.com/l/free-order-payment-tracker&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;About me, and a disclosure:&lt;/strong&gt; I'm Ashish, a Kolkata-based Excel and Google Sheets builder with 18+ years of work experience, and I write these tutorials and build my workbooks with AI assistance under my direction. The free tracker is mine.&lt;/p&gt;

</description>
      <category>excel</category>
      <category>spreadsheets</category>
      <category>tutorial</category>
      <category>productivity</category>
    </item>
    <item>
      <title>How to Set Up Payment Due Date Reminders in a Spreadsheet</title>
      <dc:creator>Ashish Srivastava</dc:creator>
      <pubDate>Wed, 21 Oct 2026 15:47:32 +0000</pubDate>
      <link>https://dev.to/ashishexcelnotes/how-to-set-up-payment-due-date-reminders-in-a-spreadsheet-3i1e</link>
      <guid>https://dev.to/ashishexcelnotes/how-to-set-up-payment-due-date-reminders-in-a-spreadsheet-3i1e</guid>
      <description>&lt;p&gt;&lt;strong&gt;Subtitle:&lt;/strong&gt; Due dates that skip weekends and holidays, working days left, and a "Remind now" flag with WORKDAY and NETWORKDAYS&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Written with AI assistance. I edited it. The formulas below were checked in LibreOffice Calc on sample rows (not in Excel or Google Sheets).&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Chasing an invoice after it's late is awkward. A polite nudge two or three days &lt;em&gt;before&lt;/em&gt; the due date is easy, and it often means you never have to chase at all. The problem is remembering which invoices are close.&lt;/p&gt;

&lt;p&gt;Here's a small sheet that does the remembering. It works out each due date from the payment terms, moves it off weekends and holidays, counts the working days left, and flags the ones to remind today. WORKDAY and NETWORKDAYS exist in every current version of Excel and in Google Sheets.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. The invoice list
&lt;/h2&gt;

&lt;p&gt;Invoices from row 5: &lt;strong&gt;A Invoice date&lt;/strong&gt;, &lt;strong&gt;B Customer&lt;/strong&gt;, &lt;strong&gt;C Amount&lt;/strong&gt;, &lt;strong&gt;D Terms&lt;/strong&gt; (days, e.g. 30), &lt;strong&gt;E Paid&lt;/strong&gt; (type Y when the money arrives). Put an &lt;strong&gt;As of&lt;/strong&gt; date in B2. &lt;code&gt;=TODAY()&lt;/code&gt; works; I used a fixed date so the results below don't change.&lt;/p&gt;

&lt;p&gt;List your holidays in &lt;strong&gt;L5:L10&lt;/strong&gt; (one date per cell). Leave spare blank cells: the formulas ignore them.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. The due date
&lt;/h2&gt;

&lt;p&gt;F5, the plain due date:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;=IF(OR(A5="",D5=""),"",A5+D5)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;G5, moved to the next working day if it lands on a weekend or holiday:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;=IF(F5="","",WORKDAY(F5-1,1,$L$5:$L$10))
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The &lt;code&gt;F5-1&lt;/code&gt; then &lt;code&gt;+1 working day&lt;/code&gt; trick is the useful bit: a weekday due date stays the same, but a Saturday becomes Monday, and a holiday becomes the next working day. Format F and G as dates.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Days left, in calendar and working days
&lt;/h2&gt;

&lt;p&gt;H5, calendar days left (blank once paid):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;=IF(OR(G5="",E5="Y"),"",G5-$B$2)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;I5, working days left (negative when overdue):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;=IF(H5="","",IF(H5&amp;gt;=0,NETWORKDAYS($B$2,G5,$L$5:$L$10)-1,-(NETWORKDAYS(G5,$B$2,$L$5:$L$10)-1)))
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;NETWORKDAYS counts both end dates, so the &lt;code&gt;-1&lt;/code&gt; makes "due today" read 0. The two branches keep the sign right on each side of the due date. Format H and I as &lt;strong&gt;Number&lt;/strong&gt;, not Date, or a 5 shows up as a date in 1900.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. The reminder column
&lt;/h2&gt;

&lt;p&gt;J5:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;=IF(E5="Y","Paid",IF(G5="","No terms",IF(H5&amp;lt;0,"Overdue",IF(I5&amp;lt;=3,"Remind now","OK"))))
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Change the 3 to suit your customers. Then add a conditional formatting rule on the row (Format → Conditional formatting, custom formula &lt;code&gt;=$J5="Remind now"&lt;/code&gt;) to colour it, so the list reads at a glance.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. A summary for Monday morning
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Cell&lt;/th&gt;
&lt;th&gt;Formula&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;N5: Remind now&lt;/td&gt;
&lt;td&gt;&lt;code&gt;=COUNTIF(J5:J104,"Remind now")&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;N6: Overdue&lt;/td&gt;
&lt;td&gt;&lt;code&gt;=COUNTIF(J5:J104,"Overdue")&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;N7: Amount overdue&lt;/td&gt;
&lt;td&gt;&lt;code&gt;=SUMIFS(C5:C104,J5:J104,"Overdue")&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;N8: Amount to remind about&lt;/td&gt;
&lt;td&gt;&lt;code&gt;=SUMIFS(C5:C104,J5:J104,"Remind now")&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;N9: Invoices with no terms&lt;/td&gt;
&lt;td&gt;&lt;code&gt;=COUNTIF(J5:J104,"No terms")&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;N9 is the check. An invoice with no terms has no due date, so it would never be flagged. If N9 isn't 0, fill in the terms.&lt;/p&gt;

&lt;h2&gt;
  
  
  6. What the sample showed
&lt;/h2&gt;

&lt;p&gt;Seven made-up invoices, as of Wednesday 21 Oct 2026, with Friday 23 Oct listed as a holiday:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Customer&lt;/th&gt;
&lt;th&gt;Due&lt;/th&gt;
&lt;th&gt;Due (working day)&lt;/th&gt;
&lt;th&gt;Days left&lt;/th&gt;
&lt;th&gt;Working days left&lt;/th&gt;
&lt;th&gt;Reminder&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Asha Traders&lt;/td&gt;
&lt;td&gt;1 Oct&lt;/td&gt;
&lt;td&gt;1 Oct&lt;/td&gt;
&lt;td&gt;(blank)&lt;/td&gt;
&lt;td&gt;(blank)&lt;/td&gt;
&lt;td&gt;Paid&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Bose &amp;amp; Co&lt;/td&gt;
&lt;td&gt;Sat 10 Oct&lt;/td&gt;
&lt;td&gt;Mon 12 Oct&lt;/td&gt;
&lt;td&gt;-9&lt;/td&gt;
&lt;td&gt;-7&lt;/td&gt;
&lt;td&gt;Overdue&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Dutta Mart&lt;/td&gt;
&lt;td&gt;Sat 24 Oct&lt;/td&gt;
&lt;td&gt;Mon 26 Oct&lt;/td&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;Remind now&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Hari Mills&lt;/td&gt;
&lt;td&gt;22 Oct&lt;/td&gt;
&lt;td&gt;22 Oct&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;Remind now&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Ezra Textiles&lt;/td&gt;
&lt;td&gt;21 Oct&lt;/td&gt;
&lt;td&gt;21 Oct&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;Remind now&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Chandra Stores&lt;/td&gt;
&lt;td&gt;9 Nov&lt;/td&gt;
&lt;td&gt;9 Nov&lt;/td&gt;
&lt;td&gt;19&lt;/td&gt;
&lt;td&gt;12&lt;/td&gt;
&lt;td&gt;OK&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Faiz Stores&lt;/td&gt;
&lt;td&gt;(blank)&lt;/td&gt;
&lt;td&gt;(blank)&lt;/td&gt;
&lt;td&gt;(blank)&lt;/td&gt;
&lt;td&gt;(blank)&lt;/td&gt;
&lt;td&gt;No terms&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Summary: 3 to remind (500 + 650 + 300 = 1,450), 1 overdue (800), 1 with no terms.&lt;/p&gt;

&lt;p&gt;Dutta Mart is the interesting row: five calendar days left looks comfortable, but with a weekend and a holiday in between, it's only two working days.&lt;/p&gt;

&lt;h2&gt;
  
  
  7. Test it before you trust it
&lt;/h2&gt;

&lt;p&gt;Add rows you know the answer to, then confirm:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;a due date on a Saturday (should move to Monday)&lt;/li&gt;
&lt;li&gt;a due date on one of your holidays (should move to the next working day)&lt;/li&gt;
&lt;li&gt;an invoice due today (should show 0 and "Remind now")&lt;/li&gt;
&lt;li&gt;an invoice with blank terms (should show "No terms" and count in N9)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Then delete them.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Prefer a ready-made file?&lt;/strong&gt; There's a free Order &amp;amp; Payment Tracker (.xlsx workbook, no macros). You log each order once, and it works out what's still owed and whether it's overdue, by customer and in a one-page summary: &lt;a href="https://ashishsrivastavajay.gumroad.com/l/free-order-payment-tracker" rel="noopener noreferrer"&gt;https://ashishsrivastavajay.gumroad.com/l/free-order-payment-tracker&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;About me, and a disclosure:&lt;/strong&gt; I'm Ashish, a Kolkata-based Excel and Google Sheets builder with 18+ years of work experience, and I write these tutorials and build my workbooks with AI assistance under my direction. The free tracker is mine.&lt;/p&gt;

</description>
      <category>excel</category>
      <category>spreadsheets</category>
      <category>tutorial</category>
      <category>productivity</category>
    </item>
    <item>
      <title>ChatGPT prompts for small business marketing: 12 fill-in templates for posts, product copy and offers</title>
      <dc:creator>Ashish Srivastava</dc:creator>
      <pubDate>Wed, 21 Oct 2026 08:42:08 +0000</pubDate>
      <link>https://dev.to/ashishexcelnotes/chatgpt-prompts-for-small-business-marketing-12-fill-in-templates-for-posts-product-copy-and-3a8k</link>
      <guid>https://dev.to/ashishexcelnotes/chatgpt-prompts-for-small-business-marketing-12-fill-in-templates-for-posts-product-copy-and-3a8k</guid>
      <description>&lt;p&gt;Asking ChatGPT to "write a post for my shop" usually gets you something generic. The fix isn't a magic phrase; it's giving the model the same details you'd give a freelance copywriter: who you sell to, what makes you different, the tone you want and the format you need. Below are 12 fill-in prompts for everyday small business marketing, plus a simple way to make the results sound like you.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; AI output can be wrong or overconfident. Read everything before you post it, check any facts, prices or claims yourself, and never publish health, legal or financial claims you can't back up.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 1: Write a reusable "business brief"
&lt;/h2&gt;

&lt;p&gt;Before any prompt, keep a short brief in a notes file and paste it at the top of every chat:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Business: [what you sell], based in [city/online]
Customers: [who buys, e.g. working parents aged 25-40]
Why us: [2-3 real differences, e.g. same-day dispatch, handmade]
Tone: [e.g. friendly, plain, no hype, no emojis]
Avoid: [words or claims you never want used]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This single step does more for quality than any clever prompt. Fill the brackets with real details, not adjectives like "high quality".&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 2: Social media posts
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;1. Product spotlight post&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Using the brief above, write 3 short Instagram captions (under 60 words each) for [product]. Mention [one specific detail]. End each with a simple call to action: [visit link in bio / DM to order].
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;2. Behind-the-scenes post&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Write a 4-sentence post about how we [make/pack/source] [product]. Keep it honest and specific, no exaggeration. Suggest one photo idea to go with it.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;3. Weekly content ideas&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Give me 10 post ideas for next week for a [type of business]. Mix: 3 product, 3 helpful tips, 2 behind-the-scenes, 2 questions to the audience. One line each.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;4. Turning a customer question into a post&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;A customer asked: "[question]". Write a helpful short post answering it in plain language, then a one-line mention of [product] at the end.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Step 3: Product descriptions
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;5. Product page description&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Write a product description for [product] in 3 parts: a 1-sentence hook, 4 bullet points of features with the benefit of each, and a short "good to know" line covering [size/care/delivery]. Under 120 words. Only use these facts: [list facts].
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The "only use these facts" line matters. Without it, the model may invent materials, sizes or guarantees.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;6. Marketplace version&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Rewrite this description for [Amazon/Etsy/Meesho/other] style: a title under [N] characters with the main search phrase "[phrase]" near the start, then 5 bullets. Description: [paste].
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;7. Shorter variants for testing&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Give me 5 alternative one-line product headlines for [product], each with a different angle: price, speed, quality, gift, problem solved.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Step 4: Offers and promotions
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;8. Festival or seasonal offer&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;We're running [X% off / free delivery] on [products] from [date] to [date] for [Diwali/end of season/other]. Write: 1 WhatsApp broadcast message (under 50 words), 1 Instagram caption, and 1 banner headline (under 8 words). Mention the end date clearly.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;9. Bundle pitch&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;We're selling [item A] + [item B] together for [price] instead of [separate price]. Write a short, honest explanation of who this bundle suits and why, in under 70 words.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;10. Win-back message&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Write a friendly message to customers who haven't ordered in [N] months. Offer [incentive]. No guilt-tripping, under 60 words.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Step 5: Reviews and trust
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;11. Asking for a review&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Write a short, polite message asking a customer who bought [product] last week for a review. Make it easy to ignore, with no pressure, and include where to leave it: [link/platform].
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Never ask AI to write reviews for you. Fake reviews break most platforms' rules and the law in many places.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;12. Replying to a negative review&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;A customer left this review: "[paste]". Write a calm, non-defensive public reply under 80 words that acknowledges the issue, says what we'll do [action], and invites them to contact us at [channel].
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Step 6: Make the output sound like you
&lt;/h2&gt;

&lt;p&gt;Three habits help:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Give an example.&lt;/strong&gt; Paste one or two posts you've written yourself and add: "Match the tone and length of these."&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ask for options, then combine.&lt;/strong&gt; Request 3 to 5 versions and stitch the best lines together.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Edit with follow-ups.&lt;/strong&gt; "Shorter." "Less salesy." "Remove the exclamation marks." "Use simpler words." Small follow-ups beat starting over.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Step 7: Keep your prompts organised
&lt;/h2&gt;

&lt;p&gt;Once you have prompts that work, save them. A simple spreadsheet works well: columns for Category (Social, Product, Offer, Reviews), Prompt name, Prompt text, and Notes on what to fill in. Filter by category when you need one. Over a few weeks you'll build a small library that suits your business, and writing a week of posts takes minutes instead of an evening.&lt;/p&gt;

&lt;h2&gt;
  
  
  Common mistakes
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;No details.&lt;/strong&gt; Generic input gives generic output. Fill every bracket.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Posting without reading.&lt;/strong&gt; Check prices, dates and any claim before it goes out.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Letting it invent facts.&lt;/strong&gt; Tell it to use only the facts you list.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Same tone everywhere.&lt;/strong&gt; A WhatsApp broadcast and a product page need different lengths and styles; say which one you want.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Wrapping up
&lt;/h2&gt;

&lt;p&gt;Good small business marketing prompts are really just good briefs: who you are, who you sell to, what you want and in what format. Start with the business brief, use the 12 templates above, and keep the ones that work.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;This article was drafted with AI tools. The prompts are general starting points; always review AI output before using it.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>marketing</category>
      <category>smallbusiness</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Freelancer invoice tracker in Excel: track clients, projects and who still owes you</title>
      <dc:creator>Ashish Srivastava</dc:creator>
      <pubDate>Wed, 21 Oct 2026 08:41:58 +0000</pubDate>
      <link>https://dev.to/ashishexcelnotes/freelancer-invoice-tracker-in-excel-track-clients-projects-and-who-still-owes-you-2fc9</link>
      <guid>https://dev.to/ashishexcelnotes/freelancer-invoice-tracker-in-excel-track-clients-projects-and-who-still-owes-you-2fc9</guid>
      <description>&lt;p&gt;Most freelancers start with invoices scattered across email, a notes app and a bank statement. That works until you have five clients and can't say who has paid. A simple freelancer invoice tracker in Excel fixes that: one list of clients, one list of projects, one log of invoices, and a summary that shows what's outstanding. This guide builds one step by step.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; this covers spreadsheet layout and formulas only. How you charge tax, what an invoice must show and how you report income depend on where you live. It is not tax or legal advice.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 1: A Clients sheet
&lt;/h2&gt;

&lt;p&gt;Make a sheet called &lt;strong&gt;Clients&lt;/strong&gt; with these columns:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Col&lt;/th&gt;
&lt;th&gt;Field&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;A&lt;/td&gt;
&lt;td&gt;Client name&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;B&lt;/td&gt;
&lt;td&gt;Contact person&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;C&lt;/td&gt;
&lt;td&gt;Email&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;D&lt;/td&gt;
&lt;td&gt;Payment terms (days), e.g. &lt;code&gt;15&lt;/code&gt; or &lt;code&gt;30&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;E&lt;/td&gt;
&lt;td&gt;Currency&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;F&lt;/td&gt;
&lt;td&gt;Notes&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Select the range and press &lt;strong&gt;Ctrl+T&lt;/strong&gt; to make it an Excel Table, then name it &lt;code&gt;tblClients&lt;/code&gt; under &lt;strong&gt;Table Design &amp;gt; Table Name&lt;/strong&gt;. Tables grow on their own, so new clients appear in dropdowns without editing ranges.&lt;/p&gt;

&lt;p&gt;Keep one row per client. If the same client appears as "Acme" and "Acme Pvt Ltd", your totals will split, so pick one spelling and stick to it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 2: A Projects sheet
&lt;/h2&gt;

&lt;p&gt;On a &lt;strong&gt;Projects&lt;/strong&gt; sheet:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Col&lt;/th&gt;
&lt;th&gt;Field&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;A&lt;/td&gt;
&lt;td&gt;Project ID, e.g. &lt;code&gt;P-001&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;B&lt;/td&gt;
&lt;td&gt;Client (dropdown)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;C&lt;/td&gt;
&lt;td&gt;Project name&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;D&lt;/td&gt;
&lt;td&gt;Billing type: &lt;code&gt;Fixed&lt;/code&gt; or &lt;code&gt;Hourly&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;E&lt;/td&gt;
&lt;td&gt;Rate or fixed fee&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;F&lt;/td&gt;
&lt;td&gt;Start date&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;G&lt;/td&gt;
&lt;td&gt;Status: &lt;code&gt;Active&lt;/code&gt;, &lt;code&gt;Paused&lt;/code&gt;, &lt;code&gt;Done&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;For the Client dropdown, select column B and use &lt;strong&gt;Data &amp;gt; Data Validation &amp;gt; List&lt;/strong&gt; with the source &lt;code&gt;=INDIRECT("tblClients[Client name]")&lt;/code&gt;. Do the same for Status with a typed list: &lt;code&gt;Active,Paused,Done&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Make this a Table too (&lt;code&gt;tblProjects&lt;/code&gt;).&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 3: An optional Time Log
&lt;/h2&gt;

&lt;p&gt;If you bill by the hour, add a &lt;strong&gt;TimeLog&lt;/strong&gt; sheet: A = date, B = project ID, C = hours, D = description. Then on the Projects sheet add column H, &lt;strong&gt;Hours logged&lt;/strong&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;=SUMIFS(tblTime[Hours],tblTime[Project ID],[@[Project ID]])
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And column I, &lt;strong&gt;Billable so far&lt;/strong&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;=IF([@[Billing type]]="Hourly",[@Hours logged]*[@Rate],[@Rate])
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now each hourly project shows what you could invoice today.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 4: The Invoices log
&lt;/h2&gt;

&lt;p&gt;This is the core of the tracker. Make an &lt;strong&gt;Invoices&lt;/strong&gt; sheet:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Col&lt;/th&gt;
&lt;th&gt;Field&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;A&lt;/td&gt;
&lt;td&gt;Invoice no.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;B&lt;/td&gt;
&lt;td&gt;Invoice date&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;C&lt;/td&gt;
&lt;td&gt;Client (dropdown)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;D&lt;/td&gt;
&lt;td&gt;Project ID&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;E&lt;/td&gt;
&lt;td&gt;Amount&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;F&lt;/td&gt;
&lt;td&gt;Due date&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;G&lt;/td&gt;
&lt;td&gt;Amount paid&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;H&lt;/td&gt;
&lt;td&gt;Paid date&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;I&lt;/td&gt;
&lt;td&gt;Balance&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;J&lt;/td&gt;
&lt;td&gt;Status&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;K&lt;/td&gt;
&lt;td&gt;Days overdue&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Fill the due date from the client's payment terms:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;F2: =IF(B2="","",B2+IFERROR(INDEX(tblClients[Payment terms (days)],MATCH(C2,tblClients[Client name],0)),30))
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If the client isn't found, it falls back to 30 days.&lt;/p&gt;

&lt;p&gt;Balance:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;I2: =IF(E2="","",E2-N(G2))
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Status:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;J2: =IF(E2="","",IF(I2&amp;lt;=0,"Paid",IF(TODAY()&amp;gt;F2,"Overdue",IF(N(G2)&amp;gt;0,"Part-paid","Open"))))
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Days overdue:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;K2: =IF(J2="Overdue",TODAY()-F2,"")
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Turn it into a Table (&lt;code&gt;tblInvoices&lt;/code&gt;) so these formulas fill down automatically for every new row.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 5: Highlight what needs chasing
&lt;/h2&gt;

&lt;p&gt;Select the Status column and add &lt;strong&gt;Home &amp;gt; Conditional Formatting &amp;gt; Highlight Cells Rules &amp;gt; Text that Contains&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;Overdue&lt;/code&gt; â†’ light red fill&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;Part-paid&lt;/code&gt; â†’ light yellow fill&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;Paid&lt;/code&gt; â†’ light green fill&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For a stronger signal, select the whole table and add a formula rule &lt;code&gt;=$K2&amp;gt;30&lt;/code&gt; with bold red text. Anything more than a month late jumps out.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 6: A one-glance Summary sheet
&lt;/h2&gt;

&lt;p&gt;Make a &lt;strong&gt;Summary&lt;/strong&gt; sheet with a client list in column A (you can type it, or in Excel 365/2021 use &lt;code&gt;=SORT(UNIQUE(tblInvoices[Client]))&lt;/code&gt;). Then:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;B2 (Invoiced):     =SUMIFS(tblInvoices[Amount],tblInvoices[Client],A2)
C2 (Received):     =SUMIFS(tblInvoices[Amount paid],tblInvoices[Client],A2)
D2 (Outstanding):  =B2-C2
E2 (Overdue):      =SUMIFS(tblInvoices[Balance],tblInvoices[Client],A2,tblInvoices[Status],"Overdue")
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Above the table, add three headline numbers:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Total outstanding:  =SUM(tblInvoices[Balance])
Overdue invoices:   =COUNTIF(tblInvoices[Status],"Overdue")
Paid this month:    =SUMIFS(tblInvoices[Amount paid],tblInvoices[Paid date],"&amp;gt;="&amp;amp;EOMONTH(TODAY(),-1)+1,tblInvoices[Paid date],"&amp;lt;="&amp;amp;EOMONTH(TODAY(),0))
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;UNIQUE&lt;/code&gt; and &lt;code&gt;SORT&lt;/code&gt; need Excel 365 or Excel 2021. The other formulas work in older desktop versions too.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 7: A weekly 10-minute routine
&lt;/h2&gt;

&lt;p&gt;The tracker only helps if it stays current. A simple habit:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Every time you send an invoice&lt;/strong&gt;, add a row to Invoices straight away.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Every time money lands&lt;/strong&gt;, fill in Amount paid and Paid date.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Once a week&lt;/strong&gt;, filter Status to &lt;code&gt;Overdue&lt;/code&gt; and send a polite reminder to each client on the list.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Once a month&lt;/strong&gt;, check the Summary sheet for clients who are slow to pay, and consider shorter terms or an advance for their next project.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Common mistakes
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Typing client names by hand.&lt;/strong&gt; Use the dropdown so the SUMIFS totals match.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Overwriting formulas.&lt;/strong&gt; Lock the Balance, Status and Days overdue columns with &lt;strong&gt;Review &amp;gt; Protect Sheet&lt;/strong&gt;, leaving the input columns unlocked.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Mixing currencies in one total.&lt;/strong&gt; If you bill in more than one currency, add a converted-amount column or keep a separate summary per currency.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Deleting paid invoices.&lt;/strong&gt; Keep them. Your paid history is what tells you which clients are reliable.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Wrapping up
&lt;/h2&gt;

&lt;p&gt;With four sheets (Clients, Projects, Invoices and Summary) you get a freelancer invoice tracker that shows who owes you, how late they are, and what came in this month, without any paid software. Start with the Invoices log alone if that's all you need, and add the rest as your client list grows.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;This article was drafted with AI tools. It's general spreadsheet guidance for Excel, not tax or legal advice.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>excel</category>
      <category>freelancing</category>
      <category>tutorial</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Salary slip format in Excel (India): a printable layout you fill from one register</title>
      <dc:creator>Ashish Srivastava</dc:creator>
      <pubDate>Wed, 21 Oct 2026 03:40:05 +0000</pubDate>
      <link>https://dev.to/ashishexcelnotes/salary-slip-format-in-excel-india-a-printable-layout-you-fill-from-one-register-efh</link>
      <guid>https://dev.to/ashishexcelnotes/salary-slip-format-in-excel-india-a-printable-layout-you-fill-from-one-register-efh</guid>
      <description>&lt;p&gt;If you run a small shop, office or studio in India, staff will sooner or later ask for a salary slip, for a bank loan, a rental agreement or a visa file. You don't need payroll software for that. A clear salary slip format in Excel, filled automatically from a simple monthly register, does the job. This guide focuses on the slip itself: what to put on it, how to lay it out and how to fill it with formulas.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; which deductions apply (PF, ESI, professional tax, TDS and so on) depends on your state, headcount and current rules. This article covers spreadsheet layout only. It is not tax, payroll or legal advice; check the rules with an accountant or the official sources.&lt;/p&gt;

&lt;h2&gt;
  
  
  What a typical salary slip shows
&lt;/h2&gt;

&lt;p&gt;Most slips have the same five blocks:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Header:&lt;/strong&gt; business name, address, "Salary slip for October 2026"&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Employee details:&lt;/strong&gt; name, employee ID, designation, department, date of joining, bank account (last 4 digits only), PAN or UAN if you record them&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Attendance:&lt;/strong&gt; working days in the month, days paid, leave taken&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Earnings and deductions:&lt;/strong&gt; two columns side by side&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Net pay:&lt;/strong&gt; in figures and in words, plus a line such as "This is a computer-generated slip"&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Step 1: The data the slip reads from
&lt;/h2&gt;

&lt;p&gt;Keep two sheets:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Employees:&lt;/strong&gt; A = Emp ID, B = Name, C = Designation, D = Department, E = Date of joining, F = Bank (last 4)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Register:&lt;/strong&gt; one row per employee per month. A = Month (first day, e.g. 01-10-2026), B = Emp ID, C = Working days, D = Days paid, E = Basic, F = HRA, G = Other allowances, H = Overtime/bonus, I = Gross, Jâ€“L = deductions, M = Total deductions, N = Net pay&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The slip never holds numbers of its own. It only looks them up, so a mistake fixed in the register fixes the slip.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 2: Lay out the slip
&lt;/h2&gt;

&lt;p&gt;On a &lt;strong&gt;Slip&lt;/strong&gt; sheet, use columns B to E on an A4 portrait page:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;B2:E2&lt;/strong&gt; merged: &lt;code&gt;=Settings!B2&lt;/code&gt; (business name), bold, centred&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;B3:E3&lt;/strong&gt; merged: address&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;B4:E4&lt;/strong&gt; merged: &lt;code&gt;="Salary slip for "&amp;amp;TEXT($C$6,"mmmm yyyy")&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Two inputs at the top:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;C6:&lt;/strong&gt; Month (a dropdown of months from the register)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;C7:&lt;/strong&gt; Emp ID (a dropdown from the Employees list)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Then the employee details in rows 9â€“12, labels in B and D, values in C and E.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 3: Pull employee details
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;C9:  =IFERROR(INDEX(Employees!$B:$B,MATCH($C$7,Employees!$A:$A,0)),"")
E9:  =IFERROR(INDEX(Employees!$C:$C,MATCH($C$7,Employees!$A:$A,0)),"")
C10: =IFERROR(INDEX(Employees!$D:$D,MATCH($C$7,Employees!$A:$A,0)),"")
E10: =IFERROR(TEXT(INDEX(Employees!$E:$E,MATCH($C$7,Employees!$A:$A,0)),"dd-mm-yyyy"),"")
C11: =IFERROR("XXXX"&amp;amp;INDEX(Employees!$F:$F,MATCH($C$7,Employees!$A:$A,0)),"")
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Step 4: Pull the month's figures
&lt;/h2&gt;

&lt;p&gt;Each money field needs a lookup on two conditions: the month and the employee. SUMIFS is the simplest way and works in older Excel too:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;=SUMIFS(Register!$E:$E,Register!$A:$A,$C$6,Register!$B:$B,$C$7)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That gives Basic. Change only the first range for each field: &lt;code&gt;$F:$F&lt;/code&gt; for HRA, &lt;code&gt;$G:$G&lt;/code&gt; for allowances, &lt;code&gt;$H:$H&lt;/code&gt; for overtime, &lt;code&gt;$J:$J&lt;/code&gt; to &lt;code&gt;$L:$L&lt;/code&gt; for deductions, &lt;code&gt;$D:$D&lt;/code&gt; for days paid.&lt;/p&gt;

&lt;p&gt;Lay earnings in B:C and deductions in D:E on the same rows, so the slip reads across:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Earnings&lt;/th&gt;
&lt;th&gt;Amount&lt;/th&gt;
&lt;th&gt;Deductions&lt;/th&gt;
&lt;th&gt;Amount&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Basic&lt;/td&gt;
&lt;td&gt;â€¦&lt;/td&gt;
&lt;td&gt;Deduction 1&lt;/td&gt;
&lt;td&gt;â€¦&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;HRA&lt;/td&gt;
&lt;td&gt;â€¦&lt;/td&gt;
&lt;td&gt;Deduction 2&lt;/td&gt;
&lt;td&gt;â€¦&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Allowances&lt;/td&gt;
&lt;td&gt;â€¦&lt;/td&gt;
&lt;td&gt;Advance recovered&lt;/td&gt;
&lt;td&gt;â€¦&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Overtime / bonus&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;tr&gt;
&lt;td&gt;&lt;strong&gt;Gross&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;=SUM(C15:C18)&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Total deductions&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;=SUM(E15:E17)&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Name the deduction rows to match what you actually deduct. Leave out rows that don't apply to you rather than showing zeros.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 5: Net pay in figures and words
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;C21: =C19-E19
B22: ="Net pay: Rupees "&amp;amp;TEXT(C21,"#,##,##0")&amp;amp;" only"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The &lt;code&gt;#,##,##0&lt;/code&gt; format gives Indian lakh-style grouping (1,25,000). Excel has no built-in function for Indian number words, so type the words if you need them in full.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 6: Catch blanks before printing
&lt;/h2&gt;

&lt;p&gt;Add a check cell outside the print area:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;=IF(COUNTIFS(Register!$A:$A,$C$6,Register!$B:$B,$C$7)=0,"No register row for this month",
 IF(COUNTIFS(Register!$A:$A,$C$6,Register!$B:$B,$C$7)&amp;gt;1,"Duplicate rows: check register","OK"))
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Use &lt;strong&gt;Conditional Formatting&lt;/strong&gt; to turn it red when it isn't "OK".&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 7: Print a slip for each person
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Select B2:E24, &lt;strong&gt;Page Layout &amp;gt; Print Area &amp;gt; Set Print Area&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Page Setup &amp;gt; Fit to 1 page&lt;/strong&gt;, portrait, A4.&lt;/li&gt;
&lt;li&gt;Pick the month in C6, then change C7 for each employee and &lt;strong&gt;File &amp;gt; Export &amp;gt; Create PDF&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Name files like &lt;code&gt;Slip_2026-10_E003.pdf&lt;/code&gt;.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;For a few staff this takes a couple of minutes a month.&lt;/p&gt;

&lt;h2&gt;
  
  
  Tips
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Protect the slip sheet&lt;/strong&gt; (Review &amp;gt; Protect Sheet, leaving C6 and C7 unlocked) so formulas don't get typed over.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Don't store full bank or ID numbers&lt;/strong&gt; in a file you email around.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Keep old register rows.&lt;/strong&gt; They're your history if anyone asks for a past slip.
&lt;em&gt;This article was drafted with AI tools. It's general spreadsheet guidance for Excel, not tax, payroll or legal advice.&lt;/em&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>excel</category>
      <category>smallbusiness</category>
      <category>tutorial</category>
      <category>productivity</category>
    </item>
    <item>
      <title>GST invoice format in Excel: a simple layout with automatic CGST/SGST or IGST</title>
      <dc:creator>Ashish Srivastava</dc:creator>
      <pubDate>Wed, 21 Oct 2026 03:39:50 +0000</pubDate>
      <link>https://dev.to/ashishexcelnotes/gst-invoice-format-in-excel-a-simple-layout-with-automatic-cgstsgst-or-igst-3fh</link>
      <guid>https://dev.to/ashishexcelnotes/gst-invoice-format-in-excel-a-simple-layout-with-automatic-cgstsgst-or-igst-3fh</guid>
      <description>&lt;p&gt;Plenty of small businesses in India make GST invoices in Excel instead of paying for billing software. That works fine if the sheet is laid out sensibly: one place for your details, one list of customers and items, and an invoice sheet that pulls from both. This guide walks through a practical GST invoice format in Excel, step by step.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; what a GST invoice must contain, which rate applies and how place of supply works depend on your business and current rules. This article covers spreadsheet layout and formulas only. It is not tax or legal advice; check the requirements with your CA or the official GST sources.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 1: A Settings sheet
&lt;/h2&gt;

&lt;p&gt;Make a sheet called &lt;strong&gt;Settings&lt;/strong&gt; and fill in the details that appear on every invoice:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Cell&lt;/th&gt;
&lt;th&gt;Value&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;B2&lt;/td&gt;
&lt;td&gt;Business name&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;B3&lt;/td&gt;
&lt;td&gt;Address&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;B4&lt;/td&gt;
&lt;td&gt;Your state&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;B5&lt;/td&gt;
&lt;td&gt;Your GSTIN&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;B6&lt;/td&gt;
&lt;td&gt;Invoice prefix, e.g. &lt;code&gt;INV-&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;B7&lt;/td&gt;
&lt;td&gt;Bank details for payment&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Every invoice formula points at these cells, so if your address changes you edit one cell.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 2: Customers and Items lists
&lt;/h2&gt;

&lt;p&gt;On a &lt;strong&gt;Customers&lt;/strong&gt; sheet: A = customer name, B = GSTIN (blank if unregistered), C = state, D = billing address.&lt;/p&gt;

&lt;p&gt;On an &lt;strong&gt;Items&lt;/strong&gt; sheet: A = item or service, B = HSN/SAC code, C = unit price, D = GST rate (for example &lt;code&gt;18%&lt;/code&gt;).&lt;/p&gt;

&lt;p&gt;Turn both into Excel Tables (&lt;strong&gt;Ctrl+T&lt;/strong&gt;). Tables grow automatically, so new customers and items show up in your dropdowns without editing ranges.&lt;/p&gt;

&lt;p&gt;Keep state names consistent. The tax split compares text, so "Karnataka" and "Karnatka" count as different states. A dropdown from a fixed state list avoids this.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 3: The invoice header
&lt;/h2&gt;

&lt;p&gt;On the &lt;strong&gt;Invoice&lt;/strong&gt; sheet, lay out the top block:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Seller block:&lt;/strong&gt; &lt;code&gt;=Settings!B2&lt;/code&gt;, &lt;code&gt;=Settings!B3&lt;/code&gt;, &lt;code&gt;="GSTIN: "&amp;amp;Settings!B5&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Invoice number (F3):&lt;/strong&gt; type a running number in F2 (e.g. 41) and use &lt;code&gt;=Settings!B6&amp;amp;TEXT(F2,"0000")&lt;/code&gt; to get &lt;code&gt;INV-0041&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Invoice date (F4):&lt;/strong&gt; type the date; format as &lt;code&gt;dd-mm-yyyy&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Customer (B8):&lt;/strong&gt; a dropdown via &lt;strong&gt;Data &amp;gt; Data Validation &amp;gt; List&lt;/strong&gt; pointing at the customer name column&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Pull the customer's details from the list:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;B9:  =IFERROR(INDEX(Customers!$D:$D,MATCH($B$8,Customers!$A:$A,0)),"")
B10: =IFERROR(INDEX(Customers!$B:$B,MATCH($B$8,Customers!$A:$A,0)),"")
B11: =IFERROR(INDEX(Customers!$C:$C,MATCH($B$8,Customers!$A:$A,0)),"")
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;B9 is the address, B10 the customer GSTIN and B11 the place of supply (state).&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 4: The line-item table
&lt;/h2&gt;

&lt;p&gt;Start the item rows at row 15 with these columns:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Col&lt;/th&gt;
&lt;th&gt;Field&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;A&lt;/td&gt;
&lt;td&gt;S. No.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;B&lt;/td&gt;
&lt;td&gt;Item (dropdown from Items)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;C&lt;/td&gt;
&lt;td&gt;HSN/SAC&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;D&lt;/td&gt;
&lt;td&gt;Qty&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;E&lt;/td&gt;
&lt;td&gt;Rate&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;F&lt;/td&gt;
&lt;td&gt;Taxable value&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;G&lt;/td&gt;
&lt;td&gt;GST rate&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;H&lt;/td&gt;
&lt;td&gt;CGST&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;I&lt;/td&gt;
&lt;td&gt;SGST&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;J&lt;/td&gt;
&lt;td&gt;IGST&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;K&lt;/td&gt;
&lt;td&gt;Line total&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Lookups for code, rate and GST rate:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;C15: =IF($B15="","",IFERROR(INDEX(Items!$B:$B,MATCH($B15,Items!$A:$A,0)),""))
E15: =IF($B15="","",IFERROR(INDEX(Items!$C:$C,MATCH($B15,Items!$A:$A,0)),""))
G15: =IF($B15="","",IFERROR(INDEX(Items!$D:$D,MATCH($B15,Items!$A:$A,0)),""))
F15: =IF($B15="","",ROUND(D15*E15,2))
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Step 5: Let Excel choose CGST/SGST or IGST
&lt;/h2&gt;

&lt;p&gt;Compare your state with the customer's state. Same state: split the tax in half. Different state: all of it is IGST.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;H15: =IF($B15="","",IF($B$11=Settings!$B$4,ROUND(F15*G15/2,2),0))
I15: =IF($B15="","",IF($B$11=Settings!$B$4,ROUND(F15*G15/2,2),0))
J15: =IF($B15="","",IF($B$11&amp;lt;&amp;gt;Settings!$B$4,ROUND(F15*G15,2),0))
K15: =IF($B15="","",F15+H15+I15+J15)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Copy row 15 down for as many lines as you need (say 15 rows). These are plain IF and INDEX/MATCH formulas, so they work in older Excel versions as well as Excel 365.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 6: Totals and amount in words
&lt;/h2&gt;

&lt;p&gt;Below the items:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Taxable total: =SUM(F15:F29)
CGST total:    =SUM(H15:H29)
SGST total:    =SUM(I15:I29)
IGST total:    =SUM(J15:J29)
Grand total:   =ROUND(SUM(K15:K29),0)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Excel has no built-in function for amounts in Indian words. Either type the words, or show the figure with lakh-style grouping:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;="Rupees "&amp;amp;TEXT(K31,"#,##,##0")&amp;amp;" only"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Add a short tax summary by rate if you use more than one rate, with SUMIF:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;=SUMIF($G$15:$G$29,18%,$F$15:$F$29)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Step 7: Keep a register of every invoice
&lt;/h2&gt;

&lt;p&gt;Before you clear the invoice for the next one, copy its key values (number, date, customer, taxable value, CGST, SGST, IGST, total) into an &lt;strong&gt;Invoices&lt;/strong&gt; register sheet, one row per invoice. That register is what you'll use for monthly totals and for chasing payments. A pivot table on it (Rows: month; Values: sums of each tax column) gives a quick monthly summary.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 8: Print or save as PDF
&lt;/h2&gt;

&lt;p&gt;Select the invoice area, &lt;strong&gt;Page Layout &amp;gt; Print Area &amp;gt; Set Print Area&lt;/strong&gt;, set &lt;strong&gt;Fit to 1 page wide&lt;/strong&gt;, and use &lt;strong&gt;File &amp;gt; Export &amp;gt; Create PDF&lt;/strong&gt;. Name the file with the invoice number so it's easy to find later.&lt;/p&gt;

&lt;h2&gt;
  
  
  Common mistakes
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Hard-coding 18% in formulas.&lt;/strong&gt; Keep rates in the Items list.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Typing customer details by hand each time.&lt;/strong&gt; That's where GSTIN typos creep in.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Overwriting the last invoice without logging it.&lt;/strong&gt; Always add it to the register first.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Rounding only the grand total.&lt;/strong&gt; Round each tax line too, so totals match line by line.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Reusing invoice numbers.&lt;/strong&gt; A &lt;code&gt;COUNTIF&lt;/code&gt; on the register's number column (&lt;code&gt;=COUNTIF(A:A,A2)&amp;gt;1&lt;/code&gt;) flags duplicates.
&lt;em&gt;This article was drafted with AI tools. It's general spreadsheet guidance for Excel, not tax or legal advice.&lt;/em&gt;
&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>excel</category>
      <category>smallbusiness</category>
      <category>tutorial</category>
      <category>productivity</category>
    </item>
    <item>
      <title>How to Build a Monthly Sales Summary with SUMIFS (No Pivot Table)</title>
      <dc:creator>Ashish Srivastava</dc:creator>
      <pubDate>Wed, 21 Oct 2026 03:34:55 +0000</pubDate>
      <link>https://dev.to/ashishexcelnotes/how-to-build-a-monthly-sales-summary-with-sumifs-no-pivot-table-3nel</link>
      <guid>https://dev.to/ashishexcelnotes/how-to-build-a-monthly-sales-summary-with-sumifs-no-pivot-table-3nel</guid>
      <description>&lt;p&gt;&lt;em&gt;Written with AI assistance. The formulas below were checked in LibreOffice Calc on sample rows (not in Excel or Google Sheets).&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Pivot tables are great until you need the summary to sit in a fixed layout, update the moment a row is added, or be readable by someone who's never clicked "Refresh". A small SUMIFS table does the same job in plain formulas you can audit cell by cell.&lt;/p&gt;

&lt;p&gt;Everything here uses standard functions available in both Excel and Google Sheets (SUMIFS, COUNTIFS, EDATE, SUM, SUMPRODUCT, ISNUMBER), with no macros.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. The order list
&lt;/h2&gt;

&lt;p&gt;One row per order, from row 5, columns A–D: &lt;strong&gt;Date&lt;/strong&gt;, &lt;strong&gt;Product&lt;/strong&gt;, &lt;strong&gt;Amount&lt;/strong&gt;, &lt;strong&gt;Status&lt;/strong&gt; (&lt;code&gt;Completed&lt;/code&gt; or &lt;code&gt;Refunded&lt;/code&gt;). Use a dropdown for Status so it's always spelled the same way.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. The month column
&lt;/h2&gt;

&lt;p&gt;In &lt;strong&gt;G5&lt;/strong&gt;, type the first day of your first month, e.g. &lt;code&gt;1 Jan 2026&lt;/code&gt;. Below it (G6, fill down for as many months as you need):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;=EDATE(G5,1)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;EDATE adds whole months, so you always land on the 1st, even after February. Format the column as &lt;code&gt;mmm yyyy&lt;/code&gt; so it reads "Jan 2026" while staying a real date underneath.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Sales and orders per month
&lt;/h2&gt;

&lt;p&gt;Sales (H5, fill down):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;=SUMIFS($C$5:$C$204,$A$5:$A$204,"&amp;gt;="&amp;amp;G5,$A$5:$A$204,"&amp;lt;"&amp;amp;EDATE(G5,1),$D$5:$D$204,"Completed")
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Orders (I5):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;=COUNTIFS($A$5:$A$204,"&amp;gt;="&amp;amp;G5,$A$5:$A$204,"&amp;lt;"&amp;amp;EDATE(G5,1),$D$5:$D$204,"Completed")
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The window is "on or after the 1st, and &lt;strong&gt;before&lt;/strong&gt; the 1st of next month". That's why 31 January counts in January and 1 February counts in February. It also stays right if your dates ever carry a time of day, which a &lt;code&gt;&amp;lt;=&lt;/code&gt; end-of-month test would get wrong.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Average order, refunds, running total, change
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Column&lt;/th&gt;
&lt;th&gt;Formula (row 5)&lt;/th&gt;
&lt;th&gt;Note&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;J: Avg order&lt;/td&gt;
&lt;td&gt;&lt;code&gt;=IF(I5=0,"",H5/I5)&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;blank instead of #DIV/0! in an empty month&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;K: Refunds&lt;/td&gt;
&lt;td&gt;same as Sales, with &lt;code&gt;"Refunded"&lt;/code&gt; instead of &lt;code&gt;"Completed"&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;kept separate, so sales stay sales&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;L: Running total&lt;/td&gt;
&lt;td&gt;&lt;code&gt;=SUM($H$5:H5)&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;the locked start makes it grow as you fill down&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;M: vs last month (from row 6)&lt;/td&gt;
&lt;td&gt;&lt;code&gt;=IF(H5=0,"",H6/H5-1)&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;format as %; blank when last month was zero&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  5. The check cells (the part pivot tables don't give you)
&lt;/h2&gt;

&lt;p&gt;All completed sales in the list (H12):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;=SUMIFS($C$5:$C$204,$D$5:$D$204,"Completed")
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Check (H13):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;=IF(ROUND(SUM(H5:H10)-H12,2)=0,"OK","CHECK")
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If the months don't add up to the whole list, some sales fell outside every month. There are two usual reasons, so count both:&lt;/p&gt;

&lt;p&gt;Dates typed as text (H14). These look like dates but no date test can match them:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;=SUMPRODUCT(($A$5:$A$204&amp;lt;&amp;gt;"")*NOT(ISNUMBER($A$5:$A$204)))
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Dates outside your months (H15):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;=COUNTIFS($A$5:$A$204,"&amp;lt;"&amp;amp;G5)+COUNTIFS($A$5:$A$204,"&amp;gt;="&amp;amp;EDATE(G10,1))
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In my sample list I planted one of each: a date pasted as the text &lt;code&gt;2026-03-15&lt;/code&gt;, and an order dated 1 July in a January–June summary. The check showed &lt;strong&gt;CHECK&lt;/strong&gt;, and each counter showed 1. Retype the text date as a real date and extend the months, and it goes back to &lt;strong&gt;OK&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  6. What the sample came out as
&lt;/h2&gt;

&lt;p&gt;Fourteen made-up orders, Jan–Jun 2026:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Month&lt;/th&gt;
&lt;th&gt;Sales&lt;/th&gt;
&lt;th&gt;Orders&lt;/th&gt;
&lt;th&gt;Avg&lt;/th&gt;
&lt;th&gt;Refunds&lt;/th&gt;
&lt;th&gt;Running&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Jan&lt;/td&gt;
&lt;td&gt;66&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;33&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;66&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Feb&lt;/td&gt;
&lt;td&gt;66&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;33&lt;/td&gt;
&lt;td&gt;27&lt;/td&gt;
&lt;td&gt;132&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Mar&lt;/td&gt;
&lt;td&gt;66&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;33&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;198&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Apr&lt;/td&gt;
&lt;td&gt;93&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;31&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;291&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;May&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;(blank)&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;291&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Jun&lt;/td&gt;
&lt;td&gt;39&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;39&lt;/td&gt;
&lt;td&gt;27&lt;/td&gt;
&lt;td&gt;330&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;March shows only 2 orders because the text-date order on 15 March was skipped, which is exactly what the check cell is there to catch. These are demo numbers, not anyone's real sales.&lt;/p&gt;

&lt;h2&gt;
  
  
  7. Test it before you trust it
&lt;/h2&gt;

&lt;p&gt;Add rows you know the answer for, and confirm each lands where it should:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;the last day of a month and the first day of the next&lt;/li&gt;
&lt;li&gt;a refunded order (goes to Refunds, not Sales)&lt;/li&gt;
&lt;li&gt;a month with no orders (shows 0 and a blank average, not an error)&lt;/li&gt;
&lt;li&gt;one date typed as text, which should trip the check&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Then delete them and use it with real data.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Prefer a ready-made file?&lt;/strong&gt; There's a free Order &amp;amp; Payment Tracker (.xlsx workbook, no macros). You log each order once, and it works out what's still owed and whether it's overdue, by customer and in a one-page summary: &lt;a href="https://ashishsrivastavajay.gumroad.com/l/free-order-payment-tracker" rel="noopener noreferrer"&gt;https://ashishsrivastavajay.gumroad.com/l/free-order-payment-tracker&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;About me, and a disclosure:&lt;/strong&gt; I'm Ashish, based in Kolkata, with 18+ years of work experience, and I write these tutorials and build my workbooks with AI assistance under my direction. The free tracker is mine.&lt;/p&gt;

</description>
      <category>excel</category>
      <category>spreadsheet</category>
      <category>productivity</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>How to Catch Duplicate Orders and Misspelled Customer Names in a Spreadsheet</title>
      <dc:creator>Ashish Srivastava</dc:creator>
      <pubDate>Wed, 21 Oct 2026 03:34:39 +0000</pubDate>
      <link>https://dev.to/ashishexcelnotes/how-to-catch-duplicate-orders-and-misspelled-customer-names-in-a-spreadsheet-25e3</link>
      <guid>https://dev.to/ashishexcelnotes/how-to-catch-duplicate-orders-and-misspelled-customer-names-in-a-spreadsheet-25e3</guid>
      <description>&lt;p&gt;&lt;em&gt;Written with AI assistance. The formulas below were checked in LibreOffice Calc on sample rows (not in Excel or Google Sheets).&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Most wrong spreadsheet totals aren't formula bugs. They're data bugs: the same order typed twice, "Asha Traders" in one row and "Asha Trader" in the next, or a stray space at the end of a name. Your per-customer totals then quietly split in two, and nothing turns red.&lt;/p&gt;

&lt;p&gt;Here are three checks you can add to any order list. They use only standard functions that exist in both Excel and Google Sheets (TRIM, COUNTIF, SUMPRODUCT, IF), with no macros.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. The order list
&lt;/h2&gt;

&lt;p&gt;One row per order, starting at row 5:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Column&lt;/th&gt;
&lt;th&gt;What goes in it&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;A&lt;/td&gt;
&lt;td&gt;Order ID&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;B&lt;/td&gt;
&lt;td&gt;Order date&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;C&lt;/td&gt;
&lt;td&gt;Customer (as typed)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;D&lt;/td&gt;
&lt;td&gt;Amount&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;E&lt;/td&gt;
&lt;td&gt;Customer, cleaned (formula)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;F&lt;/td&gt;
&lt;td&gt;Repeat ID (formula)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;G&lt;/td&gt;
&lt;td&gt;Order key (formula)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;H&lt;/td&gt;
&lt;td&gt;Possible duplicate (formula)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;I&lt;/td&gt;
&lt;td&gt;Name check (formula)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Put your list of real customer names in &lt;strong&gt;K5:K20&lt;/strong&gt;, spelled once, correctly.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Clean the name: TRIM
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;=IF(A5="","",TRIM(C5))
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;TRIM removes spaces at the start and end and squeezes double spaces in the middle down to one. So &lt;code&gt;"  Chandra Stores "&lt;/code&gt; becomes &lt;code&gt;"Chandra Stores"&lt;/code&gt; and &lt;code&gt;"Bose  &amp;amp; Co"&lt;/code&gt; becomes &lt;code&gt;"Bose &amp;amp; Co"&lt;/code&gt;. Point every total or lookup at column E, never at the raw column C.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Same order ID twice
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;=IF(A5="","",IF(COUNTIF($A$5:A5,A5)&amp;gt;1,"Repeat ID",""))
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The trick is the range &lt;code&gt;$A$5:A5&lt;/code&gt;: the start is locked and the end grows as you fill down. Each row counts only the rows &lt;strong&gt;above and including itself&lt;/strong&gt;, so the first ORD-202 stays clean and only the second one is flagged. You know which row to look at, instead of both rows lighting up.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Same order typed twice under different IDs
&lt;/h2&gt;

&lt;p&gt;Sometimes the ID is different but it's clearly the same order: same customer, same day, same amount. Build a key (G5):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;=IF(A5="","",E5&amp;amp;"|"&amp;amp;B5&amp;amp;"|"&amp;amp;D5)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The date joins as its underlying number (e.g. 46266), which is fine for matching. Then flag the repeat (H5):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;=IF(A5="","",IF(SUMPRODUCT(--($G$5:G5=G5))&amp;gt;1,"Possible duplicate",""))
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Why SUMPRODUCT instead of COUNTIF here? COUNTIF treats &lt;code&gt;*&lt;/code&gt; and &lt;code&gt;?&lt;/code&gt; in the text as wildcards, and long text can trip it up. A plain &lt;code&gt;=&lt;/code&gt; comparison avoids both. It's also case-insensitive, so &lt;code&gt;asha traders&lt;/code&gt; and &lt;code&gt;Asha Traders&lt;/code&gt; with the same date and amount get flagged.&lt;/p&gt;

&lt;p&gt;It says &lt;em&gt;possible&lt;/em&gt; on purpose. Two genuine orders can match, so treat the flag as "look at this", not "delete this". Same customer and same day but a different amount is &lt;strong&gt;not&lt;/strong&gt; flagged.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. Names that aren't on your list
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;=IF(A5="","",IF(COUNTIF($K$5:$K$20,E5)=0,"Not in list",""))
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This catches "Asha Trader" (missing s) before it becomes a separate customer in your totals.&lt;/p&gt;

&lt;p&gt;Better still, stop typos at the door with a dropdown on column C:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Excel:&lt;/strong&gt; select the column → &lt;strong&gt;Data → Data Validation → Allow: List&lt;/strong&gt; → Source &lt;code&gt;=$K$5:$K$20&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Google Sheets:&lt;/strong&gt; select the column → &lt;strong&gt;Data → Data validation → Add rule → Dropdown (from a range)&lt;/strong&gt; → &lt;code&gt;K5:K20&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Keep the "Not in list" check anyway. It catches anything pasted in, and rows typed before the dropdown existed.&lt;/p&gt;

&lt;h2&gt;
  
  
  6. A small summary and one check cell
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Cell&lt;/th&gt;
&lt;th&gt;Formula&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Repeat IDs&lt;/td&gt;
&lt;td&gt;&lt;code&gt;=COUNTIF($F$5:$F$104,"Repeat ID")&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Possible duplicates&lt;/td&gt;
&lt;td&gt;&lt;code&gt;=COUNTIF($H$5:$H$104,"Possible duplicate")&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Names not in list&lt;/td&gt;
&lt;td&gt;&lt;code&gt;=COUNTIF($I$5:$I$104,"Not in list")&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Total, all rows&lt;/td&gt;
&lt;td&gt;&lt;code&gt;=SUM($D$5:$D$104)&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Total, flagged rows left out&lt;/td&gt;
&lt;td&gt;&lt;code&gt;=SUMPRODUCT($D$5:$D$104*($F$5:$F$104="")*($H$5:$H$104=""))&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Check (N10)&lt;/td&gt;
&lt;td&gt;&lt;code&gt;=IF(N5+N6+N7=0,"OK","CHECK")&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;(N5, N6 and N7 are the first three cells.) The two totals side by side show how much money is sitting in suspicious rows.&lt;/p&gt;

&lt;p&gt;On my ten sample orders, each check caught exactly the row it should:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Repeat IDs: 1&lt;/li&gt;
&lt;li&gt;Possible duplicates: 1&lt;/li&gt;
&lt;li&gt;Names not in list: 1&lt;/li&gt;
&lt;li&gt;Total of all rows: 6,950; with the flagged rows left out: 5,450&lt;/li&gt;
&lt;li&gt;The check cell showed &lt;strong&gt;CHECK&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Your numbers will differ. What matters is that each planted problem gets caught and nothing else does.&lt;/p&gt;

&lt;h2&gt;
  
  
  7. Test it with planted mistakes
&lt;/h2&gt;

&lt;p&gt;Before trusting it, add rows you &lt;em&gt;know&lt;/em&gt; are wrong and confirm each gets flagged:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Planted row&lt;/th&gt;
&lt;th&gt;Expected&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Name with extra spaces&lt;/td&gt;
&lt;td&gt;cleaned, no flag&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Same order ID twice&lt;/td&gt;
&lt;td&gt;second one: Repeat ID&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Same customer, date and amount, different capitals&lt;/td&gt;
&lt;td&gt;second one: Possible duplicate&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Same customer and date, different amount&lt;/td&gt;
&lt;td&gt;no flag&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Misspelled customer&lt;/td&gt;
&lt;td&gt;Not in list&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Completely blank row&lt;/td&gt;
&lt;td&gt;stays blank&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Then delete the planted rows and fill the formulas down 100 rows in advance.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Prefer a ready-made file?&lt;/strong&gt; There's a free Order &amp;amp; Payment Tracker (.xlsx workbook, no macros). You log each order once, and it works out what's still owed and whether it's overdue, by customer and in a one-page summary: &lt;a href="https://ashishsrivastavajay.gumroad.com/l/free-order-payment-tracker" rel="noopener noreferrer"&gt;https://ashishsrivastavajay.gumroad.com/l/free-order-payment-tracker&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;About me, and a disclosure:&lt;/strong&gt; I'm Ashish, based in Kolkata, with 18+ years of work experience, and I write these tutorials and build my workbooks with AI assistance under my direction. The free tracker is mine.&lt;/p&gt;

</description>
      <category>excel</category>
      <category>spreadsheet</category>
      <category>productivity</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>How to make a 30-day social media content calendar in Excel</title>
      <dc:creator>Ashish Srivastava</dc:creator>
      <pubDate>Tue, 20 Oct 2026 18:23:14 +0000</pubDate>
      <link>https://dev.to/ashishexcelnotes/how-to-make-a-30-day-social-media-content-calendar-in-excel-3658</link>
      <guid>https://dev.to/ashishexcelnotes/how-to-make-a-30-day-social-media-content-calendar-in-excel-3658</guid>
      <description>&lt;p&gt;Most small shops don't stop posting because they lack ideas. They stop because each day starts from a blank page. A 30-day calendar in Excel fixes that: you plan themes once, and every day already has a prompt waiting. Here's how to build one where you change one start date and everything else follows.&lt;/p&gt;

&lt;h2&gt;
  
  
  Settings
&lt;/h2&gt;

&lt;p&gt;On a sheet called &lt;strong&gt;Settings&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;B1:&lt;/strong&gt; Start date (e.g. 01-11-2026)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A4:A10:&lt;/strong&gt; seven weekly themes, one per weekday (for example: Product spotlight, Behind the scenes, Customer question, Tip, Offer, Story, Weekly recap)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Sheet: Calendar
&lt;/h2&gt;

&lt;p&gt;Headers in row 1: Day, Date, Weekday, Theme, Post idea, Caption no., Caption, Platform, Format, Status, Hashtags.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Day (A2:A31):&lt;/strong&gt; type 1 in A2, then &lt;code&gt;=A2+1&lt;/code&gt; in A3 and fill down to A31.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Date (B2):&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;=Settings!$B$1+A2-1
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Weekday (C2):&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;=TEXT(B2,"dddd")
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Theme (D2)&lt;/strong&gt;, cycling through your seven themes:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;=INDEX(Settings!$A$4:$A$10,MOD(A2-1,7)+1)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Change the start date and every date, weekday and theme moves with it.&lt;/p&gt;

&lt;h2&gt;
  
  
  A caption bank
&lt;/h2&gt;

&lt;p&gt;On a sheet called &lt;strong&gt;Captions&lt;/strong&gt;, column A = number (1, 2, 3â€¦), column B = theme, column C = caption text with blanks to fill, e.g. "Our [product] is back in stock. Which colour should we restock first?"&lt;/p&gt;

&lt;p&gt;On the Calendar, &lt;strong&gt;Caption no. (F2)&lt;/strong&gt; can start as the day number, &lt;code&gt;=A2&lt;/code&gt;, and you overwrite it when you want a different one. Then &lt;strong&gt;Caption (G2):&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;=IFERROR(INDEX(Captions!$C:$C,MATCH(F2,Captions!$A:$A,0)),"")
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Want the caption to match the day's theme automatically? In Excel 365/2021:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;=IFERROR(INDEX(FILTER(Captions!$C$2:$C$500,Captions!$B$2:$B$500=D2),ROUNDUP(A2/7,0)),"")
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This picks the 1st caption for that theme in week 1, the 2nd in week 2, and so on.&lt;/p&gt;

&lt;h2&gt;
  
  
  Dropdowns
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Platform:&lt;/strong&gt; Instagram, Facebook, WhatsApp Status, YouTube Shorts, Other&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Format:&lt;/strong&gt; Photo, Carousel, Reel, Story, Text&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Status:&lt;/strong&gt; Idea, Drafted, Scheduled, Posted, Skipped&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Select each column, &lt;strong&gt;Data &amp;gt; Data Validation &amp;gt; List&lt;/strong&gt;, and type the values separated by commas.&lt;/p&gt;

&lt;h2&gt;
  
  
  Make today stand out
&lt;/h2&gt;

&lt;p&gt;Select A2:K31, &lt;strong&gt;Home &amp;gt; Conditional Formatting &amp;gt; New Rule &amp;gt; Use a formula&lt;/strong&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;=$B2=TODAY()
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Pick a light fill. A second rule, &lt;code&gt;=AND($B2&amp;lt;TODAY(),$J2&amp;lt;&amp;gt;"Posted",$J2&amp;lt;&amp;gt;"Skipped")&lt;/code&gt;, in light red, shows days you missed.&lt;/p&gt;

&lt;h2&gt;
  
  
  Track how you're doing
&lt;/h2&gt;

&lt;p&gt;A small summary above or beside the calendar:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Posted:  =COUNTIF(J2:J31,"Posted")
Planned: =COUNTA(B2:B31)
Rate:    =IF(COUNTIF(B2:B31,"&amp;lt;="&amp;amp;TODAY())=0,"",COUNTIF(J2:J31,"Posted")/COUNTIF(B2:B31,"&amp;lt;="&amp;amp;TODAY()))
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The rate only counts days that have already arrived, so it doesn't punish you for the future.&lt;/p&gt;

&lt;p&gt;If you want to note results, add Reach and Messages columns and fill them a day or two after posting. After a month, sort by Messages to see which themes start conversations.&lt;/p&gt;

&lt;h2&gt;
  
  
  Batch it
&lt;/h2&gt;

&lt;p&gt;The calendar works best if you spend one hour a week on it: on Sunday, read the next seven rows, take the photos, write the captions, and set Status to Drafted or Scheduled. Then each day is just "post the thing".&lt;/p&gt;

&lt;h2&gt;
  
  
  Reusing it next month
&lt;/h2&gt;

&lt;p&gt;When the 30 days are up, right-click the Calendar tab, &lt;strong&gt;Move or Copy &amp;gt; Create a copy&lt;/strong&gt;, and rename the copy with the month (for example "Cal 2026-11"). On the new copy, change Settings!B1 to the next start date, clear the Status, Reach and Messages columns, and you're ready. If you keep notes of which caption numbers did well, overwrite the Caption no. column on the new copy to repeat the winners on different days. Old copies stay as a record, so you can see over a few months which themes and formats get replies and which ones you keep skipping.&lt;/p&gt;

&lt;h2&gt;
  
  
  Writing better fill-in captions
&lt;/h2&gt;

&lt;p&gt;Captions with a question at the end ("Which one would you pick?") tend to start more conversations than plain announcements. Keep each caption short, put the blank where the product name goes, and write two or three versions for each theme so the calendar doesn't repeat itself every week. Twenty captions per theme is plenty to start.&lt;/p&gt;

&lt;h2&gt;
  
  
  Common mistakes
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Typing dates by hand.&lt;/strong&gt; One start date plus formulas means you can reuse the calendar every month.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Too many platforms.&lt;/strong&gt; Start with one or two you actually use.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Hashtags pasted the same every day.&lt;/strong&gt; Keep a few sets per theme in Settings and rotate them.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Deleting last month.&lt;/strong&gt; Copy the sheet first; you can reuse what worked.
&lt;em&gt;This article was drafted with AI tools. It's general guidance, not marketing or legal advice.&lt;/em&gt;
&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>excel</category>
      <category>marketing</category>
      <category>productivity</category>
      <category>beginners</category>
    </item>
    <item>
      <title>How to track multiple income streams in one Excel dashboard</title>
      <dc:creator>Ashish Srivastava</dc:creator>
      <pubDate>Tue, 20 Oct 2026 18:23:06 +0000</pubDate>
      <link>https://dev.to/ashishexcelnotes/how-to-track-multiple-income-streams-in-one-excel-dashboard-3l4i</link>
      <guid>https://dev.to/ashishexcelnotes/how-to-track-multiple-income-streams-in-one-excel-dashboard-3l4i</guid>
      <description>&lt;p&gt;Once you have more than one small income source (a digital product, some freelance work, affiliate links, a newsletter) it gets hard to answer simple questions. Which one actually earns? Is this month better than last? Am I near my goal? Payment dashboards each show their own slice. One Excel workbook can pull it together.&lt;/p&gt;

&lt;h2&gt;
  
  
  Sheet 1: Streams
&lt;/h2&gt;

&lt;p&gt;A short list of your income sources:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Col&lt;/th&gt;
&lt;th&gt;Field&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;A&lt;/td&gt;
&lt;td&gt;Stream name (e.g. "Template shop", "Client work")&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;B&lt;/td&gt;
&lt;td&gt;Type (dropdown: Product, Service, Affiliate, Ads, Other)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;C&lt;/td&gt;
&lt;td&gt;Platform&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;D&lt;/td&gt;
&lt;td&gt;Currency&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;E&lt;/td&gt;
&lt;td&gt;Active? (Yes/No)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Name the stream list range: select A2:A50, type &lt;code&gt;StreamList&lt;/code&gt; in the Name Box (left of the formula bar). You'll use it for dropdowns.&lt;/p&gt;

&lt;h2&gt;
  
  
  Sheet 2: Income log
&lt;/h2&gt;

&lt;p&gt;One row per payout or sale:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Col&lt;/th&gt;
&lt;th&gt;Field&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;A&lt;/td&gt;
&lt;td&gt;Date&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;B&lt;/td&gt;
&lt;td&gt;Stream (dropdown from StreamList)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;C&lt;/td&gt;
&lt;td&gt;Description&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;D&lt;/td&gt;
&lt;td&gt;Currency&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;E&lt;/td&gt;
&lt;td&gt;Gross amount&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;F&lt;/td&gt;
&lt;td&gt;Fees&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;G&lt;/td&gt;
&lt;td&gt;Net&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;H&lt;/td&gt;
&lt;td&gt;Rate to base currency&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;I&lt;/td&gt;
&lt;td&gt;Net in base currency&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;J&lt;/td&gt;
&lt;td&gt;Month&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Dropdown on B:&lt;/strong&gt; Data &amp;gt; Data Validation &amp;gt; List, source &lt;code&gt;=StreamList&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Formulas:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;G2: =IF($A2="","",E2-N(F2))
I2: =IF($A2="","",G2*IF(H2="",1,H2))
J2: =IF($A2="","",TEXT(A2,"yyyy-mm"))
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Type the rate yourself (what you actually received), and leave it blank when the currency already matches your base. Don't add USD and GBP amounts directly.&lt;/p&gt;

&lt;h2&gt;
  
  
  Sheet 3: Expenses (optional but honest)
&lt;/h2&gt;

&lt;p&gt;Same shape: Date, Stream, Description, Amount in base currency, Month. Tools, ads and subscriptions often quietly eat a "passive" stream. Tracking them per stream shows real profit.&lt;/p&gt;

&lt;h2&gt;
  
  
  Sheet 4: Dashboard
&lt;/h2&gt;

&lt;p&gt;Put the month you want to look at in &lt;strong&gt;B1&lt;/strong&gt; (e.g. &lt;code&gt;2026-10&lt;/code&gt;). List streams in A4 down. Then:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Income this month: =SUMIFS(Log!$I:$I,Log!$B:$B,$A4,Log!$J:$J,$B$1)
Expenses:          =SUMIFS(Exp!$D:$D,Exp!$B:$B,$A4,Exp!$E:$E,$B$1)
Profit:            =B4-C4
Share of income:   =IF(SUM($B$4:$B$20)=0,"",B4/SUM($B$4:$B$20))
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Previous month&lt;/strong&gt; for comparison, from the month in B1:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;=TEXT(EDATE(DATEVALUE($B$1&amp;amp;"-01"),-1),"yyyy-mm")
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Put that in B2 and copy the income formula pointing at B2 instead of B1. A change column, &lt;code&gt;=IF(E4=0,"",B4/E4-1)&lt;/code&gt;, formatted as %, shows growth per stream.&lt;/p&gt;

&lt;h2&gt;
  
  
  Goal tracking
&lt;/h2&gt;

&lt;p&gt;In a Goals cell (say &lt;code&gt;Dashboard!H1&lt;/code&gt;) type your monthly target. Then:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Progress: =IF($H$1=0,"",SUM(B4:B20)/$H$1)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Format as %, and add &lt;strong&gt;Conditional Formatting &amp;gt; Data Bars&lt;/strong&gt; for a quick visual.&lt;/p&gt;

&lt;h2&gt;
  
  
  A chart that's actually useful
&lt;/h2&gt;

&lt;p&gt;Make a pivot table from the Log: Rows = Month, Columns = Stream, Values = Sum of Net in base. Insert a &lt;strong&gt;stacked column chart&lt;/strong&gt; from it. You'll see at a glance whether growth comes from one stream or several, and which months were carried by a single sale.&lt;/p&gt;

&lt;h2&gt;
  
  
  Year-to-date view
&lt;/h2&gt;

&lt;p&gt;Monthly numbers bounce around, especially for products where one launch week can be most of the year. Add a year-to-date column to the Dashboard with the year in B3 (e.g. &lt;code&gt;2026&lt;/code&gt;):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;=SUMIFS(Log!$I:$I,Log!$B:$B,$A4,Log!$A:$A,"&amp;gt;="&amp;amp;DATE($B$3,1,1),Log!$A:$A,"&amp;lt;="&amp;amp;DATE($B$3,12,31))
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Sort streams by this column at least once a quarter. It's the fairest way to decide where your next hours should go, and which stream has quietly stopped earning.&lt;/p&gt;

&lt;h2&gt;
  
  
  Keep payout proof
&lt;/h2&gt;

&lt;p&gt;Add a &lt;strong&gt;Reference&lt;/strong&gt; column to the Log for the payout or transaction ID. When a platform total and your bank don't agree, the reference lets you match them one by one instead of guessing.&lt;/p&gt;

&lt;h2&gt;
  
  
  Common mistakes
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Logging gross only.&lt;/strong&gt; Platform and payment fees can be significant; log them.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Mixing currencies.&lt;/strong&gt; Always convert in a separate column with a rate you entered.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Calling it passive when it isn't.&lt;/strong&gt; Add a "Hours spent" column to the log if you want to see income per hour.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Retyping stream names.&lt;/strong&gt; Dropdowns keep the dashboard sums correct.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  A monthly routine
&lt;/h2&gt;

&lt;p&gt;On the 1st: export payouts from each platform, paste them into the Log, check the rates, change B1 to the new month. Fifteen minutes gives you one honest picture of all your income.&lt;br&gt;
&lt;em&gt;This article was drafted with AI tools. It's general spreadsheet guidance, not financial, tax or legal advice.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>excel</category>
      <category>sideprojects</category>
      <category>productivity</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>How to track export shipment documents and payments in Excel (for small exporters)</title>
      <dc:creator>Ashish Srivastava</dc:creator>
      <pubDate>Tue, 20 Oct 2026 18:17:32 +0000</pubDate>
      <link>https://dev.to/ashishexcelnotes/how-to-track-export-shipment-documents-and-payments-in-excel-for-small-exporters-4khb</link>
      <guid>https://dev.to/ashishexcelnotes/how-to-track-export-shipment-documents-and-payments-in-excel-for-small-exporters-4khb</guid>
      <description>&lt;p&gt;A small export order involves a lot of paperwork that has to match: proforma invoice, commercial invoice, packing list, shipping bill, bill of lading or airway bill, certificate of origin, and the payment terms you agreed. When you're handling your first few shipments, the risk isn't usually a single big mistake. It's a document nobody chased, or a payment date nobody noticed. A simple Excel tracker helps you see what's still open.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; which documents you need depends on the product, the destination, the Incoterm and your buyer's bank. This article covers spreadsheet mechanics only. It is not export, customs, tax or legal advice; confirm requirements with your CHA, freight forwarder, bank or the official sources.&lt;/p&gt;

&lt;h2&gt;
  
  
  Sheet 1: Shipments
&lt;/h2&gt;

&lt;p&gt;One row per shipment:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Col&lt;/th&gt;
&lt;th&gt;Field&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;A&lt;/td&gt;
&lt;td&gt;Shipment ID (e.g. EXP-001)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;B&lt;/td&gt;
&lt;td&gt;Buyer&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;C&lt;/td&gt;
&lt;td&gt;Country&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;D&lt;/td&gt;
&lt;td&gt;Invoice no.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;E&lt;/td&gt;
&lt;td&gt;Invoice date&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;F&lt;/td&gt;
&lt;td&gt;Currency&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;G&lt;/td&gt;
&lt;td&gt;Invoice value&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;H&lt;/td&gt;
&lt;td&gt;Incoterm (dropdown: EXW, FOB, CIF, DAPâ€¦)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;I&lt;/td&gt;
&lt;td&gt;Advance received&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;J&lt;/td&gt;
&lt;td&gt;Balance due&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;K&lt;/td&gt;
&lt;td&gt;Balance due date&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;L&lt;/td&gt;
&lt;td&gt;Docs complete?&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;M&lt;/td&gt;
&lt;td&gt;Payment status&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Balance (J2):&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;=IF($A2="","",G2-N(I2))
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Payment status (M2):&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;=IF($A2="","",IF(J2&amp;lt;=0,"Received",IF(AND(K2&amp;lt;&amp;gt;"",TODAY()&amp;gt;K2),"Overdue","Open")))
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Keep currency as its own column and never add USD and EUR invoices together. Totals per currency use SUMIFS with a currency condition.&lt;/p&gt;

&lt;h2&gt;
  
  
  Sheet 2: Document checklist
&lt;/h2&gt;

&lt;p&gt;This is the useful part. Make a long table with one row per &lt;strong&gt;shipment Ã— document&lt;/strong&gt;:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Col&lt;/th&gt;
&lt;th&gt;Field&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;A&lt;/td&gt;
&lt;td&gt;Shipment ID&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;B&lt;/td&gt;
&lt;td&gt;Document&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;C&lt;/td&gt;
&lt;td&gt;Status (dropdown: Pending, Done, NA)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;D&lt;/td&gt;
&lt;td&gt;Date done&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;E&lt;/td&gt;
&lt;td&gt;Note (who has it, file name)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;For each new shipment, paste your standard document list (the 10â€“15 you normally need) and set the ones that don't apply to &lt;strong&gt;NA&lt;/strong&gt;. "NA" matters: it's the difference between "we decided this isn't needed" and "we forgot".&lt;/p&gt;

&lt;p&gt;Add Data Validation on column C: &lt;strong&gt;Data &amp;gt; Data Validation &amp;gt; List&lt;/strong&gt;, &lt;code&gt;Pending,Done,NA&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Linking the two sheets
&lt;/h2&gt;

&lt;p&gt;Back on Shipments, column L counts what's still pending:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;=IF($A2="","",COUNTIFS(Docs!$A:$A,$A2,Docs!$C:$C,"Pending"))
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then a readable label in a new column N:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;=IF($A2="","",IF(COUNTIFS(Docs!$A:$A,$A2)=0,"No checklist",IF(L2=0,"Ready","HOLD: "&amp;amp;L2&amp;amp;" pending")))
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The "No checklist" case catches a shipment where you forgot to add document rows at all, which would otherwise show 0 pending and look ready.&lt;/p&gt;

&lt;p&gt;Colour column N with conditional formatting: text containing "HOLD" in red, "Ready" in green.&lt;/p&gt;

&lt;h2&gt;
  
  
  Costs and contribution
&lt;/h2&gt;

&lt;p&gt;Add cost columns to Shipments: freight, insurance, CHA/forwarder charges, bank charges. Then:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Total cost:   =SUM(P2:S2)
Contribution: =IF($A2="","",G2-T2)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Keep costs in the same currency as the invoice, or add an explicit rate column you type yourself. Don't let a formula guess an exchange rate; the rate you actually got from the bank is the one that matters.&lt;/p&gt;

&lt;h2&gt;
  
  
  A weekly view
&lt;/h2&gt;

&lt;p&gt;On a Start sheet, a few counts tell you where to look:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Shipments on HOLD:  =COUNTIF(Shipments!N:N,"HOLD*")
Overdue payments:   =COUNTIF(Shipments!M:M,"Overdue")
Due in next 7 days: =COUNTIFS(Shipments!K:K,"&amp;gt;="&amp;amp;TODAY(),Shipments!K:K,"&amp;lt;="&amp;amp;TODAY()+7,Shipments!J:J,"&amp;gt;0")
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Reusing your document list
&lt;/h2&gt;

&lt;p&gt;Typing 14 document names for every shipment gets old fast. Keep a &lt;strong&gt;DocList&lt;/strong&gt; sheet with your standard list in column A and, in column B, a short note on when each one applies (for example "only if buyer asks", "only for LC payments"). For a new shipment, copy A2:A15, paste it into the Docs sheet, and fill the Shipment ID beside each row by typing it once and double-clicking the fill handle.&lt;/p&gt;

&lt;p&gt;If you ship to two very different markets, keep two lists side by side (say "Standard" and "LC shipments") and copy the one that fits. Over time the notes column becomes your own record of what each buyer and bank actually asked for, which is worth more than any generic list.&lt;/p&gt;

&lt;h2&gt;
  
  
  Protect the formulas
&lt;/h2&gt;

&lt;p&gt;Select the formula columns (balance, status, pending count, contribution), shade them light grey, then &lt;strong&gt;Format Cells &amp;gt; Protection&lt;/strong&gt; and keep them locked while unlocking the input columns. &lt;strong&gt;Review &amp;gt; Protect Sheet&lt;/strong&gt; with no password stops accidental overwrites without getting in your way.&lt;/p&gt;

&lt;h2&gt;
  
  
  Common mistakes
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Invoice and packing list disagree&lt;/strong&gt; on quantity or weight. Add a check column comparing them if you type both.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ticking "Done" with no file.&lt;/strong&gt; Use the Note column to record where the document is saved.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;One sheet per shipment.&lt;/strong&gt; It looks tidy but you can't count across shipments. Use one long checklist table.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Deleting old shipments.&lt;/strong&gt; Filter them; next year's buyer often wants the same documents as last year's.
&lt;em&gt;This article was drafted with AI tools. It's general spreadsheet guidance, not export, customs, tax or legal advice.&lt;/em&gt;
&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>excel</category>
      <category>smallbusiness</category>
      <category>productivity</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>How to track customer orders and payments in Excel (free template approach)</title>
      <dc:creator>Ashish Srivastava</dc:creator>
      <pubDate>Tue, 20 Oct 2026 18:17:23 +0000</pubDate>
      <link>https://dev.to/ashishexcelnotes/how-to-track-customer-orders-and-payments-in-excel-free-template-approach-1p1c</link>
      <guid>https://dev.to/ashishexcelnotes/how-to-track-customer-orders-and-payments-in-excel-free-template-approach-1p1c</guid>
      <description>&lt;p&gt;If you sell on WhatsApp, Instagram or at a stall, orders tend to live in chats and payments in your bank app. The question "who still owes me, and for what?" ends up taking half an hour. One Excel table with a few formulas answers it in seconds. Here's how to set it up.&lt;/p&gt;

&lt;h2&gt;
  
  
  Make it a real Excel Table
&lt;/h2&gt;

&lt;p&gt;Type these headers in row 1, select them plus a few blank rows, and press &lt;strong&gt;Ctrl+T&lt;/strong&gt; (tick "My table has headers"). Name the table &lt;code&gt;Orders&lt;/code&gt; in &lt;strong&gt;Table Design &amp;gt; Table Name&lt;/strong&gt;.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Field&lt;/th&gt;
&lt;th&gt;What goes in&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Order date&lt;/td&gt;
&lt;td&gt;Date&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Order no.&lt;/td&gt;
&lt;td&gt;e.g. 1001, 1002&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Customer&lt;/td&gt;
&lt;td&gt;Name&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Phone&lt;/td&gt;
&lt;td&gt;Optional&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Item&lt;/td&gt;
&lt;td&gt;What they bought&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Qty&lt;/td&gt;
&lt;td&gt;Number&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Rate&lt;/td&gt;
&lt;td&gt;Price per unit&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Amount&lt;/td&gt;
&lt;td&gt;Formula&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Paid&lt;/td&gt;
&lt;td&gt;Amount received so far&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Balance&lt;/td&gt;
&lt;td&gt;Formula&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Pay mode&lt;/td&gt;
&lt;td&gt;Dropdown: Cash, UPI, Bank, Card&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Delivery&lt;/td&gt;
&lt;td&gt;Dropdown: Pending, Shipped, Delivered&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Status&lt;/td&gt;
&lt;td&gt;Formula&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Tables are worth it because formulas fill down automatically when you add a row, and references read like words.&lt;/p&gt;

&lt;h2&gt;
  
  
  The formulas
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Amount:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;=[@Qty]*[@Rate]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Balance:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;=[@Amount]-N([@Paid])
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Status:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;=IF([@Amount]=0,"",IF([@Balance]&amp;lt;=0,"Paid",IF(N([@Paid])&amp;gt;0,"Part-paid","Unpaid")))
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Days since order&lt;/strong&gt; (useful for chasing):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;=IF([@Balance]&amp;gt;0,TODAY()-[@[Order date]],"")
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Dropdowns
&lt;/h2&gt;

&lt;p&gt;Select the Pay mode column, &lt;strong&gt;Data &amp;gt; Data Validation &amp;gt; List&lt;/strong&gt;, and type &lt;code&gt;Cash,UPI,Bank,Card&lt;/code&gt;. Do the same for Delivery. Consistent values are what make the summaries below work.&lt;/p&gt;

&lt;h2&gt;
  
  
  Colour what needs attention
&lt;/h2&gt;

&lt;p&gt;Select the Status column, &lt;strong&gt;Home &amp;gt; Conditional Formatting &amp;gt; Highlight Cells Rules &amp;gt; Equal To&lt;/strong&gt;: "Unpaid" red, "Part-paid" amber. Add a rule on Delivery = "Pending" if shipping is your bottleneck.&lt;/p&gt;

&lt;h2&gt;
  
  
  Customer balances in one view
&lt;/h2&gt;

&lt;p&gt;On a new sheet, list customers in column A (in Excel 365/2021, &lt;code&gt;=UNIQUE(Orders[Customer])&lt;/code&gt; does it for you). Then:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Owed:   =SUMIFS(Orders[Balance],Orders[Customer],A2)
Orders: =COUNTIFS(Orders[Customer],A2)
Oldest unpaid (days): =MAXIFS(Orders[Days since order],Orders[Customer],A2)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;MAXIFS&lt;/code&gt; needs Excel 2019 or later. Sort by "Owed", largest first, and you have your follow-up list.&lt;/p&gt;

&lt;h2&gt;
  
  
  Monthly sales and collections
&lt;/h2&gt;

&lt;p&gt;Add a helper column &lt;strong&gt;Month&lt;/strong&gt; in the table:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;=TEXT([@[Order date]],"yyyy-mm")
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then a quick summary:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Sales:     =SUMIFS(Orders[Amount],Orders[Month],"2026-10")
Collected: =SUMIFS(Orders[Paid],Orders[Month],"2026-10")
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Or insert a pivot table: Rows = Month, Values = Sum of Amount, Sum of Paid, Sum of Balance.&lt;/p&gt;

&lt;h2&gt;
  
  
  Part payments
&lt;/h2&gt;

&lt;p&gt;If a customer pays in instalments, there are two ways:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Simple:&lt;/strong&gt; just update the Paid cell (e.g. 500 becomes 1200). Fine for a few orders.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Proper:&lt;/strong&gt; a second table, &lt;code&gt;Payments&lt;/code&gt; (Date, Order no., Amount, Mode). Then the Paid column becomes:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;=SUMIFS(Payments[Amount],Payments[Order no.],[@[Order no.]])
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This keeps a dated record of every payment, which helps when a customer says "I already paid".&lt;/p&gt;

&lt;h2&gt;
  
  
  Find an order fast
&lt;/h2&gt;

&lt;p&gt;Above the table, add a search cell (say B1) and a result line. For an order number:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;=IFERROR(INDEX(Orders[Balance],MATCH($B$1,Orders[Order no.],0)),"Not found")
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;When a customer messages "what do I owe?", type their order number in B1 and answer in seconds. For a name search, use the table's own filter: click the Customer header arrow and type part of the name in the search box.&lt;/p&gt;

&lt;h2&gt;
  
  
  Keep a backup
&lt;/h2&gt;

&lt;p&gt;A single file is a single point of failure. Once a week, &lt;strong&gt;File &amp;gt; Save As&lt;/strong&gt; a dated copy (for example "Orders 2026-10-25.xlsx") to a second location such as a cloud drive or a pen drive. It takes ten seconds and saves you from a corrupted file or a lost phone.&lt;/p&gt;

&lt;h2&gt;
  
  
  Common mistakes
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Typing customer names differently.&lt;/strong&gt; "Priya", "Priya S" and "priya" become three customers. Keep a customer list and use a dropdown.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Merging cells&lt;/strong&gt; for neat headings above the table. It breaks sorting and filters; keep headings outside the table.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Deleting paid orders.&lt;/strong&gt; Filter them out instead; history is useful.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;One sheet per month.&lt;/strong&gt; One table with a Month column is far easier to summarise.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  A two-minute daily habit
&lt;/h2&gt;

&lt;p&gt;At the end of the day: add today's orders, update Paid from your UPI/bank app, then filter Status to "Unpaid". That's your follow-up list for tomorrow.&lt;br&gt;
&lt;em&gt;This article was drafted with AI tools. It's general spreadsheet guidance, not accounting, tax or legal advice.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>excel</category>
      <category>smallbusiness</category>
      <category>productivity</category>
      <category>beginners</category>
    </item>
  </channel>
</rss>
