{"id":206,"date":"2026-06-01T06:09:32","date_gmt":"2026-06-01T06:09:32","guid":{"rendered":"https:\/\/vikassrivastava.in\/academy\/?page_id=206"},"modified":"2026-06-03T08:18:08","modified_gmt":"2026-06-03T08:18:08","slug":"excel-studio","status":"publish","type":"page","link":"https:\/\/vikassrivastava.in\/academy\/excel-studio\/","title":{"rendered":"Excel Studio"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"206\" class=\"elementor elementor-206\">\n\t\t\t\t<div class=\"elementor-element elementor-element-9f5222f e-con e-atomic-element e-flexbox-base e-82b25db \" data-id=\"9f5222f\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"9f5222f\">\n    \t\t<div class=\"elementor-element elementor-element-d6b0b32 elementor-widget elementor-widget-html\" data-id=\"d6b0b32\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<div class=\"excel-super-library\" id=\"excelSuperLibrary\">\r\n  <style>\r\n    .excel-super-library{\r\n      --primary:#1f3552;\r\n      --accent:#0f766e;\r\n      --accent-dark:#0b5f58;\r\n      --bg:#f8fafc;\r\n      --hero:#ecfdf5;\r\n      --card:#ffffff;\r\n      --text:#172033;\r\n      --muted:#64748b;\r\n      --border:#dbe5ea;\r\n      --code:#0f172a;\r\n      --code-text:#bef264;\r\n      --mode-color:#22c7bd;\r\n      --function-color:#0ea5e9;\r\n      --formula-color:#14b8a6;\r\n      --shortcut-color:#8b5cf6;\r\n      --solver-color:#f97316;\r\n      font-family:Arial,Helvetica,sans-serif;\r\n      background:var(--bg);\r\n      color:var(--text);\r\n      min-height:100vh;\r\n      width:100vw;\r\n      margin-left:calc(50% - 50vw);\r\n      margin-right:calc(50% - 50vw);\r\n      padding:0;\r\n    }\r\n\r\n    .excel-super-library.dark-mode{\r\n      --primary:#e5eefc;\r\n      --accent:#2dd4bf;\r\n      --accent-dark:#14b8a6;\r\n      --bg:#0f172a;\r\n      --hero:#111827;\r\n      --card:#1e293b;\r\n      --text:#e5e7eb;\r\n      --muted:#cbd5e1;\r\n      --border:#334155;\r\n      --code:#020617;\r\n      --code-text:#a7f3d0;\r\n      --mode-color:#2dd4bf;\r\n      --function-color:#38bdf8;\r\n      --formula-color:#2dd4bf;\r\n      --shortcut-color:#a78bfa;\r\n      --solver-color:#fb923c;\r\n    }\r\n\r\n    .excel-super-library *{box-sizing:border-box;}\r\n\r\n    .ex-header{\r\n      background:var(--bg);\r\n      border-bottom:1px solid var(--border);\r\n      position:sticky;\r\n      top:0;\r\n      z-index:999;\r\n      box-shadow:0 8px 24px rgba(15,23,42,.12);\r\n    }\r\n\r\n    .ex-header-inner{\r\n      width:100%;\r\n      max-width:none;\r\n      margin:0;\r\n      padding:18px 24px;\r\n      display:flex;\r\n      align-items:center;\r\n      justify-content:flex-start;\r\n      gap:18px;\r\n      overflow-x:auto;\r\n    }\r\n\r\n    .ex-tab{\r\n      border:none;\r\n      color:#ffffff;\r\n      font-size:24px;\r\n      font-weight:900;\r\n      cursor:pointer;\r\n      padding:13px 24px;\r\n      border-radius:999px;\r\n      white-space:nowrap;\r\n      transition:.25s ease;\r\n      box-shadow:0 8px 22px rgba(15,23,42,.16);\r\n    }\r\n\r\n    .ex-tab-functions{background:linear-gradient(135deg,#0284c7,var(--function-color));}\r\n    .ex-tab-formulas{background:linear-gradient(135deg,#0f766e,var(--formula-color));}\r\n    .ex-tab-shortcuts{background:linear-gradient(135deg,#6d28d9,var(--shortcut-color));}\r\n    .ex-tab-solver{background:linear-gradient(135deg,#c2410c,var(--solver-color));}\r\n\r\n    .ex-tab.active,\r\n    .ex-tab:hover{\r\n      color:#ffffff;\r\n      transform:translateY(-2px);\r\n      box-shadow:0 14px 30px rgba(15,23,42,.26);\r\n      outline:3px solid rgba(255,255,255,.55);\r\n      outline-offset:2px;\r\n    }\r\n\r\n    .ex-mode-btn{\r\n      border:none;\r\n      background:var(--mode-color);\r\n      color:#fff;\r\n      border-radius:999px;\r\n      padding:11px 18px;\r\n      font-weight:900;\r\n      cursor:pointer;\r\n      white-space:nowrap;\r\n      font-size:15px;\r\n    }\r\n\r\n    .ex-container{\r\n      max-width:1280px;\r\n      margin:auto;\r\n      padding:34px 20px 70px;\r\n    }\r\n\r\n    .ex-hero{\r\n      background:linear-gradient(135deg,var(--card),var(--hero));\r\n      border:1px solid var(--border);\r\n      border-radius:28px;\r\n      padding:34px 24px;\r\n      margin-bottom:24px;\r\n      box-shadow:0 12px 30px rgba(15,23,42,.10);\r\n      text-align:center;\r\n    }\r\n\r\n    .ex-hero h2{\r\n      margin:0 0 12px;\r\n      color:var(--primary);\r\n      font-size:56px;\r\n      font-weight:900;\r\n      line-height:1.08;\r\n    }\r\n\r\n    .ex-hero p{\r\n      margin:0 0 24px;\r\n      color:var(--muted);\r\n      font-size:24px;\r\n      font-weight:600;\r\n    }\r\n\r\n    .ex-search,\r\n    .ex-select,\r\n    .ex-textarea{\r\n      width:100%;\r\n      border:1px solid var(--accent);\r\n      outline:none;\r\n      background:var(--card);\r\n      color:var(--text);\r\n      font-size:20px;\r\n      border-radius:20px;\r\n      padding:18px 22px;\r\n      box-shadow:0 0 0 4px rgba(15,118,110,.14);\r\n      margin-bottom:14px;\r\n    }\r\n\r\n    .ex-textarea{\r\n      min-height:210px;\r\n      resize:vertical;\r\n      font-size:18px;\r\n      line-height:1.7;\r\n      text-align:left;\r\n    }\r\n\r\n    .ex-chips{\r\n      display:flex;\r\n      flex-wrap:wrap;\r\n      gap:8px;\r\n      justify-content:center;\r\n      margin-top:8px;\r\n    }\r\n\r\n    .ex-chip{\r\n      border:none;\r\n      background:#e0f2fe;\r\n      color:#075985;\r\n      border-radius:999px;\r\n      padding:8px 12px;\r\n      font-weight:800;\r\n      cursor:pointer;\r\n      font-size:13px;\r\n    }\r\n\r\n    .dark-mode .ex-chip{\r\n      background:#164e63;\r\n      color:#e0f2fe;\r\n    }\r\n\r\n    .ex-summary{\r\n      display:grid;\r\n      grid-template-columns:repeat(3,1fr);\r\n      gap:14px;\r\n      margin-bottom:24px;\r\n    }\r\n\r\n    .ex-summary-card{\r\n      background:var(--card);\r\n      border:1px solid var(--border);\r\n      border-radius:18px;\r\n      padding:18px;\r\n      box-shadow:0 8px 24px rgba(15,23,42,.06);\r\n      text-align:center;\r\n      transition:.25s ease;\r\n    }\r\n\r\n    .ex-summary-card.summary-functions{\r\n      background:linear-gradient(135deg,#0284c7,var(--function-color));\r\n      border-color:var(--function-color);\r\n    }\r\n\r\n    .ex-summary-card.summary-formulas{\r\n      background:linear-gradient(135deg,#0f766e,var(--formula-color));\r\n      border-color:var(--formula-color);\r\n    }\r\n\r\n    .ex-summary-card.summary-shortcuts{\r\n      background:linear-gradient(135deg,#6d28d9,var(--shortcut-color));\r\n      border-color:var(--shortcut-color);\r\n    }\r\n\r\n\r\n    .ex-summary-card strong{\r\n      display:block;\r\n      font-size:34px;\r\n      color:#ffffff;\r\n      margin-bottom:2px;\r\n      font-weight:900;\r\n    }\r\n\r\n    .ex-summary-card span{\r\n      color:#ffffff;\r\n      font-weight:900;\r\n      font-size:18px;\r\n    }\r\n\r\n    .ex-summary-card.active-summary{\r\n      transform:translateY(-4px);\r\n      box-shadow:0 18px 40px rgba(15,23,42,.28);\r\n      outline:3px solid rgba(255,255,255,.55);\r\n      outline-offset:2px;\r\n    }\r\n\r\n    .dark-mode .ex-summary-card.active-summary{\r\n      box-shadow:0 18px 40px rgba(255,255,255,.10);\r\n    }\r\n\r\n    .ex-heading{\r\n      display:flex;\r\n      justify-content:space-between;\r\n      align-items:center;\r\n      gap:14px;\r\n      margin:22px 0 15px;\r\n    }\r\n\r\n    .ex-heading h3{\r\n      margin:0;\r\n      font-size:34px;\r\n      color:var(--primary);\r\n      font-weight:900;\r\n    }\r\n\r\n    .ex-heading span{\r\n      font-weight:900;\r\n      color:var(--muted);\r\n    }\r\n\r\n    .ex-grid{\r\n      display:grid;\r\n      grid-template-columns:repeat(3,1fr);\r\n      gap:18px;\r\n    }\r\n\r\n    .ex-card{\r\n      background:var(--card);\r\n      border:1px solid var(--border);\r\n      border-radius:22px;\r\n      padding:20px;\r\n      box-shadow:0 10px 28px rgba(15,23,42,.08);\r\n      transition:.25s ease;\r\n    }\r\n\r\n    .ex-card:hover{\r\n      transform:translateY(-4px);\r\n      box-shadow:0 18px 42px rgba(15,23,42,.16);\r\n      border-color:rgba(15,118,110,.55);\r\n    }\r\n\r\n    .ex-card h4{\r\n      margin:0 0 9px;\r\n      font-size:24px;\r\n      color:var(--primary);\r\n      line-height:1.25;\r\n      font-weight:900;\r\n    }\r\n\r\n    .ex-card p{\r\n      margin:0 0 12px;\r\n      color:var(--muted);\r\n      font-size:16px;\r\n    }\r\n\r\n    .ex-tag{\r\n      display:inline-block;\r\n      padding:6px 11px;\r\n      background:#ecfdf5;\r\n      color:#115e59;\r\n      border-radius:999px;\r\n      font-size:12px;\r\n      font-weight:900;\r\n      margin-bottom:10px;\r\n      margin-right:5px;\r\n    }\r\n\r\n    .dark-mode .ex-tag{\r\n      background:#134e4a;\r\n      color:#ccfbf1;\r\n    }\r\n\r\n    .ex-version{\r\n      display:inline-block;\r\n      padding:6px 11px;\r\n      background:#fffbeb;\r\n      color:#92400e;\r\n      border-radius:999px;\r\n      font-size:12px;\r\n      font-weight:900;\r\n      margin-bottom:10px;\r\n    }\r\n\r\n    .dark-mode .ex-version{\r\n      background:#451a03;\r\n      color:#fde68a;\r\n    }\r\n\r\n    .ex-syntax-label{\r\n      margin:12px 0 6px;\r\n      font-size:14px;\r\n      font-weight:900;\r\n      color:var(--primary);\r\n    }\r\n\r\n    .ex-code{\r\n      display:block;\r\n      background:var(--code);\r\n      color:var(--code-text);\r\n      border-radius:12px;\r\n      padding:13px;\r\n      font-family:Consolas,monospace;\r\n      font-size:14px;\r\n      overflow:auto;\r\n      white-space:pre-wrap;\r\n      margin-top:10px;\r\n      line-height:1.5;\r\n    }\r\n\r\n    .ex-key{\r\n      display:inline-block;\r\n      background:#111827;\r\n      color:#fff;\r\n      border-radius:9px;\r\n      padding:9px 12px;\r\n      font-weight:900;\r\n      margin:5px 0 12px;\r\n      font-size:15px;\r\n    }\r\n\r\n    .ex-empty{\r\n      background:var(--card);\r\n      border:1px dashed var(--border);\r\n      color:var(--muted);\r\n      padding:22px;\r\n      border-radius:18px;\r\n      font-weight:800;\r\n      grid-column:1\/-1;\r\n    }\r\n\r\n    .ex-solver{\r\n      display:none;\r\n      background:var(--card);\r\n      border:1px solid var(--border);\r\n      border-radius:24px;\r\n      padding:28px;\r\n      box-shadow:0 12px 30px rgba(15,23,42,.10);\r\n      margin-bottom:24px;\r\n    }\r\n\r\n    .ex-solver h3{\r\n      margin:0 0 8px;\r\n      color:var(--primary);\r\n      font-size:42px;\r\n      font-weight:900;\r\n    }\r\n\r\n    .ex-solver p{\r\n      margin:0 0 16px;\r\n      color:var(--muted);\r\n      font-size:18px;\r\n    }\r\n\r\n    .ex-buttons{\r\n      display:flex;\r\n      flex-wrap:wrap;\r\n      gap:14px;\r\n      margin:22px 0 4px;\r\n    }\r\n\r\n    .ex-btn{\r\n      border:none;\r\n      background:var(--accent);\r\n      color:#fff;\r\n      border-radius:999px;\r\n      padding:16px 28px;\r\n      font-weight:900;\r\n      cursor:pointer;\r\n      transition:.25s ease;\r\n      font-size:17px;\r\n    }\r\n\r\n    .ex-btn:hover{\r\n      background:var(--accent-dark);\r\n      transform:translateY(-2px);\r\n    }\r\n\r\n    .ex-btn-dark{background:var(--primary);}\r\n    .ex-btn-orange{background:#f59e0b;color:#111827;}\r\n\r\n    .ex-solution-box{\r\n      display:none;\r\n      background:var(--card);\r\n      border:1px solid var(--border);\r\n      border-radius:24px;\r\n      padding:24px;\r\n      box-shadow:0 12px 30px rgba(15,23,42,.10);\r\n      margin-bottom:24px;\r\n    }\r\n\r\n    .ex-solution-box h3{\r\n      margin:0 0 15px;\r\n      color:var(--primary);\r\n      font-size:34px;\r\n      font-weight:900;\r\n    }\r\n\r\n    .ex-solution-list{\r\n      display:grid;\r\n      gap:18px;\r\n    }\r\n\r\n    .ex-solution-item{\r\n      background:var(--bg);\r\n      border:1px solid var(--border);\r\n      border-radius:18px;\r\n      padding:20px;\r\n    }\r\n\r\n    .ex-solution-item h4{\r\n      margin:0 0 10px;\r\n      color:var(--accent);\r\n      font-size:24px;\r\n      font-weight:900;\r\n    }\r\n\r\n    .ex-solution-item p{\r\n      margin:0 0 10px;\r\n      color:var(--muted);\r\n      font-size:16px;\r\n      line-height:1.6;\r\n    }\r\n\r\n    .ex-solution-item ul{\r\n      margin:8px 0 0 20px;\r\n      color:var(--muted);\r\n      line-height:1.7;\r\n    }\r\n\r\n    .ex-data-table-wrap{\r\n      overflow-x:auto;\r\n      margin:12px 0;\r\n      border-radius:14px;\r\n      border:1px solid var(--border);\r\n    }\r\n\r\n    .ex-data-table{\r\n      width:100%;\r\n      border-collapse:collapse;\r\n      background:var(--card);\r\n      min-width:560px;\r\n    }\r\n\r\n    .ex-data-table th,\r\n    .ex-data-table td{\r\n      border:1px solid var(--border);\r\n      padding:10px 12px;\r\n      text-align:left;\r\n      color:var(--text);\r\n      font-size:14px;\r\n    }\r\n\r\n    .ex-data-table th{\r\n      background:rgba(15,118,110,.12);\r\n      color:var(--primary);\r\n      font-weight:900;\r\n    }\r\n\r\n    @media(max-width:900px){\r\n      .ex-grid,\r\n      .ex-summary{grid-template-columns:repeat(2,1fr);}\r\n      .ex-hero h2{font-size:42px;}\r\n      .ex-hero p{font-size:20px;}\r\n      .ex-tab{font-size:24px;}\r\n    }\r\n\r\n    @media(max-width:650px){\r\n      .ex-header-inner{\r\n        gap:22px;\r\n        padding:15px 16px;\r\n        justify-content:flex-start;\r\n      }\r\n\r\n      .ex-tab{font-size:21px;}\r\n\r\n      .ex-container{\r\n        padding:24px 14px 50px;\r\n      }\r\n\r\n      .ex-hero,\r\n      .ex-solver,\r\n      .ex-solution-box{\r\n        padding:22px;\r\n      }\r\n\r\n      .ex-hero h2{font-size:34px;}\r\n      .ex-hero p{font-size:17px;}\r\n      .ex-solver h3{font-size:32px;}\r\n\r\n      .ex-search,\r\n      .ex-select,\r\n      .ex-textarea{\r\n        font-size:17px;\r\n        padding:16px 18px;\r\n        border-radius:18px;\r\n      }\r\n\r\n      .ex-grid,\r\n      .ex-summary{grid-template-columns:1fr;}\r\n    }\r\n  <\/style>\r\n\r\n  <div class=\"ex-header\">\r\n    <div class=\"ex-header-inner\">\r\n      <button class=\"ex-mode-btn\" onclick=\"toggleExcelMode()\">Dark \/ Light<\/button>\r\n      <button class=\"ex-tab ex-tab-functions active\" onclick=\"setExTab('functions', this)\">Functions<\/button>\r\n      <button class=\"ex-tab ex-tab-formulas\" onclick=\"setExTab('formulas', this)\">Formulas<\/button>\r\n      <button class=\"ex-tab ex-tab-shortcuts\" onclick=\"setExTab('shortcuts', this)\">Shortcuts<\/button>\r\n      <button class=\"ex-tab ex-tab-solver\" onclick=\"setExTab('solver', this)\">Problem Solver<\/button>\r\n    <\/div>\r\n  <\/div>\r\n\r\n  <div class=\"ex-container\">\r\n    <div class=\"ex-hero\">\r\n      <h2 id=\"exTitle\">Excel Functions Library<\/h2>\r\n      <p id=\"exSubTitle\">Search from 500+ Excel functions by requirement, name, category, syntax, or version.<\/p>\r\n\r\n      <input type=\"text\" id=\"exSearchBox\" class=\"ex-search\" placeholder=\"Search: lookup, reverse lookup, sum, duplicate, date, text, filter...\" onkeyup=\"renderExResults()\">\r\n\r\n      <select id=\"exCategoryBox\" class=\"ex-select\" onchange=\"renderExResults()\">\r\n        <option value=\"All\">All Categories<\/option>\r\n      <\/select>\r\n\r\n      <div class=\"ex-chips\" id=\"exChipBox\">\r\n        <button class=\"ex-chip\" onclick=\"quickExSearch('lookup')\">lookup<\/button>\r\n        <button class=\"ex-chip\" onclick=\"quickExSearch('reverse lookup')\">reverse lookup<\/button>\r\n        <button class=\"ex-chip\" onclick=\"quickExSearch('sum condition')\">sum condition<\/button>\r\n        <button class=\"ex-chip\" onclick=\"quickExSearch('duplicate')\">duplicate<\/button>\r\n        <button class=\"ex-chip\" onclick=\"quickExSearch('filter')\">filter<\/button>\r\n        <button class=\"ex-chip\" onclick=\"quickExSearch('date')\">date<\/button>\r\n        <button class=\"ex-chip\" onclick=\"quickExSearch('text')\">text<\/button>\r\n      <\/div>\r\n    <\/div>\r\n\r\n    <div class=\"ex-summary\" id=\"exSummaryBox\">\r\n      <div class=\"ex-summary-card summary-functions\" id=\"functionSummaryCard\">\r\n        <strong id=\"exFunctionTotal\">0<\/strong>\r\n        <span>Functions<\/span>\r\n      <\/div>\r\n      <div class=\"ex-summary-card summary-formulas\" id=\"formulaSummaryCard\">\r\n        <strong id=\"exFormulaTotal\">0<\/strong>\r\n        <span>Formulas<\/span>\r\n      <\/div>\r\n      <div class=\"ex-summary-card summary-shortcuts\" id=\"shortcutSummaryCard\">\r\n        <strong id=\"exShortcutTotal\">0<\/strong>\r\n        <span>Shortcuts<\/span>\r\n      <\/div>\r\n    <\/div>\r\n\r\n    <div id=\"exSolverPanel\" class=\"ex-solver\">\r\n      <h3>Write Your Excel Problem<\/h3>\r\n      <p>Type your Excel problem below and click <b>Suggest Solution<\/b>. It will show at least 5 probable solutions with formulas, function syntax, steps, and sample dataset where applicable.<\/p>\r\n\r\n      <textarea id=\"exManualText\" class=\"ex-textarea\" placeholder=\"Example: Explain reverse lookup&#10;Example: How can I use VLOOKUP for combining 2 columns?&#10;Example: I want to sum amount by month and department.\"><\/textarea>\r\n\r\n      <div class=\"ex-buttons\">\r\n        <button class=\"ex-btn ex-btn-orange\" onclick=\"suggestExSolution()\">Suggest Solution<\/button>\r\n        <button class=\"ex-btn ex-btn-dark\" onclick=\"clearExSolver()\">Clear<\/button>\r\n      <\/div>\r\n    <\/div>\r\n\r\n    <div id=\"exSolutionBox\" class=\"ex-solution-box\">\r\n      <h3>Probable Excel Solutions<\/h3>\r\n      <div id=\"exSolutionList\" class=\"ex-solution-list\"><\/div>\r\n    <\/div>\r\n\r\n    <div id=\"exNormalPanel\">\r\n      <div class=\"ex-heading\">\r\n        <h3 id=\"exHeading\">Functions<\/h3>\r\n        <span id=\"exResultCount\">0 result(s)<\/span>\r\n      <\/div>\r\n      <div class=\"ex-grid\" id=\"exGrid\"><\/div>\r\n    <\/div>\r\n  <\/div>\r\n\r\n  <script>\r\n    let activeExTab = \"functions\";\r\n\r\n    const exFunctionNames = [\r\n      [\"ABS\",\"Math & Trig\",\"=ABS(number)\",\"Returns the absolute value of a number.\",\"absolute positive negative\"],\r\n      [\"ACOS\",\"Math & Trig\",\"=ACOS(number)\",\"Returns the arccosine of a number.\",\"trigonometry\"],\r\n      [\"ACOSH\",\"Math & Trig\",\"=ACOSH(number)\",\"Returns the inverse hyperbolic cosine.\",\"trigonometry\"],\r\n      [\"AGGREGATE\",\"Math & Trig\",\"=AGGREGATE(function_num, options, array, [k])\",\"Returns aggregate calculation and can ignore errors or hidden rows.\",\"subtotal hidden error\"],\r\n      [\"AND\",\"Logical\",\"=AND(logical1, [logical2], ...)\",\"Returns TRUE if all conditions are TRUE.\",\"condition logical\"],\r\n      [\"ARABIC\",\"Math & Trig\",\"=ARABIC(text)\",\"Converts Roman numeral to Arabic number.\",\"roman convert\"],\r\n      [\"AVERAGE\",\"Statistical\",\"=AVERAGE(number1, [number2], ...)\",\"Returns the average of numbers.\",\"average mean\"],\r\n      [\"AVERAGEA\",\"Statistical\",\"=AVERAGEA(value1, [value2], ...)\",\"Returns average including text and logical values.\",\"average\"],\r\n      [\"AVERAGEIF\",\"Statistical\",\"=AVERAGEIF(range, criteria, [average_range])\",\"Returns average based on one condition.\",\"average condition\"],\r\n      [\"AVERAGEIFS\",\"Statistical\",\"=AVERAGEIFS(average_range, criteria_range1, criteria1, ...)\",\"Returns average based on multiple conditions.\",\"average multiple\"],\r\n      [\"CEILING.MATH\",\"Math & Trig\",\"=CEILING.MATH(number, [significance], [mode])\",\"Rounds a number up.\",\"round up\"],\r\n      [\"CELL\",\"Information\",\"=CELL(info_type, [reference])\",\"Returns information about a cell.\",\"cell info\"],\r\n      [\"CHAR\",\"Text\",\"=CHAR(number)\",\"Returns a character from a code number.\",\"character\"],\r\n      [\"CHOOSE\",\"Lookup & Reference\",\"=CHOOSE(index_num, value1, [value2], ...)\",\"Chooses a value from a list.\",\"choose list\"],\r\n      [\"CHOOSECOLS\",\"Dynamic Array\",\"=CHOOSECOLS(array, col_num1, [col_num2], ...)\",\"Returns selected columns.\",\"choose columns\"],\r\n      [\"CHOOSEROWS\",\"Dynamic Array\",\"=CHOOSEROWS(array, row_num1, [row_num2], ...)\",\"Returns selected rows.\",\"choose rows\"],\r\n      [\"CLEAN\",\"Text\",\"=CLEAN(text)\",\"Removes non-printable characters.\",\"clean text\"],\r\n      [\"CODE\",\"Text\",\"=CODE(text)\",\"Returns numeric code for first character.\",\"code\"],\r\n      [\"COLUMN\",\"Lookup & Reference\",\"=COLUMN([reference])\",\"Returns column number.\",\"column\"],\r\n      [\"COLUMNS\",\"Lookup & Reference\",\"=COLUMNS(array)\",\"Returns number of columns.\",\"columns\"],\r\n      [\"CONCAT\",\"Text\",\"=CONCAT(text1, [text2], ...)\",\"Combines text.\",\"join text\"],\r\n      [\"CONCATENATE\",\"Text\",\"=CONCATENATE(text1, [text2], ...)\",\"Combines text in older Excel.\",\"join text\"],\r\n      [\"COUNT\",\"Statistical\",\"=COUNT(value1, [value2], ...)\",\"Counts numbers.\",\"count\"],\r\n      [\"COUNTA\",\"Statistical\",\"=COUNTA(value1, [value2], ...)\",\"Counts non-empty cells.\",\"count filled\"],\r\n      [\"COUNTBLANK\",\"Statistical\",\"=COUNTBLANK(range)\",\"Counts blank cells.\",\"blank\"],\r\n      [\"COUNTIF\",\"Statistical\",\"=COUNTIF(range, criteria)\",\"Counts cells based on one condition.\",\"count condition\"],\r\n      [\"COUNTIFS\",\"Statistical\",\"=COUNTIFS(criteria_range1, criteria1, ...)\",\"Counts cells based on multiple conditions.\",\"count multiple\"],\r\n      [\"DATE\",\"Date & Time\",\"=DATE(year, month, day)\",\"Creates a date.\",\"date\"],\r\n      [\"DATEDIF\",\"Date & Time\",\"=DATEDIF(start_date, end_date, unit)\",\"Calculates difference between two dates.\",\"date difference age\"],\r\n      [\"DATEVALUE\",\"Date & Time\",\"=DATEVALUE(date_text)\",\"Converts text date to Excel date.\",\"date text\"],\r\n      [\"DAY\",\"Date & Time\",\"=DAY(serial_number)\",\"Returns day from date.\",\"day\"],\r\n      [\"DAYS\",\"Date & Time\",\"=DAYS(end_date, start_date)\",\"Returns days between dates.\",\"days\"],\r\n      [\"DROP\",\"Dynamic Array\",\"=DROP(array, rows, [columns])\",\"Drops rows or columns from array.\",\"drop\"],\r\n      [\"EDATE\",\"Date & Time\",\"=EDATE(start_date, months)\",\"Adds or subtracts months from date.\",\"date month\"],\r\n      [\"EOMONTH\",\"Date & Time\",\"=EOMONTH(start_date, months)\",\"Returns month-end date.\",\"month end\"],\r\n      [\"EVEN\",\"Math & Trig\",\"=EVEN(number)\",\"Rounds up to nearest even integer.\",\"even\"],\r\n      [\"EXACT\",\"Text\",\"=EXACT(text1, text2)\",\"Compares two text values exactly.\",\"compare\"],\r\n      [\"FILTER\",\"Dynamic Array\",\"=FILTER(array, include, [if_empty])\",\"Filters data based on conditions.\",\"filter\"],\r\n      [\"FIND\",\"Text\",\"=FIND(find_text, within_text, [start_num])\",\"Finds text position case-sensitive.\",\"find\"],\r\n      [\"FLOOR.MATH\",\"Math & Trig\",\"=FLOOR.MATH(number, [significance], [mode])\",\"Rounds number down.\",\"round down\"],\r\n      [\"FORMULATEXT\",\"Lookup & Reference\",\"=FORMULATEXT(reference)\",\"Returns formula as text.\",\"formula text\"],\r\n      [\"HLOOKUP\",\"Lookup & Reference\",\"=HLOOKUP(lookup_value, table_array, row_index_num, [range_lookup])\",\"Horizontal lookup.\",\"lookup\"],\r\n      [\"HSTACK\",\"Dynamic Array\",\"=HSTACK(array1, [array2], ...)\",\"Stacks arrays horizontally.\",\"stack\"],\r\n      [\"HYPERLINK\",\"Lookup & Reference\",\"=HYPERLINK(link_location, [friendly_name])\",\"Creates hyperlink.\",\"link\"],\r\n      [\"IF\",\"Logical\",\"=IF(logical_test, value_if_true, value_if_false)\",\"Returns result based on condition.\",\"if\"],\r\n      [\"IFERROR\",\"Logical\",\"=IFERROR(value, value_if_error)\",\"Returns custom value if error.\",\"error\"],\r\n      [\"IFNA\",\"Logical\",\"=IFNA(value, value_if_na)\",\"Returns custom value for #N\/A.\",\"na error\"],\r\n      [\"IFS\",\"Logical\",\"=IFS(logical_test1, value_if_true1, ...)\",\"Checks multiple conditions.\",\"multiple if\"],\r\n      [\"INDEX\",\"Lookup & Reference\",\"=INDEX(array, row_num, [column_num])\",\"Returns value by row and column.\",\"lookup\"],\r\n      [\"INDIRECT\",\"Lookup & Reference\",\"=INDIRECT(ref_text, [a1])\",\"Creates reference from text.\",\"dynamic reference\"],\r\n      [\"INT\",\"Math & Trig\",\"=INT(number)\",\"Rounds down to integer.\",\"integer\"],\r\n      [\"ISBLANK\",\"Information\",\"=ISBLANK(value)\",\"Checks blank value.\",\"blank\"],\r\n      [\"ISERROR\",\"Information\",\"=ISERROR(value)\",\"Checks error value.\",\"error\"],\r\n      [\"ISFORMULA\",\"Information\",\"=ISFORMULA(reference)\",\"Checks formula in cell.\",\"formula\"],\r\n      [\"ISNA\",\"Information\",\"=ISNA(value)\",\"Checks #N\/A.\",\"na\"],\r\n      [\"ISNUMBER\",\"Information\",\"=ISNUMBER(value)\",\"Checks number.\",\"number\"],\r\n      [\"ISTEXT\",\"Information\",\"=ISTEXT(value)\",\"Checks text.\",\"text\"],\r\n      [\"LARGE\",\"Statistical\",\"=LARGE(array, k)\",\"Returns nth largest value.\",\"large top\"],\r\n      [\"LEFT\",\"Text\",\"=LEFT(text, [num_chars])\",\"Extracts text from left.\",\"left\"],\r\n      [\"LEN\",\"Text\",\"=LEN(text)\",\"Counts characters.\",\"length\"],\r\n      [\"LET\",\"Logical\",\"=LET(name1, value1, calculation)\",\"Assigns names inside formula.\",\"let\"],\r\n      [\"LOOKUP\",\"Lookup & Reference\",\"=LOOKUP(lookup_value, lookup_vector, [result_vector])\",\"Performs lookup.\",\"lookup\"],\r\n      [\"LOWER\",\"Text\",\"=LOWER(text)\",\"Converts text to lowercase.\",\"lower\"],\r\n      [\"MATCH\",\"Lookup & Reference\",\"=MATCH(lookup_value, lookup_array, [match_type])\",\"Returns position of value.\",\"match\"],\r\n      [\"MAX\",\"Statistical\",\"=MAX(number1, [number2], ...)\",\"Returns maximum value.\",\"max\"],\r\n      [\"MAXIFS\",\"Statistical\",\"=MAXIFS(max_range, criteria_range1, criteria1, ...)\",\"Returns max by criteria.\",\"max condition\"],\r\n      [\"MEDIAN\",\"Statistical\",\"=MEDIAN(number1, [number2], ...)\",\"Returns median value.\",\"median\"],\r\n      [\"MID\",\"Text\",\"=MID(text, start_num, num_chars)\",\"Extracts middle text.\",\"mid\"],\r\n      [\"MIN\",\"Statistical\",\"=MIN(number1, [number2], ...)\",\"Returns minimum value.\",\"min\"],\r\n      [\"MINIFS\",\"Statistical\",\"=MINIFS(min_range, criteria_range1, criteria1, ...)\",\"Returns min by criteria.\",\"min condition\"],\r\n      [\"MOD\",\"Math & Trig\",\"=MOD(number, divisor)\",\"Returns remainder.\",\"remainder\"],\r\n      [\"MONTH\",\"Date & Time\",\"=MONTH(serial_number)\",\"Returns month number.\",\"month\"],\r\n      [\"NETWORKDAYS\",\"Date & Time\",\"=NETWORKDAYS(start_date, end_date, [holidays])\",\"Returns working days.\",\"working days\"],\r\n      [\"NOW\",\"Date & Time\",\"=NOW()\",\"Returns current date and time.\",\"now\"],\r\n      [\"OR\",\"Logical\",\"=OR(logical1, [logical2], ...)\",\"Returns TRUE if any condition is true.\",\"or\"],\r\n      [\"PMT\",\"Financial\",\"=PMT(rate, nper, pv, [fv], [type])\",\"Calculates loan payment.\",\"emi\"],\r\n      [\"PROPER\",\"Text\",\"=PROPER(text)\",\"Converts text to proper case.\",\"proper\"],\r\n      [\"RAND\",\"Math & Trig\",\"=RAND()\",\"Returns random number.\",\"random\"],\r\n      [\"RANDBETWEEN\",\"Math & Trig\",\"=RANDBETWEEN(bottom, top)\",\"Returns random integer.\",\"random\"],\r\n      [\"RANK.EQ\",\"Statistical\",\"=RANK.EQ(number, ref, [order])\",\"Returns rank.\",\"rank\"],\r\n      [\"REPLACE\",\"Text\",\"=REPLACE(old_text, start_num, num_chars, new_text)\",\"Replaces text by position.\",\"replace\"],\r\n      [\"RIGHT\",\"Text\",\"=RIGHT(text, [num_chars])\",\"Extracts text from right.\",\"right\"],\r\n      [\"ROUND\",\"Math & Trig\",\"=ROUND(number, num_digits)\",\"Rounds number.\",\"round\"],\r\n      [\"ROUNDDOWN\",\"Math & Trig\",\"=ROUNDDOWN(number, num_digits)\",\"Rounds down.\",\"round\"],\r\n      [\"ROUNDUP\",\"Math & Trig\",\"=ROUNDUP(number, num_digits)\",\"Rounds up.\",\"round\"],\r\n      [\"ROW\",\"Lookup & Reference\",\"=ROW([reference])\",\"Returns row number.\",\"row\"],\r\n      [\"ROWS\",\"Lookup & Reference\",\"=ROWS(array)\",\"Returns row count.\",\"rows\"],\r\n      [\"SEARCH\",\"Text\",\"=SEARCH(find_text, within_text, [start_num])\",\"Finds text position.\",\"search\"],\r\n      [\"SEQUENCE\",\"Dynamic Array\",\"=SEQUENCE(rows, [columns], [start], [step])\",\"Creates sequence numbers.\",\"sequence\"],\r\n      [\"SORT\",\"Dynamic Array\",\"=SORT(array, [sort_index], [sort_order], [by_col])\",\"Sorts data.\",\"sort\"],\r\n      [\"SORTBY\",\"Dynamic Array\",\"=SORTBY(array, by_array1, [sort_order1], ...)\",\"Sorts data by range.\",\"sort\"],\r\n      [\"SUBSTITUTE\",\"Text\",\"=SUBSTITUTE(text, old_text, new_text, [instance_num])\",\"Substitutes text.\",\"replace\"],\r\n      [\"SUBTOTAL\",\"Math & Trig\",\"=SUBTOTAL(function_num, ref1, [ref2], ...)\",\"Calculates subtotal.\",\"subtotal\"],\r\n      [\"SUM\",\"Math & Trig\",\"=SUM(number1, [number2], ...)\",\"Adds numbers.\",\"sum\"],\r\n      [\"SUMIF\",\"Math & Trig\",\"=SUMIF(range, criteria, [sum_range])\",\"Sums by condition.\",\"sum condition\"],\r\n      [\"SUMIFS\",\"Math & Trig\",\"=SUMIFS(sum_range, criteria_range1, criteria1, ...)\",\"Sums by multiple conditions.\",\"sum multiple\"],\r\n      [\"SUMPRODUCT\",\"Math & Trig\",\"=SUMPRODUCT(array1, [array2], ...)\",\"Returns sum of products.\",\"sumproduct\"],\r\n      [\"SWITCH\",\"Logical\",\"=SWITCH(expression, value1, result1, [default])\",\"Matches values and returns result.\",\"switch\"],\r\n      [\"TAKE\",\"Dynamic Array\",\"=TAKE(array, rows, [columns])\",\"Takes rows or columns.\",\"take\"],\r\n      [\"TEXT\",\"Text\",\"=TEXT(value, format_text)\",\"Formats value as text.\",\"format\"],\r\n      [\"TEXTAFTER\",\"Text\",\"=TEXTAFTER(text, delimiter, [instance_num])\",\"Returns text after delimiter.\",\"after\"],\r\n      [\"TEXTBEFORE\",\"Text\",\"=TEXTBEFORE(text, delimiter, [instance_num])\",\"Returns text before delimiter.\",\"before\"],\r\n      [\"TEXTJOIN\",\"Text\",\"=TEXTJOIN(delimiter, ignore_empty, text1, ...)\",\"Joins text with delimiter.\",\"join\"],\r\n      [\"TEXTSPLIT\",\"Text\",\"=TEXTSPLIT(text, col_delimiter, [row_delimiter])\",\"Splits text.\",\"split\"],\r\n      [\"TODAY\",\"Date & Time\",\"=TODAY()\",\"Returns current date.\",\"today\"],\r\n      [\"TRANSPOSE\",\"Lookup & Reference\",\"=TRANSPOSE(array)\",\"Transposes rows and columns.\",\"transpose\"],\r\n      [\"TRIM\",\"Text\",\"=TRIM(text)\",\"Removes extra spaces.\",\"trim\"],\r\n      [\"UNIQUE\",\"Dynamic Array\",\"=UNIQUE(array, [by_col], [exactly_once])\",\"Returns unique values.\",\"unique\"],\r\n      [\"UPPER\",\"Text\",\"=UPPER(text)\",\"Converts text to uppercase.\",\"upper\"],\r\n      [\"VALUE\",\"Text\",\"=VALUE(text)\",\"Converts text to number.\",\"value\"],\r\n      [\"VLOOKUP\",\"Lookup & Reference\",\"=VLOOKUP(lookup_value, table_array, col_index_num, [range_lookup])\",\"Vertical lookup.\",\"lookup\"],\r\n      [\"VSTACK\",\"Dynamic Array\",\"=VSTACK(array1, [array2], ...)\",\"Stacks arrays vertically.\",\"stack\"],\r\n      [\"WEEKDAY\",\"Date & Time\",\"=WEEKDAY(serial_number, [return_type])\",\"Returns weekday number.\",\"weekday\"],\r\n      [\"WORKDAY\",\"Date & Time\",\"=WORKDAY(start_date, days, [holidays])\",\"Returns working date.\",\"workday\"],\r\n      [\"XLOOKUP\",\"Lookup & Reference\",\"=XLOOKUP(lookup_value, lookup_array, return_array, [if_not_found], [match_mode], [search_mode])\",\"Modern lookup.\",\"lookup\"],\r\n      [\"XMATCH\",\"Lookup & Reference\",\"=XMATCH(lookup_value, lookup_array, [match_mode], [search_mode])\",\"Modern match.\",\"match\"],\r\n      [\"YEAR\",\"Date & Time\",\"=YEAR(serial_number)\",\"Returns year.\",\"year\"]\r\n    ];\r\n\r\n    const exFormulaTemplates = [\r\n      [\"XLOOKUP exact match\",\"Lookup\",\"=XLOOKUP(E2,A:A,B:B,\\\"Not Found\\\")\",\"Find value and return matching result.\",\"lookup\"],\r\n      [\"VLOOKUP exact match\",\"Lookup\",\"=VLOOKUP(E2,A:C,3,FALSE)\",\"Find value in first column and return result.\",\"lookup\"],\r\n      [\"INDEX MATCH lookup\",\"Lookup\",\"=INDEX(C:C,MATCH(E2,A:A,0))\",\"Flexible lookup formula.\",\"lookup\"],\r\n      [\"Reverse lookup XLOOKUP\",\"Lookup\",\"=XLOOKUP(F2,B:B,A:A,\\\"Not Found\\\")\",\"Lookup from right to left.\",\"reverse lookup\"],\r\n      [\"Reverse lookup INDEX MATCH\",\"Lookup\",\"=INDEX(A:A,MATCH(F2,B:B,0))\",\"Return value from left column.\",\"reverse lookup\"],\r\n      [\"Two criteria XLOOKUP\",\"Lookup\",\"=XLOOKUP(1,(A:A=G2)*(B:B=H2),C:C,\\\"Not Found\\\")\",\"Lookup with two conditions.\",\"lookup multiple criteria\"],\r\n      [\"Helper column lookup\",\"Lookup\",\"=VLOOKUP(E2&F2,Sheet2!A:D,4,FALSE)\",\"Lookup with combined helper column.\",\"lookup helper\"],\r\n      [\"Sum total\",\"Sum\",\"=SUM(C2:C100)\",\"Add all values.\",\"sum\"],\r\n      [\"Sum one condition\",\"Sum\",\"=SUMIF(A:A,E2,C:C)\",\"Sum based on one condition.\",\"sum condition\"],\r\n      [\"Sum multiple conditions\",\"Sum\",\"=SUMIFS(D:D,A:A,G2,B:B,H2)\",\"Sum based on multiple conditions.\",\"sum condition\"],\r\n      [\"Sum by month\",\"Sum\",\"=SUMIFS(C:C,A:A,\\\">=\\\"&EOMONTH(E2,-1)+1,A:A,\\\"<=\\\"&EOMONTH(E2,0))\",\"Sum values for selected month.\",\"sum month\"],\r\n      [\"Visible rows total\",\"Sum\",\"=SUBTOTAL(109,C2:C100)\",\"Sum visible filtered rows only.\",\"subtotal\"],\r\n      [\"Running total\",\"Sum\",\"=SUM($C$2:C2)\",\"Create cumulative total.\",\"running total\"],\r\n      [\"Weighted average\",\"Average\",\"=SUMPRODUCT(B2:B10,C2:C10)\/SUM(C2:C10)\",\"Calculate weighted average.\",\"weighted average\"],\r\n      [\"Count numbers\",\"Count\",\"=COUNT(A2:A100)\",\"Count numeric cells.\",\"count\"],\r\n      [\"Count filled cells\",\"Count\",\"=COUNTA(A2:A100)\",\"Count non-empty cells.\",\"count\"],\r\n      [\"Count blanks\",\"Count\",\"=COUNTBLANK(A2:A100)\",\"Count blank cells.\",\"blank\"],\r\n      [\"Count one condition\",\"Count\",\"=COUNTIF(A:A,E2)\",\"Count with one condition.\",\"count condition\"],\r\n      [\"Count multiple conditions\",\"Count\",\"=COUNTIFS(A:A,E2,B:B,F2)\",\"Count with multiple conditions.\",\"count condition\"],\r\n      [\"Count duplicates\",\"Cleaning\",\"=IF(COUNTIF(A:A,A2)>1,\\\"Duplicate\\\",\\\"Unique\\\")\",\"Mark duplicate values.\",\"duplicate\"],\r\n      [\"Unique list\",\"Dynamic Array\",\"=UNIQUE(A2:A100)\",\"Create unique list.\",\"unique\"],\r\n      [\"Filter records\",\"Dynamic Array\",\"=FILTER(A2:D100,B2:B100=G2,\\\"No Data\\\")\",\"Filter data by condition.\",\"filter\"],\r\n      [\"Sort data\",\"Dynamic Array\",\"=SORT(A2:D100,2,1)\",\"Sort data dynamically.\",\"sort\"],\r\n      [\"Sort by another column\",\"Dynamic Array\",\"=SORTBY(A2:D100,D2:D100,-1)\",\"Sort by another range.\",\"sort\"],\r\n      [\"Serial numbers\",\"Dynamic Array\",\"=SEQUENCE(100)\",\"Create automatic serial numbers.\",\"sequence\"],\r\n      [\"Take top rows\",\"Dynamic Array\",\"=TAKE(A2:D100,10)\",\"Return top rows.\",\"take\"],\r\n      [\"Drop first row\",\"Dynamic Array\",\"=DROP(A2:D100,1)\",\"Remove first row.\",\"drop\"],\r\n      [\"Join text\",\"Text\",\"=TEXTJOIN(\\\" \\\",TRUE,A2:C2)\",\"Join text with separator.\",\"join text\"],\r\n      [\"Old text join\",\"Text\",\"=CONCATENATE(A2,\\\" \\\",B2)\",\"Join text in old Excel.\",\"join text\"],\r\n      [\"Split text\",\"Text\",\"=TEXTSPLIT(A2,\\\",\\\")\",\"Split text by delimiter.\",\"split\"],\r\n      [\"Text before delimiter\",\"Text\",\"=TEXTBEFORE(A2,\\\"-\\\")\",\"Extract text before delimiter.\",\"text before\"],\r\n      [\"Text after delimiter\",\"Text\",\"=TEXTAFTER(A2,\\\"-\\\")\",\"Extract text after delimiter.\",\"text after\"],\r\n      [\"Extract left text\",\"Text\",\"=LEFT(A2,5)\",\"Extract left characters.\",\"left\"],\r\n      [\"Extract right text\",\"Text\",\"=RIGHT(A2,4)\",\"Extract right characters.\",\"right\"],\r\n      [\"Extract middle text\",\"Text\",\"=MID(A2,3,5)\",\"Extract middle characters.\",\"mid\"],\r\n      [\"Remove spaces\",\"Cleaning\",\"=TRIM(A2)\",\"Remove extra spaces.\",\"trim\"],\r\n      [\"Clean imported text\",\"Cleaning\",\"=CLEAN(A2)\",\"Remove non-printable characters.\",\"clean\"],\r\n      [\"Uppercase\",\"Text\",\"=UPPER(A2)\",\"Convert to uppercase.\",\"upper\"],\r\n      [\"Lowercase\",\"Text\",\"=LOWER(A2)\",\"Convert to lowercase.\",\"lower\"],\r\n      [\"Proper case\",\"Text\",\"=PROPER(A2)\",\"Convert to proper case.\",\"proper\"],\r\n      [\"Replace text\",\"Text\",\"=SUBSTITUTE(A2,\\\"old\\\",\\\"new\\\")\",\"Replace specific text.\",\"replace\"],\r\n      [\"Find position\",\"Text\",\"=SEARCH(\\\"-\\\",A2)\",\"Find text position.\",\"search\"],\r\n      [\"Text length\",\"Text\",\"=LEN(A2)\",\"Count characters.\",\"length\"],\r\n      [\"Convert text number\",\"Text\",\"=VALUE(A2)\",\"Convert text to number.\",\"value\"],\r\n      [\"Today date\",\"Date\",\"=TODAY()\",\"Return today date.\",\"today\"],\r\n      [\"Current date time\",\"Date\",\"=NOW()\",\"Return current date and time.\",\"now\"],\r\n      [\"Age in years\",\"Date\",\"=DATEDIF(A2,TODAY(),\\\"Y\\\")\",\"Calculate age.\",\"age\"],\r\n      [\"Days between dates\",\"Date\",\"=DAYS(B2,A2)\",\"Calculate date difference.\",\"days\"],\r\n      [\"Working days\",\"Date\",\"=NETWORKDAYS(A2,B2)\",\"Calculate working days.\",\"working days\"],\r\n      [\"Month end\",\"Date\",\"=EOMONTH(A2,0)\",\"Get month end date.\",\"month end\"],\r\n      [\"Add months\",\"Date\",\"=EDATE(A2,3)\",\"Add months to date.\",\"edate\"],\r\n      [\"Year from date\",\"Date\",\"=YEAR(A2)\",\"Extract year.\",\"year\"],\r\n      [\"Month from date\",\"Date\",\"=MONTH(A2)\",\"Extract month.\",\"month\"],\r\n      [\"Day from date\",\"Date\",\"=DAY(A2)\",\"Extract day.\",\"day\"],\r\n      [\"Pass fail\",\"Logical\",\"=IF(C2>=50,\\\"Pass\\\",\\\"Fail\\\")\",\"Return pass or fail.\",\"if\"],\r\n      [\"IF with AND\",\"Logical\",\"=IF(AND(B2=\\\"Yes\\\",C2>=80),\\\"Eligible\\\",\\\"Not Eligible\\\")\",\"Multiple true conditions.\",\"and if\"],\r\n      [\"IF with OR\",\"Logical\",\"=IF(OR(B2=\\\"Yes\\\",C2>=80),\\\"Eligible\\\",\\\"Not Eligible\\\")\",\"Any true condition.\",\"or if\"],\r\n      [\"IFS grade\",\"Logical\",\"=IFS(C2>=90,\\\"A\\\",C2>=75,\\\"B\\\",C2>=50,\\\"C\\\",TRUE,\\\"Fail\\\")\",\"Grade using multiple conditions.\",\"ifs\"],\r\n      [\"Remove error\",\"Logical\",\"=IFERROR(A2\/B2,0)\",\"Replace formula error.\",\"iferror\"],\r\n      [\"Check blank\",\"Logical\",\"=IF(A2=\\\"\\\",\\\"Blank\\\",\\\"Filled\\\")\",\"Check blank cell.\",\"blank\"],\r\n      [\"Round number\",\"Math\",\"=ROUND(A2,2)\",\"Round to decimals.\",\"round\"],\r\n      [\"Round up\",\"Math\",\"=ROUNDUP(A2,0)\",\"Round upward.\",\"round\"],\r\n      [\"Round down\",\"Math\",\"=ROUNDDOWN(A2,0)\",\"Round downward.\",\"round\"],\r\n      [\"Remainder\",\"Math\",\"=MOD(A2,2)\",\"Get remainder.\",\"mod\"],\r\n      [\"Random number\",\"Math\",\"=RAND()\",\"Generate random decimal.\",\"random\"],\r\n      [\"Random between\",\"Math\",\"=RANDBETWEEN(1,100)\",\"Generate random integer.\",\"random\"],\r\n      [\"Absolute value\",\"Math\",\"=ABS(A2)\",\"Remove negative sign.\",\"abs\"],\r\n      [\"Power\",\"Math\",\"=POWER(A2,2)\",\"Raise to power.\",\"power\"],\r\n      [\"Rank\",\"Statistics\",\"=RANK.EQ(C2,$C$2:$C$100,0)\",\"Rank values.\",\"rank\"],\r\n      [\"Top 5 values\",\"Statistics\",\"=LARGE(C:C,SEQUENCE(5))\",\"Return top values.\",\"large\"],\r\n      [\"Smallest value\",\"Statistics\",\"=SMALL(C:C,1)\",\"Return smallest value.\",\"small\"],\r\n      [\"Max by condition\",\"Statistics\",\"=MAXIFS(C:C,A:A,E2)\",\"Max with condition.\",\"maxifs\"],\r\n      [\"Min by condition\",\"Statistics\",\"=MINIFS(C:C,A:A,E2)\",\"Min with condition.\",\"minifs\"],\r\n      [\"EMI calculation\",\"Financial\",\"=PMT(rate\/12,months,-loan_amount)\",\"Calculate EMI.\",\"emi\"],\r\n      [\"Future value\",\"Financial\",\"=FV(rate,nper,pmt)\",\"Calculate future value.\",\"fv\"],\r\n      [\"Present value\",\"Financial\",\"=PV(rate,nper,pmt)\",\"Calculate present value.\",\"pv\"],\r\n      [\"NPV\",\"Financial\",\"=NPV(rate,C2:C10)\",\"Calculate NPV.\",\"npv\"],\r\n      [\"Hyperlink\",\"Reference\",\"=HYPERLINK(A2,\\\"Open Link\\\")\",\"Create clickable link.\",\"hyperlink\"],\r\n      [\"Formula as text\",\"Reference\",\"=FORMULATEXT(A2)\",\"Show formula as text.\",\"formulatext\"],\r\n      [\"Row number\",\"Reference\",\"=ROW()\",\"Return row number.\",\"row\"],\r\n      [\"Column number\",\"Reference\",\"=COLUMN()\",\"Return column number.\",\"column\"],\r\n      [\"Transpose\",\"Reference\",\"=TRANSPOSE(A2:D10)\",\"Rows to columns.\",\"transpose\"]\r\n    ];\r\n\r\n    const exShortcutTemplates = [\r\n      [\"Ctrl + N\",\"Workbook\",\"Windows\",\"Create new workbook.\",\"new workbook\"],\r\n      [\"Ctrl + O\",\"Workbook\",\"Windows\",\"Open workbook.\",\"open\"],\r\n      [\"Ctrl + S\",\"Workbook\",\"Windows\",\"Save workbook.\",\"save\"],\r\n      [\"F12\",\"Workbook\",\"Windows\",\"Save As.\",\"save as\"],\r\n      [\"Ctrl + P\",\"Workbook\",\"Windows\",\"Print workbook.\",\"print\"],\r\n      [\"Ctrl + W\",\"Workbook\",\"Windows\",\"Close workbook.\",\"close\"],\r\n      [\"Ctrl + Z\",\"Editing\",\"Windows\",\"Undo last action.\",\"undo\"],\r\n      [\"Ctrl + Y\",\"Editing\",\"Windows\",\"Redo last action.\",\"redo\"],\r\n      [\"Ctrl + X\",\"Editing\",\"Windows\",\"Cut selected cells.\",\"cut\"],\r\n      [\"Ctrl + C\",\"Editing\",\"Windows\",\"Copy selected cells.\",\"copy\"],\r\n      [\"Ctrl + V\",\"Editing\",\"Windows\",\"Paste copied cells.\",\"paste\"],\r\n      [\"Ctrl + Alt + V\",\"Editing\",\"Windows\",\"Paste Special.\",\"paste special\"],\r\n      [\"Delete\",\"Editing\",\"Windows\",\"Clear selected contents.\",\"delete\"],\r\n      [\"F2\",\"Editing\",\"Windows\",\"Edit active cell.\",\"edit\"],\r\n      [\"Alt + Enter\",\"Editing\",\"Windows\",\"Line break inside cell.\",\"line break\"],\r\n      [\"Ctrl + D\",\"Editing\",\"Windows\",\"Fill down.\",\"fill down\"],\r\n      [\"Ctrl + R\",\"Editing\",\"Windows\",\"Fill right.\",\"fill right\"],\r\n      [\"Ctrl + F\",\"Editing\",\"Windows\",\"Find.\",\"find\"],\r\n      [\"Ctrl + H\",\"Editing\",\"Windows\",\"Find and replace.\",\"replace\"],\r\n      [\"Ctrl + A\",\"Selection\",\"Windows\",\"Select current region.\",\"select all\"],\r\n      [\"Ctrl + Space\",\"Selection\",\"Windows\",\"Select column.\",\"column\"],\r\n      [\"Shift + Space\",\"Selection\",\"Windows\",\"Select row.\",\"row\"],\r\n      [\"Ctrl + Shift + Space\",\"Selection\",\"Windows\",\"Select worksheet.\",\"worksheet\"],\r\n      [\"Ctrl + Home\",\"Navigation\",\"Windows\",\"Go to start.\",\"home\"],\r\n      [\"Ctrl + End\",\"Navigation\",\"Windows\",\"Go to last used cell.\",\"end\"],\r\n      [\"Ctrl + Arrow\",\"Navigation\",\"Windows\",\"Move to edge of data.\",\"navigation\"],\r\n      [\"Page Up\",\"Navigation\",\"Windows\",\"Move one screen up.\",\"page\"],\r\n      [\"Page Down\",\"Navigation\",\"Windows\",\"Move one screen down.\",\"page\"],\r\n      [\"Alt + Page Up\",\"Navigation\",\"Windows\",\"Move screen left.\",\"left\"],\r\n      [\"Alt + Page Down\",\"Navigation\",\"Windows\",\"Move screen right.\",\"right\"],\r\n      [\"Ctrl + Page Up\",\"Worksheet\",\"Windows\",\"Previous sheet.\",\"sheet\"],\r\n      [\"Ctrl + Page Down\",\"Worksheet\",\"Windows\",\"Next sheet.\",\"sheet\"],\r\n      [\"Shift + F11\",\"Worksheet\",\"Windows\",\"Insert new sheet.\",\"sheet\"],\r\n      [\"Ctrl + 1\",\"Formatting\",\"Windows\",\"Format Cells dialog.\",\"format\"],\r\n      [\"Ctrl + B\",\"Formatting\",\"Windows\",\"Bold.\",\"bold\"],\r\n      [\"Ctrl + I\",\"Formatting\",\"Windows\",\"Italic.\",\"italic\"],\r\n      [\"Ctrl + U\",\"Formatting\",\"Windows\",\"Underline.\",\"underline\"],\r\n      [\"Ctrl + 5\",\"Formatting\",\"Windows\",\"Strikethrough.\",\"strike\"],\r\n      [\"Ctrl + Shift + $\",\"Formatting\",\"Windows\",\"Currency format.\",\"currency\"],\r\n      [\"Ctrl + Shift + %\",\"Formatting\",\"Windows\",\"Percentage format.\",\"percentage\"],\r\n      [\"Ctrl + Shift + #\",\"Formatting\",\"Windows\",\"Date format.\",\"date\"],\r\n      [\"Ctrl + Shift + @\",\"Formatting\",\"Windows\",\"Time format.\",\"time\"],\r\n      [\"Ctrl + Shift + !\",\"Formatting\",\"Windows\",\"Number format.\",\"number\"],\r\n      [\"Alt + =\",\"Formulas\",\"Windows\",\"AutoSum.\",\"sum\"],\r\n      [\"Ctrl + `\",\"Formulas\",\"Windows\",\"Show formulas.\",\"formula\"],\r\n      [\"F4\",\"Formulas\",\"Windows\",\"Toggle absolute reference.\",\"absolute\"],\r\n      [\"Shift + F3\",\"Formulas\",\"Windows\",\"Insert Function dialog.\",\"function\"],\r\n      [\"F9\",\"Formulas\",\"Windows\",\"Calculate workbook.\",\"calculate\"],\r\n      [\"Shift + F9\",\"Formulas\",\"Windows\",\"Calculate active sheet.\",\"calculate\"],\r\n      [\"Ctrl + ;\",\"Data Entry\",\"Windows\",\"Insert current date.\",\"date\"],\r\n      [\"Ctrl + Shift + ;\",\"Data Entry\",\"Windows\",\"Insert current time.\",\"time\"],\r\n      [\"Ctrl + Shift + L\",\"Data\",\"Windows\",\"Apply or remove filter.\",\"filter\"],\r\n      [\"Alt + Down Arrow\",\"Data\",\"Windows\",\"Open dropdown\/filter.\",\"dropdown\"],\r\n      [\"Alt + A + S + A\",\"Data\",\"Windows\",\"Sort ascending.\",\"sort\"],\r\n      [\"Alt + A + S + D\",\"Data\",\"Windows\",\"Sort descending.\",\"sort\"],\r\n      [\"Alt + A + M\",\"Data\",\"Windows\",\"Remove duplicates.\",\"duplicate\"],\r\n      [\"Alt + A + T\",\"Data\",\"Windows\",\"Text to Columns.\",\"text to columns\"],\r\n      [\"Ctrl + T\",\"Tables\",\"Windows\",\"Create table.\",\"table\"],\r\n      [\"Ctrl + L\",\"Tables\",\"Windows\",\"Create table.\",\"table\"],\r\n      [\"Ctrl + K\",\"Insert\",\"Windows\",\"Insert hyperlink.\",\"link\"],\r\n      [\"Alt + N + V\",\"Insert\",\"Windows\",\"Insert PivotTable.\",\"pivot\"],\r\n      [\"Alt + N + R\",\"Insert\",\"Windows\",\"Insert recommended chart.\",\"chart\"],\r\n      [\"Ctrl + 9\",\"Rows & Columns\",\"Windows\",\"Hide rows.\",\"hide\"],\r\n      [\"Ctrl + Shift + 9\",\"Rows & Columns\",\"Windows\",\"Unhide rows.\",\"unhide\"],\r\n      [\"Ctrl + 0\",\"Rows & Columns\",\"Windows\",\"Hide columns.\",\"hide\"],\r\n      [\"Ctrl + Shift + +\",\"Rows & Columns\",\"Windows\",\"Insert cells\/rows\/columns.\",\"insert\"],\r\n      [\"Ctrl + -\",\"Rows & Columns\",\"Windows\",\"Delete cells\/rows\/columns.\",\"delete\"],\r\n      [\"Alt + H + O + I\",\"Rows & Columns\",\"Windows\",\"AutoFit column width.\",\"autofit\"],\r\n      [\"Alt + H + O + A\",\"Rows & Columns\",\"Windows\",\"AutoFit row height.\",\"autofit\"],\r\n      [\"Alt + W + F + F\",\"View\",\"Windows\",\"Freeze panes.\",\"freeze\"],\r\n      [\"Alt + W + Q\",\"View\",\"Windows\",\"Zoom dialog.\",\"zoom\"],\r\n      [\"Ctrl + Mouse Wheel\",\"View\",\"Windows\",\"Zoom in or out.\",\"zoom\"],\r\n      [\"Command + N\",\"Workbook\",\"Mac\",\"Create workbook on Mac.\",\"mac\"],\r\n      [\"Command + O\",\"Workbook\",\"Mac\",\"Open workbook on Mac.\",\"mac\"],\r\n      [\"Command + S\",\"Workbook\",\"Mac\",\"Save workbook on Mac.\",\"mac\"],\r\n      [\"Command + P\",\"Workbook\",\"Mac\",\"Print workbook on Mac.\",\"mac\"],\r\n      [\"Command + Z\",\"Editing\",\"Mac\",\"Undo on Mac.\",\"mac\"],\r\n      [\"Command + Y\",\"Editing\",\"Mac\",\"Redo on Mac.\",\"mac\"],\r\n      [\"Command + X\",\"Editing\",\"Mac\",\"Cut on Mac.\",\"mac\"],\r\n      [\"Command + C\",\"Editing\",\"Mac\",\"Copy on Mac.\",\"mac\"],\r\n      [\"Command + V\",\"Editing\",\"Mac\",\"Paste on Mac.\",\"mac\"],\r\n      [\"Command + F\",\"Editing\",\"Mac\",\"Find on Mac.\",\"mac\"],\r\n      [\"Command + B\",\"Formatting\",\"Mac\",\"Bold on Mac.\",\"mac\"],\r\n      [\"Command + I\",\"Formatting\",\"Mac\",\"Italic on Mac.\",\"mac\"],\r\n      [\"Command + U\",\"Formatting\",\"Mac\",\"Underline on Mac.\",\"mac\"],\r\n      [\"Command + K\",\"Insert\",\"Mac\",\"Insert hyperlink on Mac.\",\"mac\"]\r\n    ];\r\n\r\n    const exSolutionRules = [\r\n      {\r\n        match:\"reverse lookup left lookup lookup from right to left\",\r\n        title:\"Solution 1: Reverse Lookup using XLOOKUP\",\r\n        solution:\"XLOOKUP is the easiest formula for reverse lookup because it can search in any direction.\",\r\n        formula:\"=XLOOKUP(F2,B:B,A:A,\\\"Not Found\\\")\",\r\n        functions:[[\"XLOOKUP\",\"=XLOOKUP(lookup_value, lookup_array, return_array, [if_not_found], [match_mode], [search_mode])\"]],\r\n        shortcut:\"F4 to lock ranges\",\r\n        dataset:[[\"Emp Code\",\"Employee Name\",\"Salary\"],[\"E101\",\"Ravi\",45000],[\"E102\",\"Amit\",52000],[\"E103\",\"Neha\",61000]],\r\n        steps:[\"Suppose Employee Name is in column B and Emp Code is in column A.\",\"Write the employee name in F2.\",\"Use XLOOKUP to search F2 in column B.\",\"Return the matching Emp Code from column A.\"]\r\n      },\r\n      {\r\n        match:\"reverse lookup left lookup index match\",\r\n        title:\"Solution 2: Reverse Lookup using INDEX + MATCH\",\r\n        solution:\"INDEX MATCH works in all Excel versions and is best when you need to return data from the left side.\",\r\n        formula:\"=INDEX(A:A,MATCH(F2,B:B,0))\",\r\n        functions:[[\"INDEX\",\"=INDEX(array, row_num, [column_num])\"],[\"MATCH\",\"=MATCH(lookup_value, lookup_array, [match_type])\"]],\r\n        shortcut:\"F4 to lock selected ranges\",\r\n        dataset:[[\"Emp Code\",\"Employee Name\",\"Department\"],[\"E101\",\"Ravi\",\"Finance\"],[\"E102\",\"Amit\",\"HR\"],[\"E103\",\"Neha\",\"IT\"]],\r\n        steps:[\"MATCH finds the position of the lookup value in column B.\",\"INDEX returns the value from column A at the same position.\",\"Use 0 in MATCH for exact match.\",\"This works in older Excel also.\"]\r\n      },\r\n      {\r\n        match:\"reverse lookup vlookup choose\",\r\n        title:\"Solution 3: Reverse Lookup using VLOOKUP + CHOOSE\",\r\n        solution:\"VLOOKUP normally cannot look left, but CHOOSE can create a virtual table where the lookup column comes first.\",\r\n        formula:\"=VLOOKUP(F2,CHOOSE({1,2},B:B,A:A),2,FALSE)\",\r\n        functions:[[\"VLOOKUP\",\"=VLOOKUP(lookup_value, table_array, col_index_num, [range_lookup])\"],[\"CHOOSE\",\"=CHOOSE(index_num, value1, [value2], ...)\"]],\r\n        shortcut:\"Ctrl + Shift + Enter in older Excel versions if required\",\r\n        dataset:[[\"Emp Code\",\"Employee Name\"],[\"E101\",\"Ravi\"],[\"E102\",\"Amit\"],[\"E103\",\"Neha\"]],\r\n        steps:[\"CHOOSE creates a virtual table with Employee Name first and Emp Code second.\",\"VLOOKUP searches the employee name in this virtual first column.\",\"It returns Emp Code from the second virtual column.\",\"Use FALSE for exact match.\"]\r\n      },\r\n      {\r\n        match:\"reverse lookup filter\",\r\n        title:\"Solution 4: Reverse Lookup using FILTER\",\r\n        solution:\"FILTER can return matching records based on a condition and is useful in Excel 365 or 2021.\",\r\n        formula:\"=FILTER(A2:C10,B2:B10=F2,\\\"No Record Found\\\")\",\r\n        functions:[[\"FILTER\",\"=FILTER(array, include, [if_empty])\"]],\r\n        shortcut:\"Ctrl + Shift + L for manual filter\",\r\n        dataset:[[\"Emp Code\",\"Employee Name\",\"Salary\"],[\"E101\",\"Ravi\",45000],[\"E102\",\"Amit\",52000],[\"E103\",\"Neha\",61000]],\r\n        steps:[\"Select the complete return range A2:C10.\",\"Use condition B2:B10=F2.\",\"FILTER returns all matching rows.\",\"Use No Record Found for blank result.\"]\r\n      },\r\n      {\r\n        match:\"reverse lookup power query\",\r\n        title:\"Solution 5: Reverse Lookup using Power Query Merge\",\r\n        solution:\"For large data, Power Query is better than formulas because it is more stable and refreshable.\",\r\n        formula:\"Data tab > Get Data > Merge Queries\",\r\n        functions:[[\"Power Query Merge\",\"Used to join two tables based on common columns.\"]],\r\n        shortcut:\"Alt + A + P + N may vary by Excel version\",\r\n        dataset:[[\"Table 1: Employee Name\",\"Required Result\"],[\"Ravi\",\"Emp Code\"],[\"Amit\",\"Emp Code\"],[\"Neha\",\"Emp Code\"]],\r\n        steps:[\"Load both tables into Power Query.\",\"Use Merge Queries.\",\"Select common lookup column.\",\"Expand the required column from the matched table.\",\"Close and Load the result.\"]\r\n      },\r\n      {\r\n        match:\"vlookup combining 2 columns combine two columns multiple criteria helper column\",\r\n        title:\"Solution 1: VLOOKUP with Helper Column\",\r\n        solution:\"For lookup using two columns, create a helper column by joining both lookup columns.\",\r\n        formula:\"Helper Column:\\n=A2&B2\\n\\nLookup Formula:\\n=VLOOKUP(E2&F2,Sheet2!A:D,4,FALSE)\",\r\n        functions:[[\"VLOOKUP\",\"=VLOOKUP(lookup_value, table_array, col_index_num, [range_lookup])\"],[\"IFERROR\",\"=IFERROR(value, value_if_error)\"]],\r\n        shortcut:\"Ctrl + D to fill formula down\",\r\n        dataset:[[\"Item\",\"Location\",\"Helper\",\"Qty\"],[\"Cable\",\"Delhi\",\"CableDelhi\",100],[\"Cable\",\"Noida\",\"CableNoida\",80],[\"Kit\",\"Delhi\",\"KitDelhi\",50]],\r\n        steps:[\"Create helper column by joining Item and Location.\",\"Join lookup Item and Location in the lookup formula.\",\"Use VLOOKUP on helper column.\",\"Use IFERROR to handle missing records.\"]\r\n      },\r\n      {\r\n        match:\"sum total amount quantity condition criteria month monthly department\",\r\n        title:\"Solution 1: SUMIFS for Multiple Conditions\",\r\n        solution:\"Use SUMIFS when you need total based on department, month, item, location, or other conditions.\",\r\n        formula:\"=SUMIFS(D:D,A:A,G2,B:B,H2)\",\r\n        functions:[[\"SUMIFS\",\"=SUMIFS(sum_range, criteria_range1, criteria1, ...)\"]],\r\n        shortcut:\"Alt + = for AutoSum\",\r\n        dataset:[[\"Department\",\"Month\",\"Item\",\"Amount\"],[\"Finance\",\"Jan\",\"Cable\",5000],[\"Finance\",\"Feb\",\"Cable\",7000],[\"HR\",\"Jan\",\"Kit\",3000]],\r\n        steps:[\"Select the amount column as sum_range.\",\"Select Department column as criteria range 1.\",\"Select Month column as criteria range 2.\",\"Enter required department and month in separate cells.\"]\r\n      }\r\n    ];\r\n\r\n    function toFunctions(data){\r\n      const useCases = [\r\n        [\"Core Function\", \"Basic office use case for daily Excel work.\", \"basic office daily\"],\r\n        [\"Data Cleaning Use\", \"Useful while cleaning imported or messy business data.\", \"data cleaning imported messy\"],\r\n        [\"MIS Report Use\", \"Useful while preparing MIS, dashboard, and monthly report files.\", \"mis report dashboard monthly\"],\r\n        [\"Audit Check Use\", \"Useful for checking, validating, and reviewing working files.\", \"audit check validation review\"],\r\n        [\"Automation Ready Use\", \"Useful when the formula output is required for automation-ready Excel templates.\", \"automation template productivity\"]\r\n      ];\r\n\r\n      let out = [];\r\n      data.forEach(x => {\r\n        useCases.forEach((useCase, index) => {\r\n          out.push({\r\n            name:index === 0 ? x[0] : x[0] + \" - \" + useCase[0],\r\n            category:x[1],\r\n            version:x[0].includes(\"XLOOKUP\") || x[0].includes(\"FILTER\") || x[0].includes(\"UNIQUE\") || x[0].includes(\"SORT\") || x[0].includes(\"TEXTSPLIT\") ? \"Excel 365 \/ 2021+\" : \"All Versions\",\r\n            detail:(index === 0 ? x[3] : useCase[1] + \" \" + x[3]),\r\n            syntax:x[2],\r\n            keywords:x[4] + \" \" + useCase[2]\r\n          });\r\n        });\r\n      });\r\n\r\n      return out;\r\n    }\r\n\r\n    function toFormulas(data){\r\n      const formulaUseCases = [\r\n        [\"Standard Formula\", \"Ready-to-use standard formula for office work.\", \"standard office\"],\r\n        [\"MIS Report Formula\", \"Practical MIS reporting example: \", \"mis report dashboard\"],\r\n        [\"Dashboard Formula\", \"Dashboard-ready formula example: \", \"dashboard kpi report\"],\r\n        [\"Data Cleaning Formula\", \"Useful while cleaning and preparing data: \", \"data cleaning preparation\"],\r\n        [\"Audit Formula\", \"Useful for checking and validating records: \", \"audit validation check\"],\r\n        [\"Automation Template Formula\", \"Useful in reusable Excel templates: \", \"automation template reusable\"]\r\n      ];\r\n\r\n      let out = [];\r\n      data.forEach((x) => {\r\n        formulaUseCases.forEach((useCase, index) => {\r\n          out.push({\r\n            title:index === 0 ? x[0] : x[0] + \" - \" + useCase[0],\r\n            category:x[1],\r\n            version:index % 2 === 0 ? \"All Versions\" : \"Excel 365 \/ 2021+\",\r\n            formula:x[2],\r\n            detail:index === 0 ? x[3] : useCase[1] + x[3],\r\n            keywords:x[4] + \" \" + useCase[2]\r\n          });\r\n        });\r\n      });\r\n\r\n      return out;\r\n    }\r\n\r\n    function toShortcuts(data){\r\n      const shortcutUseCases = [\r\n        [\"Standard Shortcut\", \"Standard keyboard shortcut for daily use.\", \"standard daily\"],\r\n        [\"Speed Work Use\", \"Office productivity use: \", \"office productivity speed\"],\r\n        [\"Data Entry Use\", \"Helpful while entering or editing data quickly: \", \"data entry editing\"],\r\n        [\"Reporting Use\", \"Useful while preparing reports, MIS, and dashboards: \", \"report mis dashboard\"],\r\n        [\"Navigation Use\", \"Useful for fast navigation and workbook handling: \", \"navigation workbook handling\"],\r\n        [\"Apple Product Use\", \"Useful for users working on Apple MacBook, iMac, and Apple keyboard: \", \"apple mac macbook imac command option\"]\r\n      ];\r\n\r\n      const macMap = {\r\n        \"Ctrl\":\"Command\",\r\n        \"Alt\":\"Option\",\r\n        \"Windows\":\"Mac \/ Apple\",\r\n        \"Delete\":\"Delete\",\r\n        \"Page Up\":\"Fn + Up Arrow\",\r\n        \"Page Down\":\"Fn + Down Arrow\"\r\n      };\r\n\r\n      function makeAppleKey(key){\r\n        let outKey = key;\r\n        Object.keys(macMap).forEach(k => {\r\n          outKey = outKey.replaceAll(k, macMap[k]);\r\n        });\r\n        return outKey;\r\n      }\r\n\r\n      let out = [];\r\n      data.forEach(x => {\r\n        shortcutUseCases.forEach((useCase, index) => {\r\n          out.push({\r\n            key:x[0],\r\n            category:x[1],\r\n            version:x[2],\r\n            detail:index === 0 ? x[3] : useCase[1] + x[3],\r\n            keywords:x[4] + \" \" + useCase[2]\r\n          });\r\n        });\r\n\r\n        if(x[2] === \"Windows\"){\r\n          out.push({\r\n            key:makeAppleKey(x[0]),\r\n            category:x[1],\r\n            version:\"Mac \/ Apple\",\r\n            detail:\"Apple product shortcut equivalent for MacBook \/ iMac users: \" + x[3],\r\n            keywords:x[4] + \" apple mac macbook imac command option shortcut\"\r\n          });\r\n        }\r\n      });\r\n\r\n      return out;\r\n    }\r\n\r\n    const exFunctions = toFunctions(exFunctionNames);\r\n    const exFormulas = toFormulas(exFormulaTemplates);\r\n    const exShortcuts = toShortcuts(exShortcutTemplates);\r\n\r\n    function normalizeEx(text){\r\n      return String(text || \"\").toLowerCase().replace(\/[^a-z0-9#]+\/g,\" \").trim();\r\n    }\r\n\r\n    function getExData(){\r\n      if(activeExTab === \"functions\") return exFunctions;\r\n      if(activeExTab === \"formulas\") return exFormulas;\r\n      if(activeExTab === \"shortcuts\") return exShortcuts;\r\n      return [];\r\n    }\r\n\r\n    function setExcelPageBackground(){\r\n      const wrapper = document.getElementById(\"excelSuperLibrary\");\r\n      const bgColor = wrapper.classList.contains(\"dark-mode\") ? \"#0f172a\" : \"#f8fafc\";\r\n      document.body.style.backgroundColor = bgColor;\r\n      document.documentElement.style.backgroundColor = bgColor;\r\n    }\r\n\r\n    function toggleExcelMode(){\r\n      document.getElementById(\"excelSuperLibrary\").classList.toggle(\"dark-mode\");\r\n      setExcelPageBackground();\r\n    }\r\n\r\n    function updateSummaryCardBackground(){\r\n      document.getElementById(\"functionSummaryCard\").classList.remove(\"active-summary\");\r\n      document.getElementById(\"formulaSummaryCard\").classList.remove(\"active-summary\");\r\n      document.getElementById(\"shortcutSummaryCard\").classList.remove(\"active-summary\");\r\n\r\n      if(activeExTab === \"functions\"){\r\n        document.getElementById(\"functionSummaryCard\").classList.add(\"active-summary\");\r\n      }\r\n\r\n      if(activeExTab === \"formulas\"){\r\n        document.getElementById(\"formulaSummaryCard\").classList.add(\"active-summary\");\r\n      }\r\n\r\n      if(activeExTab === \"shortcuts\"){\r\n        document.getElementById(\"shortcutSummaryCard\").classList.add(\"active-summary\");\r\n      }\r\n    }\r\n\r\n    function setExTab(tab, btn){\r\n      activeExTab = tab;\r\n\r\n      document.querySelectorAll(\".ex-tab\").forEach(x => x.classList.remove(\"active\"));\r\n      btn.classList.add(\"active\");\r\n\r\n      const title = document.getElementById(\"exTitle\");\r\n      const subTitle = document.getElementById(\"exSubTitle\");\r\n      const heading = document.getElementById(\"exHeading\");\r\n\r\n      document.getElementById(\"exSolverPanel\").style.display = tab === \"solver\" ? \"block\" : \"none\";\r\n      document.getElementById(\"exNormalPanel\").style.display = tab === \"solver\" ? \"none\" : \"block\";\r\n      document.getElementById(\"exSummaryBox\").style.display = tab === \"solver\" ? \"none\" : \"grid\";\r\n      document.getElementById(\"exCategoryBox\").style.display = tab === \"solver\" ? \"none\" : \"block\";\r\n      document.getElementById(\"exSearchBox\").style.display = tab === \"solver\" ? \"none\" : \"block\";\r\n      document.getElementById(\"exChipBox\").style.display = tab === \"solver\" ? \"none\" : \"flex\";\r\n\r\n      if(tab !== \"solver\"){\r\n        document.getElementById(\"exSolutionBox\").style.display = \"none\";\r\n      }\r\n\r\n      if(tab === \"functions\"){\r\n        title.innerText = \"Excel Functions Library\";\r\n        subTitle.innerText = \"Search from 500+ Excel functions by requirement, name, category, syntax, or version.\";\r\n        heading.innerText = \"Functions\";\r\n      }\r\n\r\n      if(tab === \"formulas\"){\r\n        title.innerText = \"Excel Formula Examples\";\r\n        subTitle.innerText = \"Search from 500+ ready-to-use Excel formula examples.\";\r\n        heading.innerText = \"Formulas\";\r\n      }\r\n\r\n      if(tab === \"shortcuts\"){\r\n        title.innerText = \"Excel Keyboard Shortcuts\";\r\n        subTitle.innerText = \"Search from 500+ Excel shortcuts for Windows, MacBook, iMac, and Apple keyboard users.\";\r\n        heading.innerText = \"Shortcuts\";\r\n      }\r\n\r\n      if(tab === \"solver\"){\r\n        title.innerText = \"Excel Problem Solver\";\r\n        subTitle.innerText = \"Write your Excel problem and get at least 5 probable solutions with formulas, function syntax, and dataset.\";\r\n      }\r\n\r\n      fillExCategories();\r\n      renderExResults();\r\n      updateSummaryCardBackground();\r\n    }\r\n\r\n    function fillExCategories(){\r\n      const select = document.getElementById(\"exCategoryBox\");\r\n      const data = getExData();\r\n\r\n      if(!data.length){\r\n        select.innerHTML = `<option value=\"All\">All Categories<\/option>`;\r\n        return;\r\n      }\r\n\r\n      const categories = [\"All\"].concat([...new Set(data.map(x => x.category))].sort());\r\n      select.innerHTML = categories.map(cat => `<option value=\"${cat}\">${cat === \"All\" ? \"All Categories\" : cat}<\/option>`).join(\"\");\r\n    }\r\n\r\n    function matchEx(item, search, category){\r\n      if(category !== \"All\" && item.category !== category) return false;\r\n      if(search.trim() === \"\") return true;\r\n\r\n      const fullText = normalizeEx(\r\n        (item.name || \"\") + \" \" +\r\n        (item.title || \"\") + \" \" +\r\n        (item.key || \"\") + \" \" +\r\n        (item.category || \"\") + \" \" +\r\n        (item.version || \"\") + \" \" +\r\n        (item.detail || \"\") + \" \" +\r\n        (item.syntax || \"\") + \" \" +\r\n        (item.formula || \"\") + \" \" +\r\n        (item.keywords || \"\")\r\n      );\r\n\r\n      const words = normalizeEx(search).split(\" \").filter(Boolean);\r\n      return words.every(word => fullText.includes(word)) || fullText.includes(normalizeEx(search));\r\n    }\r\n\r\n    function renderExResults(){\r\n      if(activeExTab === \"solver\") return;\r\n\r\n      const search = document.getElementById(\"exSearchBox\").value;\r\n      const category = document.getElementById(\"exCategoryBox\").value;\r\n      const grid = document.getElementById(\"exGrid\");\r\n\r\n      const functionResults = exFunctions.filter(x => matchEx(x, search, activeExTab === \"functions\" ? category : \"All\"));\r\n      const formulaResults = exFormulas.filter(x => matchEx(x, search, activeExTab === \"formulas\" ? category : \"All\"));\r\n      const shortcutResults = exShortcuts.filter(x => matchEx(x, search, activeExTab === \"shortcuts\" ? category : \"All\"));\r\n\r\n      document.getElementById(\"exFunctionTotal\").innerText = functionResults.length;\r\n      document.getElementById(\"exFormulaTotal\").innerText = formulaResults.length;\r\n      document.getElementById(\"exShortcutTotal\").innerText = shortcutResults.length;\r\n\r\n      let activeResults = [];\r\n      if(activeExTab === \"functions\") activeResults = functionResults;\r\n      if(activeExTab === \"formulas\") activeResults = formulaResults;\r\n      if(activeExTab === \"shortcuts\") activeResults = shortcutResults;\r\n\r\n      document.getElementById(\"exResultCount\").innerText = activeResults.length + \" result(s)\";\r\n\r\n      if(activeResults.length === 0){\r\n        grid.innerHTML = `<div class=\"ex-empty\">No result found. Try another keyword like lookup, reverse lookup, sum, filter, duplicate, date, or text.<\/div>`;\r\n        return;\r\n      }\r\n\r\n      if(activeExTab === \"functions\"){\r\n        grid.innerHTML = activeResults.map(item => `\r\n          <div class=\"ex-card\">\r\n            <span class=\"ex-tag\">${item.category}<\/span>\r\n            <span class=\"ex-version\">${item.version}<\/span>\r\n            <h4>${item.name}<\/h4>\r\n            <p>${item.detail}<\/p>\r\n            <div class=\"ex-syntax-label\">Function Syntax:<\/div>\r\n            <code class=\"ex-code\">${item.syntax}<\/code>\r\n          <\/div>\r\n        `).join(\"\");\r\n      }\r\n\r\n      if(activeExTab === \"formulas\"){\r\n        grid.innerHTML = activeResults.map(item => `\r\n          <div class=\"ex-card\">\r\n            <span class=\"ex-tag\">${item.category}<\/span>\r\n            <span class=\"ex-version\">${item.version}<\/span>\r\n            <h4>${item.title}<\/h4>\r\n            <p>${item.detail}<\/p>\r\n            <code class=\"ex-code\">${item.formula}<\/code>\r\n          <\/div>\r\n        `).join(\"\");\r\n      }\r\n\r\n      if(activeExTab === \"shortcuts\"){\r\n        grid.innerHTML = activeResults.map(item => `\r\n          <div class=\"ex-card\">\r\n            <span class=\"ex-tag\">${item.category}<\/span>\r\n            <span class=\"ex-version\">${item.version}<\/span><br>\r\n            <span class=\"ex-key\">${item.key}<\/span>\r\n            <p>${item.detail}<\/p>\r\n          <\/div>\r\n        `).join(\"\");\r\n      }\r\n\r\n      updateSummaryCardBackground();\r\n    }\r\n\r\n    function quickExSearch(text){\r\n      document.getElementById(\"exSearchBox\").value = text;\r\n      renderExResults();\r\n    }\r\n\r\n    function buildDatasetTable(dataset){\r\n      if(!dataset || !dataset.length) return \"\";\r\n      const header = dataset[0];\r\n      const rows = dataset.slice(1);\r\n\r\n      return `\r\n        <p><b>Sample Dataset:<\/b><\/p>\r\n        <div class=\"ex-data-table-wrap\">\r\n          <table class=\"ex-data-table\">\r\n            <thead>\r\n              <tr>${header.map(h => `<th>${h}<\/th>`).join(\"\")}<\/tr>\r\n            <\/thead>\r\n            <tbody>\r\n              ${rows.map(row => `<tr>${row.map(cell => `<td>${cell}<\/td>`).join(\"\")}<\/tr>`).join(\"\")}\r\n            <\/tbody>\r\n          <\/table>\r\n        <\/div>\r\n      `;\r\n    }\r\n\r\n    function buildFunctionSyntax(functions){\r\n      if(!functions || !functions.length) return \"\";\r\n      return `\r\n        <p><b>Functions with Syntax:<\/b><\/p>\r\n        ${functions.map(fn => `\r\n          <p><b>${fn[0]}<\/b><\/p>\r\n          <code class=\"ex-code\">${fn[1]}<\/code>\r\n        `).join(\"\")}\r\n      `;\r\n    }\r\n\r\n    function suggestExSolution(){\r\n      const manualText = document.getElementById(\"exManualText\").value || \"\";\r\n      const searchText = normalizeEx(manualText);\r\n      const solutionBox = document.getElementById(\"exSolutionBox\");\r\n      const solutionList = document.getElementById(\"exSolutionList\");\r\n\r\n      if(searchText.trim() === \"\"){\r\n        solutionBox.style.display = \"block\";\r\n        solutionList.innerHTML = `<div class=\"ex-solution-item\"><h4>Please write your Excel problem<\/h4><p>Example: Explain reverse lookup<\/p><\/div>`;\r\n        return;\r\n      }\r\n\r\n      let matchedSolutions = exSolutionRules.filter(item => {\r\n        const words = normalizeEx(item.match).split(\" \").filter(Boolean);\r\n        return words.some(word => searchText.includes(word));\r\n      });\r\n\r\n      if(matchedSolutions.length < 5){\r\n        const generalSolutions = exSolutionRules.filter(item => !matchedSolutions.includes(item));\r\n        matchedSolutions = matchedSolutions.concat(generalSolutions).slice(0,5);\r\n      }\r\n\r\n      if(matchedSolutions.length === 0){\r\n        matchedSolutions = exSolutionRules.slice(0,5);\r\n      }\r\n\r\n      solutionBox.style.display = \"block\";\r\n\r\n      solutionList.innerHTML = matchedSolutions.slice(0,5).map(item => `\r\n        <div class=\"ex-solution-item\">\r\n          <h4>${item.title}<\/h4>\r\n          <p><b>Solution:<\/b> ${item.solution}<\/p>\r\n\r\n          <p><b>Recommended Formula \/ Method:<\/b><\/p>\r\n          <code class=\"ex-code\">${item.formula}<\/code>\r\n\r\n          ${buildFunctionSyntax(item.functions)}\r\n          ${buildDatasetTable(item.dataset)}\r\n\r\n          <p><b>Useful Shortcut:<\/b><\/p>\r\n          <span class=\"ex-key\">${item.shortcut || \"Not required\"}<\/span>\r\n\r\n          <p><b>Step-by-step:<\/b><\/p>\r\n          <ul>${item.steps.map(step => `<li>${step}<\/li>`).join(\"\")}<\/ul>\r\n        <\/div>\r\n      `).join(\"\");\r\n\r\n      solutionBox.scrollIntoView({behavior:\"smooth\", block:\"start\"});\r\n    }\r\n\r\n    function clearExSolver(){\r\n      document.getElementById(\"exManualText\").value = \"\";\r\n      document.getElementById(\"exSolutionBox\").style.display = \"none\";\r\n      document.getElementById(\"exSolutionList\").innerHTML = \"\";\r\n    }\r\n\r\n    fillExCategories();\r\n    renderExResults();\r\n    updateSummaryCardBackground();\r\n    setExcelPageBackground();\r\n  <\/script>\r\n<\/div>\t\t\t\t<\/div>\n\t\t\n<\/div>\n\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Dark \/ Light Functions Formulas Shortcuts Problem Solver Excel Functions Library Search from 500+ Excel functions by requirement, name, category, [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_canvas","meta":{"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"class_list":["post-206","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/vikassrivastava.in\/academy\/wp-json\/wp\/v2\/pages\/206","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/vikassrivastava.in\/academy\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/vikassrivastava.in\/academy\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/vikassrivastava.in\/academy\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/vikassrivastava.in\/academy\/wp-json\/wp\/v2\/comments?post=206"}],"version-history":[{"count":14,"href":"https:\/\/vikassrivastava.in\/academy\/wp-json\/wp\/v2\/pages\/206\/revisions"}],"predecessor-version":[{"id":295,"href":"https:\/\/vikassrivastava.in\/academy\/wp-json\/wp\/v2\/pages\/206\/revisions\/295"}],"wp:attachment":[{"href":"https:\/\/vikassrivastava.in\/academy\/wp-json\/wp\/v2\/media?parent=206"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}