Today is Friday the 13th. If you are a raging friggatriskaidekaphobiac, I suggest you to stop reading this post. For the rest of you, I have something fun.
Given a year in cell C3, let’s find out all the months with Friday the 13th. Something like this:

[Related: Finding next Friday the 13th using formulas]
Finding all Friday the 13ths in a year
Here is a formula to find the first Friday the 13th in a year.
{=IFERROR(SMALL(IF(WEEKDAY(DATE($C$3,ROW($A$1:$A$12),13))=6,ROW($A$1:$A$12)),1),””)}
Let’s understand how it works, going from inside out:
DATE($C$3,ROW($A$1:$A$12),13) portion: This generates an array of 12 dates, one for each 13th of the month in the year C3.
WEEKDAY(DATE(…))=6 portion: This checks how many of those dates are Fridays. Returns an array of TRUE / FALSE values.
IF(WEEKDAY(DATE(…))=6,ROW($A$1:$A$12)) portion: This returns an array of month numbers where we have Friday the 13th and FALSE values.
SMALL(IF(…),1) portion: This will give us the first month (ie 1st smallest value) with Friday the 13th in the year C3.
IFERROR() to suppress any errors.
To show all the Friday the 13ths in a year, simply replace 1 with an array of numbers (up to 3 should do).
Download Friday the 13th finder workbook
Click here to download Friday the 13th finder workbook. Enter a year in cell C3 and see all the months with Friday the 13th instantly.
A challenge for you…
If you are still reading, I have a challenge for you. Can you write a formula to find the next year with three Friday the 13ths? Assume the year is in C3. Post your formulas / VBA in the comment section.
hint: in the downloadable workbook, you can find an answer for this.
So that’s all for now. Enjoy your Friday the 13th.

















6 Responses to “Make VBA String Comparisons Case In-sensitive [Quick Tip]”
Another way to test if Target.Value equal a string constant without regard to letter casing is to use the StrCmp function...
If StrComp("yes", Target.Value, vbTextCompare) = 0 Then
' Do something
End If
That's a cool way to compare. i just converted my values to strings and used the above code to compare. worked nicely
Thanks!
In case that option just needs to be used for a single comparison, you could use
If InStr(1, "yes", Target.Value, vbTextCompare) Then
'do something
End If
as well.
Nice tip, thanks! I never even thought to think there might be an easier way.
Regarding Chronology of VB in general, the Option Compare pragma appears at the very beginning of VB, way before classes and objects arrive (with VB6 - around 2000).
Today StrComp() and InStr() function offers a more local way to compare, fully object, thus more consistent with object programming (even if VB is still interpreted).
My only question here is : "what if you want to binary compare locally with re-entering functions or concurrency (with events) ?". This will lead to a real nightmare and probably a big nasty mess to debug.
By the way, congrats for you Millions/month visits 🙂
This is nice article.
I used these examples to help my understanding. Even Instr is similar to Find but it can be case sensitive and also case insensitive.
Hope the examples below help.
Public Sub CaseSensitive2()
If InStr(1, "Look in this string", "look", vbBinaryCompare) = 0 Then
MsgBox "woops, no match"
Else
MsgBox "at least one match"
End If
End Sub
Public Sub CaseSensitive()
If InStr("Look in this string", "look") = 0 Then
MsgBox "woops, no match"
Else
MsgBox "at least one match"
End If
End Sub
Public Sub NotCaseSensitive()
'doing alot of case insensitive searching and whatnot, you can put Option Compare Text
If InStr(1, "Look in this string", "look", vbTextCompare) = 0 Then
MsgBox "woops, no match"
Else
MsgBox "at least one match"
End If
End Sub