<?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: Seller Sheets Lab</title>
    <description>The latest articles on DEV Community by Seller Sheets Lab (@sellersheetslab).</description>
    <link>https://dev.to/sellersheetslab</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%2F4227026%2F800927b0-ce86-4473-891a-763d289bb346.png</url>
      <title>DEV Community: Seller Sheets Lab</title>
      <link>https://dev.to/sellersheetslab</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/sellersheetslab"/>
    <language>en</language>
    <item>
      <title>How to Build a Monthly Budget Spreadsheet with Formulas</title>
      <dc:creator>Seller Sheets Lab</dc:creator>
      <pubDate>Thu, 05 Nov 2026 20:20:40 +0000</pubDate>
      <link>https://dev.to/sellersheetslab/how-to-build-a-monthly-budget-spreadsheet-with-formulas-10d9</link>
      <guid>https://dev.to/sellersheetslab/how-to-build-a-monthly-budget-spreadsheet-with-formulas-10d9</guid>
      <description>&lt;p&gt;A monthly budget is easier to review when it answers four questions. How much came in? How much went out? What is left? Where did you overspend?&lt;/p&gt;

&lt;p&gt;You can answer all four with a small spreadsheet and a handful of formulas. No paid app is required to follow this tutorial. The numbers below are &lt;strong&gt;clearly marked sample data&lt;/strong&gt; so you can check every formula against the arithmetic.&lt;/p&gt;

&lt;h2&gt;
  
  
  What you will build
&lt;/h2&gt;

&lt;p&gt;One tab with:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;An &lt;strong&gt;Income&lt;/strong&gt; list in columns &lt;code&gt;A:B&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;An &lt;strong&gt;Expense plan&lt;/strong&gt; in columns &lt;code&gt;D:G&lt;/code&gt; (category, planned, actual, variance)&lt;/li&gt;
&lt;li&gt;An optional &lt;strong&gt;transaction log&lt;/strong&gt; in columns &lt;code&gt;H:I&lt;/code&gt; (kept separate from Income)&lt;/li&gt;
&lt;li&gt;A &lt;strong&gt;Summary&lt;/strong&gt; block: total income, planned total, actual total, remaining cash, savings rate, and share of income per category&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;These examples use &lt;code&gt;SUM&lt;/code&gt;, &lt;code&gt;SUMIF&lt;/code&gt; and &lt;code&gt;IF&lt;/code&gt; with basic arithmetic; syntax may vary by spreadsheet locale. This post shows the formulas and the expected results for the sample. It does &lt;strong&gt;not&lt;/strong&gt; claim a full product test inside Excel or Google Sheets.&lt;/p&gt;

&lt;h2&gt;
  
  
  Layout (so ranges do not overlap)
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Columns&lt;/th&gt;
&lt;th&gt;Role&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;A:B&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Income only (source, amount)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;D:G&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Plan / actual / variance by category&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;H:I&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Transaction log (category, amount) — optional&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;code&gt;B10&lt;/code&gt;, &lt;code&gt;E10&lt;/code&gt;, &lt;code&gt;F10&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;Summary totals (keep these cells outside the log)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Do &lt;strong&gt;not&lt;/strong&gt; put the transaction log in &lt;code&gt;A:B&lt;/code&gt;. That range is reserved for income; a log there would overwrite income rows and could be counted again by a wide &lt;code&gt;SUMIF&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Sample data (examples only — replace with your numbers)
&lt;/h2&gt;

&lt;p&gt;Use these rows only to verify the formulas. Delete them when you start your own budget.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Income (sample) — columns A:B&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;A (Source)&lt;/th&gt;
&lt;th&gt;B (Amount)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Paycheck&lt;/td&gt;
&lt;td&gt;3200.00&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Side project&lt;/td&gt;
&lt;td&gt;450.00&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Put total income in &lt;code&gt;B10&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;=SUM(B2:B3)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Expected result with the sample:&lt;/strong&gt; &lt;code&gt;3650.00&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Expense plan (sample) — columns D:G&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;D (Category)&lt;/th&gt;
&lt;th&gt;E (Planned)&lt;/th&gt;
&lt;th&gt;F (Actual)&lt;/th&gt;
&lt;th&gt;G (Variance)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Rent&lt;/td&gt;
&lt;td&gt;1200.00&lt;/td&gt;
&lt;td&gt;1200.00&lt;/td&gt;
&lt;td&gt;&lt;em&gt;(formula)&lt;/em&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Groceries&lt;/td&gt;
&lt;td&gt;400.00&lt;/td&gt;
&lt;td&gt;438.50&lt;/td&gt;
&lt;td&gt;&lt;em&gt;(formula)&lt;/em&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Transport&lt;/td&gt;
&lt;td&gt;150.00&lt;/td&gt;
&lt;td&gt;142.00&lt;/td&gt;
&lt;td&gt;&lt;em&gt;(formula)&lt;/em&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Utilities&lt;/td&gt;
&lt;td&gt;180.00&lt;/td&gt;
&lt;td&gt;176.25&lt;/td&gt;
&lt;td&gt;&lt;em&gt;(formula)&lt;/em&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Subscriptions&lt;/td&gt;
&lt;td&gt;55.00&lt;/td&gt;
&lt;td&gt;55.00&lt;/td&gt;
&lt;td&gt;&lt;em&gt;(formula)&lt;/em&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Dining out&lt;/td&gt;
&lt;td&gt;120.00&lt;/td&gt;
&lt;td&gt;167.80&lt;/td&gt;
&lt;td&gt;&lt;em&gt;(formula)&lt;/em&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Savings transfer&lt;/td&gt;
&lt;td&gt;500.00&lt;/td&gt;
&lt;td&gt;500.00&lt;/td&gt;
&lt;td&gt;&lt;em&gt;(formula)&lt;/em&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;In this sample, "Savings transfer" is money you move to savings in the same month. Treat it as a planned outflow, then measure the savings rate against total income.&lt;/p&gt;

&lt;p&gt;For a first pass you can type the Actual values in &lt;code&gt;F2:F8&lt;/code&gt; (as in the table). Step 6 shows how to fill &lt;code&gt;F&lt;/code&gt; from a separate transaction log with &lt;code&gt;SUMIF&lt;/code&gt; instead.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 1: Total income
&lt;/h2&gt;

&lt;p&gt;Already covered: &lt;code&gt;B10 = SUM(B2:B3)&lt;/code&gt; → &lt;code&gt;3650.00&lt;/code&gt; with the sample.&lt;/p&gt;

&lt;p&gt;If &lt;code&gt;B2:B3&lt;/code&gt; are empty, &lt;code&gt;SUM&lt;/code&gt; returns &lt;code&gt;0&lt;/code&gt;. That is expected after you delete the sample rows and before you enter your own income.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 2: Planned and actual expense totals
&lt;/h2&gt;

&lt;p&gt;Put planned total in &lt;code&gt;E10&lt;/code&gt; and actual total in &lt;code&gt;F10&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;=SUM(E2:E8)
=SUM(F2:F8)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Expected results with the sample:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Planned total (&lt;code&gt;E10&lt;/code&gt;): &lt;code&gt;2605.00&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Actual total (&lt;code&gt;F10&lt;/code&gt;): &lt;code&gt;2679.55&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Empty planned/actual ranges also sum to &lt;code&gt;0&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 3: Remaining cash
&lt;/h2&gt;

&lt;p&gt;Remaining cash is income minus actual spending (including the savings transfer, if you logged it as an outflow):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;=B10-F10
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Expected result with the sample:&lt;/strong&gt; &lt;code&gt;970.45&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;If you prefer &lt;strong&gt;cash remaining before the savings transfer&lt;/strong&gt;, subtract actual spending &lt;em&gt;excluding&lt;/em&gt; the savings-transfer row instead. That figure is cash left before you set money aside; it is &lt;strong&gt;not&lt;/strong&gt; a recommended spending allowance. Pick one definition and keep it fixed, or the history becomes meaningless.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 4: Savings rate (guard zero income)
&lt;/h2&gt;

&lt;p&gt;With the sample definition (savings transfer ÷ total income), put this in a summary cell (for example &lt;code&gt;B12&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;=IF(B10=0,"",F8/B10)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Format the cell as a percentage when it shows a number.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Expected result with the sample:&lt;/strong&gt; &lt;code&gt;13.70%&lt;/code&gt; (500 ÷ 3650)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;When income is zero&lt;/strong&gt; (&lt;code&gt;B10=0&lt;/code&gt;), the formula returns a blank cell. A blank means “rate not defined”, &lt;strong&gt;not&lt;/strong&gt; 0%. Do not replace the blank with &lt;code&gt;0&lt;/code&gt; — that would look like a real 0% savings rate.&lt;/p&gt;

&lt;p&gt;Equivalent pattern with &lt;code&gt;IFERROR&lt;/code&gt; (same idea: hide the &lt;code&gt;#DIV/0!&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;=IFERROR(F8/B10,"")
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;IF&lt;/code&gt; is clearer when you only want to treat a zero denominator; &lt;code&gt;IFERROR&lt;/code&gt; also hides other errors. Prefer &lt;code&gt;IF(B10=0,"",…)&lt;/code&gt; for this tutorial.&lt;/p&gt;

&lt;p&gt;If your savings sit in several categories, put them in a named list and sum that list instead of one cell (&lt;code&gt;F8&lt;/code&gt; here is only the sample’s “Savings transfer” actual).&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 5: Planned vs actual (variance)
&lt;/h2&gt;

&lt;p&gt;In &lt;code&gt;G2&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;=E2-F2
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Copy down through &lt;code&gt;G8&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Reading the sign (sample convention):&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Positive = under plan (you spent less than planned)&lt;/li&gt;
&lt;li&gt;Zero = exactly on plan&lt;/li&gt;
&lt;li&gt;Negative = over plan&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Expected variances with the sample:&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;Category&lt;/th&gt;
&lt;th&gt;Variance&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Rent&lt;/td&gt;
&lt;td&gt;0.00&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Groceries&lt;/td&gt;
&lt;td&gt;-38.50&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Transport&lt;/td&gt;
&lt;td&gt;8.00&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Utilities&lt;/td&gt;
&lt;td&gt;3.75&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Subscriptions&lt;/td&gt;
&lt;td&gt;0.00&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Dining out&lt;/td&gt;
&lt;td&gt;-47.80&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Savings transfer&lt;/td&gt;
&lt;td&gt;0.00&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;So the sample month is over on groceries and dining out, and under on transport and utilities.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 6: Optional &lt;code&gt;SUMIF&lt;/code&gt; from a separate transaction log
&lt;/h2&gt;

&lt;p&gt;Keep the log in &lt;strong&gt;&lt;code&gt;H:I&lt;/code&gt;&lt;/strong&gt;, not in &lt;code&gt;A:B&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Transaction log (sample) — columns H:I&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;H (Category)&lt;/th&gt;
&lt;th&gt;I (Amount)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Rent&lt;/td&gt;
&lt;td&gt;1200.00&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Groceries&lt;/td&gt;
&lt;td&gt;200.00&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Groceries&lt;/td&gt;
&lt;td&gt;238.50&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Transport&lt;/td&gt;
&lt;td&gt;142.00&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Utilities&lt;/td&gt;
&lt;td&gt;176.25&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Subscriptions&lt;/td&gt;
&lt;td&gt;55.00&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Dining out&lt;/td&gt;
&lt;td&gt;100.00&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Dining out&lt;/td&gt;
&lt;td&gt;67.80&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Savings transfer&lt;/td&gt;
&lt;td&gt;500.00&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;In &lt;code&gt;F2&lt;/code&gt; (Actual for the first plan row), enter:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;=SUMIF($H$2:$H$200,D2,$I$2:$I$200)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Copy that formula down from &lt;code&gt;F2&lt;/code&gt; through &lt;code&gt;F8&lt;/code&gt;. Do &lt;strong&gt;not&lt;/strong&gt; put running totals or subtotal rows inside &lt;code&gt;H:I&lt;/code&gt; — only raw transactions.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Expected results with this sample log:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;F2&lt;/code&gt; (Rent) → &lt;code&gt;1200.00&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;F3&lt;/code&gt; (Groceries) → &lt;code&gt;438.50&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;F8&lt;/code&gt; (Savings transfer) → &lt;code&gt;500.00&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Empty log (&lt;code&gt;H2:I200&lt;/code&gt; blank) → every &lt;code&gt;SUMIF&lt;/code&gt; returns &lt;code&gt;0&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Category with no matching rows → &lt;code&gt;0&lt;/code&gt; for that row&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Typed Actual values and &lt;code&gt;SUMIF&lt;/code&gt;-filled Actual values should not be mixed in the same month without a clear rule. Pick one method per month.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 7: Share of income by category (guard zero income)
&lt;/h2&gt;

&lt;p&gt;Keep shares in an unused column beside the plan — for example &lt;code&gt;J2&lt;/code&gt; (do not overwrite the &lt;code&gt;H:I&lt;/code&gt; log). In &lt;code&gt;J2&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;=IF($B$10=0,"",F2/$B$10)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Format as a percentage and copy down through the seven categories.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Expected shares with the sample (rounded):&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;Category&lt;/th&gt;
&lt;th&gt;% of income&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Rent&lt;/td&gt;
&lt;td&gt;32.88%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Groceries&lt;/td&gt;
&lt;td&gt;12.01%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Transport&lt;/td&gt;
&lt;td&gt;3.89%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Utilities&lt;/td&gt;
&lt;td&gt;4.83%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Subscriptions&lt;/td&gt;
&lt;td&gt;1.51%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Dining out&lt;/td&gt;
&lt;td&gt;4.60%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Savings transfer&lt;/td&gt;
&lt;td&gt;13.70%&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;If &lt;code&gt;$B$10=0&lt;/code&gt;, each share cell stays blank (“not defined”), not &lt;code&gt;0%&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;These shares are descriptive. They are not a rule about how anyone "should" split money. Overspending relative to income can produce a share above 100% for a category; the formula does not cap at 100%.&lt;/p&gt;

&lt;h2&gt;
  
  
  A simple monthly checklist
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Enter every income amount for the month in &lt;code&gt;A:B&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Keep category names identical in the plan (&lt;code&gt;D&lt;/code&gt;) and in the transaction log (&lt;code&gt;H&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;Update actuals once a week, not only on the last day.&lt;/li&gt;
&lt;li&gt;Read variances before you change next month's plan.&lt;/li&gt;
&lt;li&gt;Change one habit at a time (for example dining out), then compare the next month.&lt;/li&gt;
&lt;/ol&gt;

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

&lt;ul&gt;
&lt;li&gt;Mixing "planned" and "actual" in the same column.&lt;/li&gt;
&lt;li&gt;Renaming "Groceries" to "Food" halfway through the month, which breaks &lt;code&gt;SUMIF&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Putting the transaction log in &lt;code&gt;A:B&lt;/code&gt; on top of Income.&lt;/li&gt;
&lt;li&gt;Do not subtract the savings transfer twice when calculating remaining cash; showing it separately as a savings-rate metric is fine.&lt;/li&gt;
&lt;li&gt;Comparing months that use different category lists.&lt;/li&gt;
&lt;li&gt;Treating one overspent week as a full-month verdict.&lt;/li&gt;
&lt;li&gt;Leaving &lt;code&gt;F8/B10&lt;/code&gt; unprotected so a zero-income month shows &lt;code&gt;#DIV/0!&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Want the workbook already built?
&lt;/h2&gt;

&lt;p&gt;You can recreate everything above in a blank sheet.&lt;/p&gt;

&lt;p&gt;If you want a ready-made annual setup instead, our &lt;strong&gt;&lt;a href="https://payhip.com/b/pOz7A" rel="noopener noreferrer"&gt;2027 Finance Planner&lt;/a&gt;&lt;/strong&gt; is a connected budget workbook with monthly planned-vs-actual tracking, paycheck planning, debt payoff, sinking funds, savings goals and a dashboard. One-time purchase, no subscription. It is a separate product from this DIY tutorial; use whichever fits your workflow.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;This article is for personal budgeting education only. It is not financial, tax or investment advice. Seller Sheets Lab is not affiliated with or endorsed by Google LLC or Microsoft Corporation.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>spreadsheets</category>
      <category>tutorial</category>
      <category>productivity</category>
      <category>beginners</category>
    </item>
    <item>
      <title>How to Track Your Etsy Search Rank in a Spreadsheet</title>
      <dc:creator>Seller Sheets Lab</dc:creator>
      <pubDate>Wed, 04 Nov 2026 19:01:02 +0000</pubDate>
      <link>https://dev.to/sellersheetslab/how-to-track-your-etsy-search-rank-in-a-spreadsheet-51cn</link>
      <guid>https://dev.to/sellersheetslab/how-to-track-your-etsy-search-rank-in-a-spreadsheet-51cn</guid>
      <description>&lt;p&gt;You changed a title, rewrote three tags and refreshed your first photo. A week later you have no idea whether any of it helped. That is the most common problem with Etsy SEO: it is easy to make changes and very hard to see their effect.&lt;/p&gt;

&lt;p&gt;A simple rank log fixes a lot of that. In this post you'll set one up in Google Sheets or Excel, with nothing but a spreadsheet and 10–15 minutes a week. You don't need a paid tool to follow along.&lt;/p&gt;

&lt;h2&gt;
  
  
  First, an honest warning about Etsy rank
&lt;/h2&gt;

&lt;p&gt;Before you start, it helps to know what Etsy itself says. In its Seller Handbook article "How Etsy Search Works", Etsy explains that search results are personalized through what it calls Context Specific Ranking. In Etsy's words, "what you see isn’t always what another buyer might be seeing", and "searching for your own listings and comparing the results over time or across devices isn’t an effective way to determine where your listings are appearing in search, since the results you see are just a small slice of a much bigger picture." Etsy recommends Shop Stats instead. (Source: &lt;a href="https://www.etsy.com/seller-handbook/article/how-etsy-search-works/375461474487" rel="noopener noreferrer"&gt;Etsy Seller Handbook, "How Etsy Search Works"&lt;/a&gt;.)&lt;/p&gt;

&lt;p&gt;So a manual rank check will never give you &lt;em&gt;the&lt;/em&gt; rank of your listing, and Etsy doesn't consider it a reliable measure. Treat it as a rough, personal indicator – a clue, not proof: if you check the same keyword, the same way, every week, you get a consistent record of what &lt;em&gt;you&lt;/em&gt; see, next to a note of what you changed. Your Shop Stats remain the real test (more on that below); the rank log helps you remember what you changed and when.&lt;/p&gt;

&lt;h2&gt;
  
  
  What you need
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;A spreadsheet (Google Sheets, Excel or any other)&lt;/li&gt;
&lt;li&gt;A private / incognito browser window&lt;/li&gt;
&lt;li&gt;A short list of keywords per listing – 3 to 5 is plenty&lt;/li&gt;
&lt;li&gt;10–15 minutes, once a week, on the same day&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Step 1: Choose the keywords you will track
&lt;/h2&gt;

&lt;p&gt;Don't track everything. For each listing, pick:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;The main keyword&lt;/strong&gt; – the phrase at the start of your title, the one that best describes the item.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Two or three long-tail keywords&lt;/strong&gt; – more specific phrases that are also in your tags (for example, a material, a style or an occasion).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Optional: one keyword you're testing&lt;/strong&gt; – a phrase you just added and want to watch.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Write them down once and keep them fixed. Changing the wording of the keyword ("boho earrings" one week, "bohemian earrings" the next) makes the history useless.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 2: Set up the spreadsheet
&lt;/h2&gt;

&lt;p&gt;Create one tab called &lt;em&gt;Rank Log&lt;/em&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;Date&lt;/th&gt;
&lt;th&gt;Listing&lt;/th&gt;
&lt;th&gt;Keyword&lt;/th&gt;
&lt;th&gt;Page&lt;/th&gt;
&lt;th&gt;Position on page&lt;/th&gt;
&lt;th&gt;Overall rank&lt;/th&gt;
&lt;th&gt;Change&lt;/th&gt;
&lt;th&gt;Notes&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Keep one row per check, and sort by Listing, then Keyword, then Date before you read the Change column.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Page&lt;/strong&gt; and &lt;strong&gt;Position on page&lt;/strong&gt; are what you see on Etsy.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Overall rank&lt;/strong&gt; turns those two numbers into one, so different weeks are comparable.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Change&lt;/strong&gt; compares this week with the previous check of the same listing and keyword.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Notes&lt;/strong&gt; is where you write what you changed ("new title", "swapped 2 tags", "new main photo"). This column is the one you'll thank yourself for later.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Step 3: Check your rank the same way every time
&lt;/h2&gt;

&lt;p&gt;Consistency matters more than precision here:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Open a &lt;strong&gt;private / incognito window&lt;/strong&gt;, so your own browsing history and login affect the results less. (They will still differ from what other buyers see – see the warning above – but you remove the most obvious bias: you, the seller, logged in.)&lt;/li&gt;
&lt;li&gt;Go to Etsy and type the keyword exactly as written in your sheet.&lt;/li&gt;
&lt;li&gt;Don't add filters or change the sorting.&lt;/li&gt;
&lt;li&gt;Scroll and find your listing. Note the &lt;strong&gt;page&lt;/strong&gt; and the &lt;strong&gt;position on that page&lt;/strong&gt;, counting every listing from the top left.&lt;/li&gt;
&lt;li&gt;Decide once whether you count ads ("Ad by…") and stick to that rule. The simplest rule: count every tile you see, ads included.&lt;/li&gt;
&lt;li&gt;If you don't find the listing within the first few pages, leave Page and Position empty and write "not found" in Notes instead of guessing. "Not found" is data too.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Try to check on the same day of the week, roughly at the same time, from the same device type. Results on mobile and desktop can look different, so pick one.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 4: Turn page + position into one number
&lt;/h2&gt;

&lt;p&gt;Etsy pages don't always show the same number of listings on every device, so count how many tiles appear on page 1 the first time you check, and use that as your &lt;em&gt;listings per page&lt;/em&gt;. Then:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Overall rank = (Page − 1) × listings per page + Position on page&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In a spreadsheet, if Page is in column D, Position in column E and your listings-per-page number is in cell J1:&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(D2="",E2=""),"",(D2-1)*$J$1+E2)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Put it in F2 and copy it down; rows marked "not found" stay empty.&lt;/p&gt;

&lt;p&gt;For the &lt;strong&gt;Change&lt;/strong&gt; column, compare with the previous check of the same listing and keyword. If the sheet is sorted by listing and keyword, put this in G3 (the first row has nothing to compare with) and copy it down:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;=IF(AND(B3=B2,C3=C2,F2&amp;lt;&amp;gt;"",F3&amp;lt;&amp;gt;""),F2-F3,"")
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It subtracts this week's rank from the previous one, so a positive number means the listing moved &lt;strong&gt;up&lt;/strong&gt; (a smaller rank number is better): from 68 to 18 gives +50. The cell stays empty on the first check of each listing and keyword, and next to a "not found" week (compare those by hand). Add conditional formatting – green for positive, red for negative – and the sheet becomes readable at a glance.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 5: Read the results without fooling yourself
&lt;/h2&gt;

&lt;p&gt;A few rules that keep a rank log honest:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Look at trends, not single weeks.&lt;/strong&gt; One jump can be noise. Three or four checks in the same direction is a pattern.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Change one thing at a time.&lt;/strong&gt; If you change the title, tags and photo on the same day, you'll never know which one worked. Use the Notes column to record each change.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Give changes time.&lt;/strong&gt; Don't rewrite a listing again two days after the last edit. Wait for a few weekly checks.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Compare listings with each other.&lt;/strong&gt; If every listing dropped the same week, the cause is probably outside your shop (season, competition, a change at Etsy), not your tags.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Step 6: Cross-check with Etsy Shop Stats
&lt;/h2&gt;

&lt;p&gt;Etsy recommends using your Shop Stats to see which listings get traffic from Etsy search and which search terms bring buyers to your shop. That's the perfect partner for your rank log:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Once a month, copy visits, orders and the top search terms from Shop Stats into a second tab.&lt;/li&gt;
&lt;li&gt;If a keyword's rank improves &lt;em&gt;and&lt;/em&gt; that search term starts appearing in your stats, that's a good sign your change is helping.&lt;/li&gt;
&lt;li&gt;If rank goes up but visits don't, the keyword may simply not be searched much – or your thumbnail isn't getting the click. That usually points to the thumbnail or the price rather than the tags.&lt;/li&gt;
&lt;li&gt;If a search term brings visits but you aren't tracking it yet, add it to your rank log.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Your rank log tells you &lt;em&gt;where you&lt;/em&gt; see the listing; Shop Stats tell you what buyers actually do. Use both.&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Searching while logged in to your seller account.&lt;/strong&gt; Your own clicks and favorites can color the results you see.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tracking 30 keywords per listing.&lt;/strong&gt; You'll stop after two weeks. Three to five is sustainable.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Forgetting the date.&lt;/strong&gt; Without dates, a list of ranks says nothing.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Panicking over one bad week.&lt;/strong&gt; Wait for a pattern.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Not writing down what you changed.&lt;/strong&gt; Then even a perfect rank history can't tell you why it moved.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Want this already built?
&lt;/h2&gt;

&lt;p&gt;You can do everything above in a blank spreadsheet, and you're welcome to build it yourself.&lt;/p&gt;

&lt;p&gt;If you'd rather skip the setup, our &lt;strong&gt;&lt;a href="https://payhip.com/b/1LOPm" rel="noopener noreferrer"&gt;Etsy SEO Spreadsheet&lt;/a&gt;&lt;/strong&gt; includes a Weekly Rank Tracker with the overall-rank and change formulas already in place (it assumes 48 listings per search page and matches each check with the previous one for the same listing and keyword), plus a dashboard and tabs for keyword research, planning your title and all 13 tags with character-limit warnings, monthly shop stats and a 14-point SEO checklist – 7 tabs in total, including a Start Here guide. File format: standard .xlsx, Excel 2016+ compatible functions, no macros; Google Sheets via import. You pay once – no subscription.&lt;/p&gt;

&lt;p&gt;Either way, the method is the same: same keyword, same way, every week, and write down what you changed. Do that for a month and you'll have a far clearer record of your Etsy SEO than guesswork can give you.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Seller Sheets Lab is not affiliated with or endorsed by Etsy, Inc.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ecommerce</category>
      <category>etsy</category>
      <category>spreadsheets</category>
      <category>productivity</category>
    </item>
  </channel>
</rss>
