How To Calculate Median In Excel With Criteria

Excel Median Calculator with Criteria

Calculate the median of filtered data in Excel with specific conditions

')) { const numCriteria = parseFloat(criteria.substring(1)); if (!isNaN(numCriteria) && sampleData.sales[i] > numCriteria) { meetsCriteria = true; } } else if (criteria.startsWith('<')) { const numCriteria = parseFloat(criteria.substring(1)); if (!isNaN(numCriteria) && sampleData.sales[i] < numCriteria) { meetsCriteria = true; } } else if (criteria.startsWith('=')) { if (sampleCriteriaArray[i].toString() === criteria.substring(1)) { meetsCriteria = true; } } else { if (sampleCriteriaArray[i].toString() === criteria) { meetsCriteria = true; } } if (meetsCriteria) { filteredValues.push(sampleData.sales[i]); count++; } } // Calculate median let median = 0; if (filteredValues.length > 0) { filteredValues.sort((a, b) => a - b); const middle = Math.floor(filteredValues.length / 2); if (filteredValues.length % 2 === 0) { median = (filteredValues[middle - 1] + filteredValues[middle]) / 2; } else { median = filteredValues[middle]; } } // Format results const formattedMedian = median.toFixed(decimalPlaces); const excelFormula = `=MEDIAN(IF(${criteriaRange}${criteria.startsWith('>') || criteria.startsWith('<') || criteria.startsWith('=') ? criteria : `="${criteria}"`}, ${dataRange}))`; // Display results medianValue.textContent = formattedMedian; countValue.textContent = count; formulaValue.textContent = excelFormula; resultsDiv.style.display = 'block'; // Create/update chart if (chartInstance) { chartInstance.destroy(); } // Prepare chart data const allValues = sampleData.sales; const allRegions = sampleData.regions; const uniqueRegions = [...new Set(allRegions)]; const regionData = uniqueRegions.map(region => { const regionValues = allValues.filter((_, i) => allRegions[i] === region); return { region: region, count: regionValues.length, median: regionValues.length > 0 ? (regionValues.sort((a, b) => a - b)[Math.floor(regionValues.length / 2)]) : 0 }; }); const ctx = chartCanvas.getContext('2d'); chartInstance = new Chart(ctx, { type: 'bar', data: { labels: regionData.map(d => d.region), datasets: [ { label: 'Median Sales by Region', data: regionData.map(d => d.median), backgroundColor: '#2563eb', borderColor: '#1d4ed8', borderWidth: 1 }, { label: 'Your Filtered Median', data: regionData.map(d => d.region === criteria ? median : null), backgroundColor: '#ef4444', borderColor: '#dc2626', borderWidth: 1, type: 'line', pointRadius: 5, pointBackgroundColor: '#ef4444', fill: false } ] }, options: { responsive: true, maintainAspectRatio: false, scales: { y: { beginAtZero: true, title: { display: true, text: 'Sales Amount' } }, x: { title: { display: true, text: 'Region' } } }, plugins: { title: { display: true, text: `Median Sales Analysis (Filtered Median: $${formattedMedian})`, font: { size: 14 } }, tooltip: { callbacks: { label: function(context) { let label = context.dataset.label || ''; if (label) { label += ': '; } if (context.parsed.y !== null) { label += '$' + context.parsed.y.toFixed(2); } return label; } } } } } }); }); // Initialize with sample calculation document.getElementById('wpc-data-range').value = 'A2:A100'; document.getElementById('wpc-criteria-range').value = 'B2:B100'; document.getElementById('wpc-criteria').value = 'East'; });

Leave a Reply

Your email address will not be published. Required fields are marked *