longtable `longtable` macht einfach ein `\refstepcounter{table}` und darauf referenziert dein Label. Du musst einfach weitere `\refstepcounter` ausführen.
\documentclass{article}
\usepackage[ngerman]{babel}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{longtable,array}
\newcounter{tabrow}
\newcounter{tabcol}
\renewcommand\thetabcol{\thetable.\thetabrow.\arabic{tabcol}}
\newcommand\inittable{\setcounter{tabcol}{0}%
\setcounter{tabrow}{0}}
\newcommand\initrow{\setcounter{tabcol}{0}%
\refstepcounter{tabrow}%
\thetabrow~%zum sehen der Zeilennummer
}
\newcommand\countcol{\refstepcounter{tabcol}}
\begin{document}
Text Text Text Text Text Text Text Text Text Text Text Text Text
\inittable
\begin{longtable}[l]{>{\initrow\countcol}p{3cm}
>{\countcol}p{2cm}
>{\countcol}p{2cm}}
\caption{First}\\
Hauptzutat&Fleisch&Gemüse\\
\multicolumn{1}{c}{}\\
Kartoffeln&Frikadellen&Zwiebeln\\
Kartoffeln&\label{tablinecol}Frikadellen&Rotkohl\\
Kartoffeln&Bratwurst&Rotkohl\\
\end{longtable}
Wie in Tabelle \ref{tablinecol} erwähnt, sind Frikadellen die Fleischzutat.\\
Text Text Text Text Text Text Text Text Text Text Text Text Text
\end{document}
Natürllich musst du in `\multicolumn` selbst auf die korrekte Setzung des Zählers achten. Mit `\multicolumn` kannst du auch Zellen/Zeilen aus der Zählung rausnehmen. Das geht natürlich auch durch `\addtocounter{..}{-1}`. Und du musst entscheiden, wie der `table`-Zähler bei normalen Tabellen ohne `\caption` gesetzt werden soll.