Automatic amount table columns and column numbers

Here is an expl3 implementation. With the help of array and its w column specifier, all columns can be made as wide as the last (with the largest number).

\documentclass{article}

\usepackage{xparse,array}

\ExplSyntaxOn
\NewDocumentCommand{\CountBox}{m}
 {
  % measure the wider number
  \hbox_set:Nn \l_tmpa_box { #1 }
  \dim_set:Nn \l_tmpa_dim { \box_wd:N \l_tmpa_box }
  % do as many columns as specified
  \begin{tabular}{|*{#1}{w{c}{\l_tmpa_dim}|}}
  \hline
  % do '<number> &' one less than specified, then add the last number
  \int_step_function:nN { #1 - 1 } \__phlemp_countbox_head:n #1 \\
  \hline
  % generate as many &'s as necessary to fill the second row
  \prg_replicate:nn { #1 - 1 } { & } \\
  \hline
  \end{tabular}
 }

% auxiliary function for adding the & after the number
\cs_new_protected:Nn \__phlemp_countbox_head:n { #1 & }
\ExplSyntaxOff

\begin{document}

\CountBox{3} \CountBox{10}

\end{document}

enter image description here


The following uses multido to generate the column numbering sequence and blank row. A similar approach to egreg's uses array's w{<align>}{<width>} to set the column width to the widest element:

enter image description here

\documentclass{article}

\usepackage{multido,array}

\newcounter{boxCount}
\newlength{\boxCountwd}

\makeatletter
\newcommand{\CountBox}[1]{%
  \setcounter{boxCount}{0}% Reset boxCount
  \settowidth{\boxCountwd}{#1}% Measure widest element
  \def\CountBoxSeq{\@gobble}%
  \def\CountBoxSeqPhantom{\@gobble}%
  \multido{\i=1+1}{#1}{%
    \xdef\CountBoxSeq{\CountBoxSeq & \i}%
    \xdef\CountBoxSeqPhantom{\CountBoxSeqPhantom &}%
  }%
  \noindent
  \begin{tabular}{ *{#1}{|w{c}{\boxCountwd}} | }
    \hline
    \CountBoxSeq \\
    \hline
    \CountBoxSeqPhantom \\
    \hline
  \end{tabular}%
}
\makeatother

\begin{document}

\CountBox{5}

\end{document}

With \foreach in TikZ:

\documentclass{article}       
\usepackage{tikz}
\usepackage{etoolbox}
\usetikzlibrary{
    positioning,
    shapes.multipart
    }
\tikzset{
    mynode/.style={
        draw,
        rectangle split,
        rectangle split parts=2,
        text centered,
    },
}
\newcommand{\CountBox}[1]{%
    \begin{tikzpicture}
        \node[mynode] (1) {1};
        \ifnumcomp{#1}{=}{1}{}{%
            \foreach \mynum 
                [evaluate=\mynum as \myprev using int(\mynum-1)]  
                in {2,...,#1}
            \node[mynode,xshift=-\pgflinewidth,anchor=west] (\mynum) at (\myprev.east) {\mynum};
            }%
    \end{tikzpicture}%
    }

\begin{document}
\CountBox{1} 

\CountBox{3}

\CountBox{6}

\CountBox{2} 
\CountBox{4}
\CountBox{7} 
\end{document}

enter image description here