How to count number of leap years between two dates in Excel?

In Excel, to count the number of years between two given dates may be easy for most of users, but, can you only count the number of leap years also called intercalary year between two dates? Here I introduce a formula can help you to quickly calculate the number of leap years between a date range in Excel.

Count leap years in a date range with formula


arrow blue right bubble Count leap years in a date range with formula

To count leap years between two dates, you just need to do as this:

Select a blank cell that you will place the counted result at, C2 for instance, and enter this formula
=DATE(YEAR(B2),1,1)-DATE(YEAR(A2),1,1)-((YEAR(B2)-YEAR(A2))*365)+AND(MONTH(DATE(YEAR(A2),2,29))=2,MONTH(DATE(YEAR(B2),2,29))=2)*1
then press Enter key to get the result. See screenshot:
doc count leap year 1

Tip: In the formula, A2 is the start date and B2 is the end date, you can change them as you need.


The Best Office Productivity Tools

Kutools for Excel Solves Most of Your Problems, and Increases Your Productivity by 80%

  • Reuse: Quickly insert complex formulas, charts and anything that you have used before; Encrypt Cells with password; Create Mailing List and send emails...
  • Super Formula Bar (easily edit multiple lines of text and formula); Reading Layout (easily read and edit large numbers of cells); Paste to Filtered Range...
  • Merge Cells/Rows/Columns without losing Data; Split Cells Content; Combine Duplicate Rows/Columns... Prevent Duplicate Cells; Compare Ranges...
  • Select Duplicate or Unique Rows; Select Blank Rows (all cells are empty); Super Find and Fuzzy Find in Many Workbooks; Random Select...
  • Exact Copy Multiple Cells without changing formula reference; Auto Create References to Multiple Sheets; Insert Bullets, Check Boxes and more...
  • Extract Text, Add Text, Remove by Position, Remove Space; Create and Print Paging Subtotals; Convert Between Cells Content and Comments...
  • Super Filter (save and apply filter schemes to other sheets); Advanced Sort by month/week/day, frequency and more; Special Filter by bold, italic...
  • Combine Workbooks and WorkSheets; Merge Tables based on key columns; Split Data into Multiple Sheets; Batch Convert xls, xlsx and PDF...
  • More than 300 powerful features. Supports Office/Excel 2007-2019 and 365. Supports all languages. Easy deploying in your enterprise or organization. Full features 30-day free trial. 60-day money back guarantee.
kte tab 201905

Office Tab Brings Tabbed interface to Office, and Make Your Work Much Easier

  • Enable tabbed editing and reading in Word, Excel, PowerPoint, Publisher, Access, Visio and Project.
  • Open and create multiple documents in new tabs of the same window, rather than in new windows.
  • Increases your productivity by 50%, and reduces hundreds of mouse clicks for you every day!
officetab bottom
Say something here...
symbols left.
You are guest ( Sign Up? )
or post as a guest, but your post won't be published automatically.
Loading comment... The comment will be refreshed after 00:00.
  • To post as a guest, your comment is unpublished.
    Tom Moore · 4 months ago
    A more useful function would be to calculate the number of times Feb 29 occurs between 2 dates.
  • To post as a guest, your comment is unpublished.
    acbcravo@gmail.com · 9 months ago
    Tentei a fórmula acima, mas ainda gerava erro no numero de anos bissextos, então fiz uma função em VBA que faz a verificação ano a ano no intervalo.
    Após incluir esta macro abaixo, para utilizar use a função =ContBissexto(A1;B1), o resultado é a quantidade de anos bissextos no período: Espero ter ajudado:

    Function ContBissexto(Ini As Date, Fim As Date) As Integer
    On Error Resume Next

    Dim AnoIni As Integer
    Dim AnoFim As Integer
    Dim contB As Integer
    contB = 0
    'DEFINE O ANO DE INICIO DA CONTAGEM DO PERÍODO BISEXTO
    If Ini <= DateSerial(Year(Ini), 3, 1) - 1 Then
    AnoIni = Year(Ini)
    Else
    AnoIni = Year(Ini) + 1
    End If
    'DEFINE O ANO DE FIM DA CONTAGEM DO PERÍODO BISEXTO
    If Fim > DateSerial(Year(Fim), 2, 28) Then
    AnoFim = Year(Fim)
    Else
    AnoIni = Year(Fim) - 1
    End If

    For i = AnoIni To AnoFim
    If Day(DateSerial(i, 3, 1) - 1) = 29 Then contB = contB + 1
    Next

    ContBissexto = contB

    End Function
  • To post as a guest, your comment is unpublished.
    Antônio Cravo · 9 months ago
    A contagem gerava erro no numero de anos bissextos, então fiz uma função em VBA que faz a verificação ano a ano no intervalo.
    Após incluir esta macro abaixo, para utilizar use a função =ContBissexto(A1;B1), o resultado é a quantidade de anos bissextos no período:


    Function ContBissexto(Ini As Date, Fim As Date) As Integer
    On Error Resume Next

    Dim AnoIni As Integer
    Dim AnoFim As Integer
    Dim contB As Integer
    contB = 0
    'DEFINE O ANO DE INICIO DA CONTAGEM DO PERÍODO BISSEXTO
    If Ini <= DateSerial(Year(Ini), 3, 1) - 1 Then
    AnoIni = Year(Ini)
    Else
    AnoIni = Year(Ini) + 1
    End If
    'DEFINE O ANO DE FIM DA CONTAGEM DO PERÍODO BISSEXTO
    If Fim > DateSerial(Year(Fim), 2, 28) Then
    AnoFim = Year(Fim)
    Else
    AnoIni = Year(Fim) - 1
    End If

    For i = AnoIni To AnoFim
    If Day(DateSerial(i, 3, 1) - 1) = 29 Then contB = contB + 1
    Next

    ContBissexto = contB

    End Function
  • To post as a guest, your comment is unpublished.
    Fabian Ries · 2 years ago
    Oi amigo,

    Excelente fórmula!

    Trabalhei com ela e percebi que há uma divergência quando o primeiro e/ou o segundo intervalo são anos bissextos. Tomei a liberdade de corrigir (em português):


    =DATA(ANO(B2);1;1)-DATA(ANO(A2);1;1)-((ANO(B2)-ANO(A2))*365)+E(ANO(A2)=ANO(B2);MÊS(DATA(ANO(A2);2;29))=2;A2<=DATA(ANO(A2);2;29);B2>=DATA(ANO(B2);2;29))+E(ANO(A2)