برای چاپ شماره سوال میتونید یک شمارنده تعریف کنید:
\newcounter{row}
\setcounter{row}{1}
\newcommand{\co}{\arabic{row}\stepcounter{row}} 
در کد بالا، شمارندهای به اسم row تعریف کردیم و بعد چون شماره سوالها از یک شروع میشه، با دستور \setcounter  مقدار پیشفرضش رو برابر ۱ قرار دادیم. همچنین چون توی هر ردیف، شماره سوالها یک واحد باید زیاد بشه، از دستور \stepcounter استفاده کردیم. حالا فقط کافیه دستور \co رو در جای مناسب قرار بدیم.
برای قرار دادن این شمارنده، من از محیط itemize استفاده کردم. در واقع، تعریف دستور \generateTable رو به صورت
\newcommand{\generateTable}[1]{%
\countRepeatntimes{#1}{%
\begin{itemize}
\item[\textbf{\co.}]  \repeatntimes{4}{
\textcolor{lightgray}{\rule{0.9\baselineskip}{0.9\baselineskip}}}
\end{itemize}
}
}
تغییر دادم.
برای چندستونه کردن هم از بسته multicol استفاده کردم و دستور \generateTable{\qCount} رو داخل محیط multicols گذاشتم. 
کد کامل رو میتونید در پایین ببینید:
\documentclass[a4paper]{article}
\usepackage{multicol}
\usepackage{tikz}
\newcommand{\repeatntimes}[2]{
   \newcount\i
   \i=0
   \newtoks\ans
   \loop
      \ans=\expandafter{\the\ans #2}
      \advance\i by 1
      \ifnum\i<#1\repeat
   \the\ans
}
\newcommand{\countRepeatntimes}[2]{
   \newcount\i
   \i=0
   \newtoks\ans
   \loop
      \advance\i by 1
      \ans=\expandafter{\the\ans #2}
      \ifnum\i<#1\repeat
   \the\ans
}
\newcounter{row}
\setcounter{row}{1}
\newcommand{\co}{\arabic{row}\stepcounter{row}}   
\newcommand{\generateTable}[1]{%
\countRepeatntimes{#1}{%
\begin{itemize}
\item[\textbf{\co.}]  \repeatntimes{4}{
\textcolor{lightgray}{\rule{0.9\baselineskip}{0.9\baselineskip}}}
\end{itemize}
}
}
\begin{document}
\def\qCount{80}
\begin{multicols*}{3}% عدد ۳ رو برای تغییر دادن تعداد ستونها کم و زیاد کنید
\generateTable{\qCount}
\end{multicols*}
\end{document}
خروجی:

ویرایش:
در صورتی که میخواید ستونها متوازن باشه، علامت ستاره محیط multicols رو بردارید. با این کار، انتهای ستونها در یک ردیف قرار خواهند گرفت.