Enter partial overs as decimals (e.g., 10.4 for 10 overs 4 balls). If all out, enter full quota.
Your Team's Bowling Stats (Opponent)
If opponent was all out, enter the full quota (e.g., 20 or 50).
Runs Per Over For:0.00
Runs Per Over Against:0.00
Net Run Rate: 0.000
Understanding Net Run Rate (NRR) in Cricket
Net Run Rate (NRR) is the preferred method for breaking ties in multi-team cricket tournaments like the Cricket World Cup, T20 World Cup, IPL, and the Big Bash League. It acts as a statistical tool to separate teams that finish with the same number of points.
How NRR is Calculated
The calculation is essentially the difference between your team's scoring rate and the rate at which your team concedes runs.
The formula is:
NRR = (Total Runs Scored / Total Overs Faced) – (Total Runs Conceded / Total Overs Bowled)
Important Calculation Rules
Decimal Overs: Cricket overs are often denoted as 10.4 (10 overs and 4 balls). However, mathematically, a ball is 1/6th of an over. Therefore, 10.4 overs is calculated as 10 + 4/6 = 10.666… overs.
All Out Rule: If a team is bowled out (all out) before completing their full quota of overs (e.g., 50 overs in ODIs or 20 in T20s), the "Overs Faced" value used in the calculation is the full quota, not the actual overs batted.
Abandoned Matches: Matches that are abandoned without a result generally do not contribute to the NRR calculation.
How to Create a Net Run Rate Calculator in Excel
Many team managers and analysts prefer to track this data in a spreadsheet. Since you are searching for an Excel solution, here is how you can set up your own sheet manually:
Cell
Description
Example Value
A2
Total Runs Scored
1500
B2
Total Overs Faced (Convert balls to decimal manually)
185.33
C2
Total Runs Conceded
1350
D2
Total Overs Bowled
190.0
E2
Formula
=(A2/B2)-(C2/D2)
Pro Tip for Excel: To convert cricket overs (like 10.4) to decimals automatically in Excel, if cell A1 contains "10.4", use this formula:
=INT(A1) + (MOD(A1,1)*10)/6
Note: The above Excel trick assumes you type 10.4 as a number. It is safer to calculate total balls and divide by 6 for perfect accuracy.
Example Scenario
Let's say Team A scores 180 runs in 20 overs. In response, they restrict Team B to 160 runs in 20 overs.
Team A Run Rate: 180 / 20 = 9.00
Team A Conceded Rate: 160 / 20 = 8.00
NRR: 9.00 – 8.00 = +1.000
Use the calculator above to handle complex scenarios involving partial overs instantly.
function calculateNRR() {
// Get Input Values
var runsScored = parseFloat(document.getElementById('runsScored').value);
var oversFacedInput = parseFloat(document.getElementById('oversFaced').value);
var runsConceded = parseFloat(document.getElementById('runsConceded').value);
var oversBowledInput = parseFloat(document.getElementById('oversBowled').value);
// Validation
if (isNaN(runsScored) || isNaN(oversFacedInput) || isNaN(runsConceded) || isNaN(oversBowledInput)) {
alert("Please enter valid numbers in all fields.");
return;
}
if (oversFacedInput === 0 || oversBowledInput === 0) {
alert("Overs cannot be zero.");
return;
}
// Helper function to convert cricket overs (X.Y) to decimal (X.Z)
function convertToDecimalOvers(oversVal) {
var strVal = oversVal.toString();
var parts = strVal.split('.');
var wholeOvers = parseInt(parts[0]);
var balls = 0;
if (parts.length > 1) {
// Take only the first digit after decimal to avoid floating point weirdness with user input like 10.40
var ballPart = parts[1].substring(0,1);
balls = parseInt(ballPart);
}
// Validation for balls (cannot be > 5 in cricket terms usually, but logic should handle simply)
// If user types 10.6, technically that is 11 overs, but let's strictly convert balls to fraction of 6
return wholeOvers + (balls / 6);
}
var facedDecimal = convertToDecimalOvers(oversFacedInput);
var bowledDecimal = convertToDecimalOvers(oversBowledInput);
// Calculate Rates
var rateFor = runsScored / facedDecimal;
var rateAgainst = runsConceded / bowledDecimal;
var nrr = rateFor – rateAgainst;
// Display Results
var resultDiv = document.getElementById('result-container');
var rpoForSpan = document.getElementById('rpoFor');
var rpoAgainstSpan = document.getElementById('rpoAgainst');
var nrrSpan = document.getElementById('nrrValue');
resultDiv.style.display = 'block';
rpoForSpan.innerText = rateFor.toFixed(3);
rpoAgainstSpan.innerText = rateAgainst.toFixed(3);
// Formatting NRR with + sign if positive
var nrrFormatted = nrr.toFixed(4); // Standard usually 3 decimal places, but keeping 4 for precision check
nrrSpan.innerText = (nrr > 0 ? "+" : "") + nrrFormatted;
// Color coding
if (nrr > 0) {
nrrSpan.className = 'final-nrr positive';
nrrSpan.style.color = '#2ecc71';
} else if (nrr < 0) {
nrrSpan.className = 'final-nrr negative';
nrrSpan.style.color = '#e74c3c';
} else {
nrrSpan.className = 'final-nrr';
nrrSpan.style.color = '#333';
}
}