One can use the fit library to always draw the lines between the tallest/widest matrix entries. I added a style full matrix grid which can be used as
\draw[matrix name=x,matrix cols=6,matrix rows=5,full matrix grid];
If you want to draw only a subset of vertical or horizontal lines, you can use the redefined vlines or hlines styles, which now also use fit.
\documentclass{beamer}
\beamertemplatenavigationsymbolsempty
\usepackage{verbatim}
\usepackage{tikz}
\usetikzlibrary{arrows,calc,fit,matrix}
\tikzset{matrix rows/.initial=5,matrix cols/.initial=6,matrix name/.initial=x,
vline/.style={/utils/exec=\foreach \XX in {1,...,\pgfkeysvalueof{/tikz/matrix rows}}
{\ifnum\XX=1
\xdef\MatLstA{(\pgfkeysvalueof{/tikz/matrix name}-\XX-#1)}
\xdef\MatLstB{(\pgfkeysvalueof{/tikz/matrix name}-\XX-\the\numexpr1+#1\relax)}
\else
\xdef\MatLstA{\MatLstA (\pgfkeysvalueof{/tikz/matrix name}-\XX-#1)}
\xdef\MatLstB{\MatLstB (\pgfkeysvalueof{/tikz/matrix name}-\XX-\the\numexpr1+#1\relax)}
\fi},
insert path={node[fit=\MatLstA,inner sep=0pt] (fitA) {}
node[fit=\MatLstB,inner sep=0pt] (fitB) {}
($(fitA.east)!0.5!(fitB.west)$) coordinate (aux)
(\pgfkeysvalueof{/tikz/matrix name}.north-|aux) -- (\pgfkeysvalueof{/tikz/matrix name}.south-|aux)}},
hline/.style={/utils/exec=\foreach \XX in {1,...,\pgfkeysvalueof{/tikz/matrix cols}}
{\ifnum\XX=1
\xdef\MatLstA{(\pgfkeysvalueof{/tikz/matrix name}-#1-\XX)}
\xdef\MatLstB{(\pgfkeysvalueof{/tikz/matrix name}-\the\numexpr1+#1\relax-\XX)}
\else
\xdef\MatLstA{\MatLstA (\pgfkeysvalueof{/tikz/matrix name}-#1-\XX)}
\xdef\MatLstB{\MatLstB (\pgfkeysvalueof{/tikz/matrix name}-\the\numexpr1+#1\relax-\XX)}
\fi},insert path={node[fit=\MatLstA,inner sep=0pt] (fitA) {}
node[fit=\MatLstB,inner sep=0pt] (fitB) {}
($(fitA.south)!0.5!(fitB.north)$) coordinate (aux)
(\pgfkeysvalueof{/tikz/matrix name}.west|-aux) -- (\pgfkeysvalueof{/tikz/matrix
name}.east|-aux)}},
full matrix grid/.style={vline/.list={1,...,\the\numexpr\pgfkeysvalueof{/tikz/matrix
cols}-1},hline/.list={1,...,\the\numexpr\pgfkeysvalueof{/tikz/matrix rows}-1},
insert path={(\pgfkeysvalueof{/tikz/matrix name}.south west) rectangle
(\pgfkeysvalueof{/tikz/matrix name}.north east)}}}
\begin{document}
\begin{frame}[t,fragile]
\frametitle{matrix}
\begin{tikzpicture}
\matrix (x) [matrix of nodes, row sep=10pt, column sep=10pt] {%
15.1 & 23.7 & 19.7 & 15.4 & 18.3 & 23.0\\
17.4 & 18.6 & 12.9 & 20.3 & 13.7 & 21.4\\
10.3 & 26.1 & 15.718.918.9 & 14.0 & 17.8 & 33.8\\
23.2 & 12.9 & 29.8 & 18.3 & 14.2 & 20.8\\
13.5 & 17.1 & 20.7 & 27.1 & 18.918.9 & 16.6\\};
\draw<2->[ultra thick, blue, latex'-] (x-2-1) node [fill, red!40!white, circle, inner sep=8pt, opacity=.4]{} -- (x-4-5) node [fill, blue!40!white, circle, inner sep=8pt, opacity=.4]{};
% Node names: (<name of matrix>-<row>-<column>)
% \draw[vline/.list={1,...,5},hline/.list={1,...,4}] (\pgfkeysvalueof{/tikz/matrix name}.north west) rectangle
% (\pgfkeysvalueof{/tikz/matrix name}.south east); %
\draw[matrix name=x,matrix cols=6,matrix rows=5,full matrix grid]; %
\end{tikzpicture}
\end{frame}
\end{document}

P.S. The outer lines can be drawn with draw, too.