I'll take a shot at it. Let's say that d is a smaller array, looking like this:
1,1,1,2,3,1,1,4,5,1,1
and as a reminder, this is our formula:
=SUMPRODUCT(1*(FREQUENCY(IF(d=1,ROW(d)),(d<>1)*ROW(d))>0))
The red portion inside the IF will look at our array, and everywhere we have a 1, put the row number, creating this array. This is the first argument of FREQUENCY function
1,2,3,False,False,6,7,False,False,10,11
The blue portion will build an opposite array, putting a row number where the value is not 1. Since it's being multiplied against each other, this will force XL to convert the False's into 0's.
0,0,0,4,5,0,0,8,9,0,0
Now, the tricky/confusing part. FREQUENCY function then takes these two arrays. At each position in the first array, it will calculate how many previous values in 2nd array match. Note that all the numbers in each array are unique, except for 0's/False. So, first we see that there are no 1's, then no 2's, then no 3's, but then there are 3 0's(Falses). The next False comes up, but we've already counted all the previous 0's, so this one gets a zero. Continuing to build the output, we get:
0,0,0,3,0,0,0,2,0,0,0,2
We're getting close! We can see the 3 numbers representing 3 groups of 1's. Now, to get our count, we want to know how many of these numbers are >1. This creates a True/False array
False,False,False,True,False,False,False,True,False,False,False,True
But, we need to SUM these up. Since they are words, in their current form, they would all count as 0. So, our final step is to multiply this array by 1, converting True/False into 1/0
0,0,0,1,0,0,0,1,0,0,0,1
The SUMPRODUCT finally gets to do its job, summing this array, to give us our desired answer of 3.