I needed this conversion, so I spent some time and wrote a (fairly) general UDF. I'll provide it here in case it's of use to anyone else.
If you find any bugs or have any suggestions for improvements, please let me know.
The code is fairly complicated, so I've put it in a code module in a workbook with examples of its use. That workbook can be found here:
https://www.dropbox.com/s/vqhzsflnstgmkwq/CvtLen2FtIn (no add-in).xlsm?dl=0
This table shows some examples of conversions it can handle:
[TABLE="class: grid, width: 750"]
<tbody>[TR]
[TD="align: center"]R/C[/TD]
[TD="align: center"]C[/TD]
[TD="align: center"]D[/TD]
[TD="align: center"]E[/TD]
[TD="align: center"]F[/TD]
[TD="align: center"]G[/TD]
[/TR]
[TR]
[TD="align: center"]4[/TD]
[TD="colspan: 5, align: center"]Valid Expressions[/TD]
[/TR]
[TR]
[TD="align: center"]5[/TD]
[TD="align: center"]Ft-In[/TD]
[TD="align: center"]=cvtftin2len(C6)[/TD]
[TD="align: center"]=cvtlen2ftin(D6,"in")[/TD]
[TD="align: center"]=cvtftin2len(E6)[/TD]
[TD="align: center"]Comments[/TD]
[/TR]
[TR]
[TD="align: center"]6[/TD]
[TD="align: center"]3' 6"[/TD]
[TD="align: center"]42[/TD]
[TD="align: center"]3' 6.00"[/TD]
[TD="align: center"]42[/TD]
[TD]'-"" notation[/TD]
[/TR]
[TR]
[TD="align: center"]7[/TD]
[TD="align: center"]1 ft 10 in[/TD]
[TD="align: center"]22[/TD]
[TD="align: center"]1' 10.00"[/TD]
[TD="align: center"]22[/TD]
[TD]ft-in notation[/TD]
[/TR]
[TR]
[TD="align: center"]8[/TD]
[TD="align: center"]3.5ft[/TD]
[TD="align: center"]42[/TD]
[TD="align: center"]3' 6.00"[/TD]
[TD="align: center"]42[/TD]
[TD]Feet, no inches[/TD]
[/TR]
[TR]
[TD="align: center"]9[/TD]
[TD="align: center"]42"[/TD]
[TD="align: center"]42[/TD]
[TD="align: center"]3' 6.00"[/TD]
[TD="align: center"]42[/TD]
[TD]Inches, no feet[/TD]
[/TR]
[TR]
[TD="align: center"]10[/TD]
[TD="align: center"]0' 11.999"[/TD]
[TD="align: center"]11.999[/TD]
[TD="align: center"]1' 0.00"[/TD]
[TD="align: center"]12[/TD]
[TD]Inches rounded[/TD]
[/TR]
[TR]
[TD="align: center"]11[/TD]
[TD="align: center"]0' 24"[/TD]
[TD="align: center"]24[/TD]
[TD="align: center"]2' 0.00"[/TD]
[TD="align: center"]24[/TD]
[TD]Inches > 11.99[/TD]
[/TR]
[TR]
[TD="align: center"]12[/TD]
[TD="align: center"]0'[/TD]
[TD="align: center"]0[/TD]
[TD="align: center"]0' 0.00"[/TD]
[TD="align: center"]0[/TD]
[TD]Zero feet, no inches[/TD]
[/TR]
[TR]
[TD="align: center"]13[/TD]
[TD="align: center"]0"[/TD]
[TD="align: center"]0[/TD]
[TD="align: center"]0' 0.00"[/TD]
[TD="align: center"]0[/TD]
[TD]Zero inches, no feet[/TD]
[/TR]
[TR]
[TD="align: center"]14[/TD]
[TD="align: center"]1 '2 "[/TD]
[TD="align: center"]14[/TD]
[TD="align: center"]1' 2.00"[/TD]
[TD="align: center"]14[/TD]
[TD]Extra spaces before units[/TD]
[/TR]
[TR]
[TD="align: center"]15[/TD]
[TD="align: center"]3'4"[/TD]
[TD="align: center"]40[/TD]
[TD="align: center"]3' 4.00"[/TD]
[TD="align: center"]40[/TD]
[TD]No space between feet and inches[/TD]
[/TR]
</tbody>[/TABLE]
Col C is the input.
Col D is the input converted to inches.
Col E is that result converted back to feet & inches.
Col F is that result converted back to inches.
This table shows some of the errors it can handle:
[TABLE="class: grid, width: 750"]
<tbody>[TR]
[TD="align: center"]R/C[/TD]
[TD="align: center"]C[/TD]
[TD="align: center"]D[/TD]
[TD="align: center"]E[/TD]
[TD="align: center"]F[/TD]
[TD="align: center"]G[/TD]
[/TR]
[TR]
[TD="align: center"]18[/TD]
[TD="colspan: 5, align: center"]Invalid Expressions[/TD]
[/TR]
[TR]
[TD="align: center"]19[/TD]
[TD="align: center"]Ft-In[/TD]
[TD="align: center"]=cvtftin2len(C20)[/TD]
[TD="align: center"]=cvtlen2ftin(D20,"in")[/TD]
[TD="align: center"]=cvtftin2len(E20)[/TD]
[TD]Comments[/TD]
[/TR]
[TR]
[TD="align: center"]20[/TD]
[TD="align: center"]3" 4'[/TD]
[TD="align: center"]#VALUE![/TD]
[TD="align: center"]#VALUE![/TD]
[TD="align: center"]#VALUE![/TD]
[TD]Units backwards[/TD]
[/TR]
[TR]
[TD="align: center"]21[/TD]
[TD="align: center"]3 4[/TD]
[TD="align: center"]#VALUE![/TD]
[TD="align: center"]#VALUE![/TD]
[TD="align: center"]#VALUE![/TD]
[TD]Missing units[/TD]
[/TR]
[TR]
[TD="align: center"]22[/TD]
[TD="align: center"]3 4'[/TD]
[TD="align: center"]#VALUE![/TD]
[TD="align: center"]#VALUE![/TD]
[TD="align: center"]#VALUE![/TD]
[TD]Missing units[/TD]
[/TR]
[TR]
[TD="align: center"]23[/TD]
[TD="align: center"]3''[/TD]
[TD="align: center"]#VALUE![/TD]
[TD="align: center"]#VALUE![/TD]
[TD="align: center"]#VALUE![/TD]
[TD]Double single quotes[/TD]
[/TR]
[TR]
[TD="align: center"]24[/TD]
[TD="align: center"]3' 4in[/TD]
[TD="align: center"]#VALUE![/TD]
[TD="align: center"]#VALUE![/TD]
[TD="align: center"]#VALUE![/TD]
[TD]Mixed units[/TD]
[/TR]
[TR]
[TD="align: center"]25[/TD]
[TD="align: center"]3' 4" 5[/TD]
[TD="align: center"]#VALUE![/TD]
[TD="align: center"]#VALUE![/TD]
[TD="align: center"]#VALUE![/TD]
[TD]Junk after inches[/TD]
[/TR]
[TR]
[TD="align: center"]26[/TD]
[TD="align: center"]o"[/TD]
[TD="align: center"]#VALUE![/TD]
[TD="align: center"]#VALUE![/TD]
[TD="align: center"]#VALUE![/TD]
[TD]Non-numeric[/TD]
[/TR]
[TR]
[TD="align: center"]27[/TD]
[TD="align: center"]3' -12"[/TD]
[TD="align: center"]#VALUE![/TD]
[TD="align: center"]#VALUE![/TD]
[TD="align: center"]#VALUE![/TD]
[TD]Negative inches[/TD]
[/TR]
[TR]
[TD="align: center"]28[/TD]
[TD="align: center"]-3' 12"[/TD]
[TD="align: center"]#VALUE![/TD]
[TD="align: center"]#VALUE![/TD]
[TD="align: center"]#VALUE![/TD]
[TD]Negative feet[/TD]
[/TR]
[TR]
[TD="align: center"]29[/TD]
[TD="align: center"]3' 3'[/TD]
[TD="align: center"]#VALUE![/TD]
[TD="align: center"]#VALUE![/TD]
[TD="align: center"]#VALUE![/TD]
[TD]Duplicate units (feet)[/TD]
[/TR]
[TR]
[TD="align: center"]30[/TD]
[TD="align: center"]3" 3"[/TD]
[TD="align: center"]#VALUE![/TD]
[TD="align: center"]#VALUE![/TD]
[TD="align: center"]#VALUE![/TD]
[TD]Duplicate units (feet)[/TD]
[/TR]
[TR]
[TD="align: center"]31[/TD]
[TD="align: center"][/TD]
[TD="align: center"]#VALUE![/TD]
[TD="align: center"]#VALUE![/TD]
[TD="align: center"]#VALUE![/TD]
[TD]Empty cell[/TD]
[/TR]
</tbody>[/TABLE]
The columns are the same as the above.