We know the minimum height and depth of one row, but that does not give us the height and depth of a particular row as it may contain large entries. If we create a row containing nothing but tikzmarks, then we can use a negative vskip to overlay it with the next row.
Note that the @{} generates multiple coordinates with same name. Only the last one counts.
A tikz matrix would have been easier.
\documentclass[a4paper]{article}
\usepackage{array,tabularx,tikz,ragged2e,siunitx,xparse,hhline}% only tikz is needed here
\usetikzlibrary{calc}
\newcommand{\tikzmark}[2][0pt]% #1 = y offset (optional), #2 = coordinate name
{\tikz[overlay,remember picture]\coordinate (#2) at (0pt,#1);}
\newcommand{\tikzrowmark}[2]% #1 = number of columns, #2 = coordinate name
{\multicolumn{#1}{c}{\tikzmark[\arraystretch\ht\strutbox]{#2}}%
\\[\dimexpr -\arraystretch\ht\strutbox-\arraystretch\dp\strutbox]}%
\begin{document}
\begin{tabular}{|@{\tikzmark{A west}\hspace{\tabcolsep}}c@{\hspace{\tabcolsep}\tikzmark{A east}}|c|}
\hline
\tikzrowmark{2}{A north}
A&B \\
\tikzrowmark{2}{A south}
\hline
\end{tabular}
\begin{tikzpicture}[overlay,remember picture]
\fill[yellow] (A west |- A north) rectangle (A east |- A south) ;
\end{tikzpicture}
\end{document}

\noalign{\pgfmark{top}}. The left and right is normally quite easy to get by putting a mark in a cell or before/after the tabular. Then you can calculate the coordinates with intersections. – Ulrike Fischer Feb 13 '18 at 21:36=-~|:#tb*. There appears to be no equivalent to@{}. – John Kormylo Feb 14 '18 at 17:20