カンマで分割するのは、LaTeX 標準の \@for でできます。
ただ、カンマ区切りしか扱えません。
区切り文字をオプション指定できるような拡張も北見 けんさんによって
https://oku.edu.mie-u.ac.jp/~okumura/texfaq/qa/15266.html
に発表されていたりしますが、そのままではアンパサンド区切りは
エラーになるようです。\titlerow の定義をさらにいじって
アンパサンド区切りに対応させることもできましたが、
今度は \multicolumn を埋め込むことができなくなってしまいました。
※ 多分、\multicolumn 自身がアラインメントをいじるので、それとの
整合性がとれないんだろうと思いますが、この点の解決は私の手には
負えません。
========================================================================
\documentclass{article}\relax
\makeatletter
% \@for の拡張(by 北見 けんさん):ここから
\def\@for{\begingroup\@testopt\ex@for@ini,}
%\@testoptが、\reserved@a~d を変えてしまうのを隠蔽します。
%\@for は、\@for\reserved@b:=\list{\job}の形で使われたりするので。
\long\def\ex@for@ini[#1]#2:=#3\do{%
\endgroup
\long\def\ex@forloop##1#1##2\@@##3##4{%
\def##3{##1}%
\ifx##3\@nnil\ex@for@break\fi
##4%
\ex@forloop##2\@@##3{##4}}%
% この部分は、例えば区切り文字が[,]で与えられたとすると
% \long\def\ex@forloop#1,#2\@@#3#4{%
% \def#3{#1}%
% \ifx#3\@nnil\ex@for@break\fi
% #4%
% \ex@forloop#2\@@#3{#4}}%
% という定義をすることになります。
% #3 が項目を入れるマクロで、#4 がジョブ、#1,#2 がリストです。
\expandafter\def\expandafter\@fortmp\expandafter{#3}%
\ifx\@fortmp\@empty\ex@for@break\fi
\expandafter\ex@forloop#3#1\@nil#1\@@#2}
\long\def\ex@for@break#1\@@#2#3{\fi}
% このマクロは、下の例のように、
% ジョブの中で \if と \fi の間に置けば、
% ループを抜けるのに使えます。
% \@for の拡張:ここまで
\let\AmpChar=&%
\chardef\AmpCharCatCode=\catcode`\&
\catcode`\&=12\relax
\newcommand*\titlerow{%
\catcode`\&=12\relax
\titlerow@
}
\newcommand*\titlerow@[1]{%
\catcode`\&=\AmpCharCatCode
\let\reserved@a=\@empty
\@for[&]\reserved@b:=#1\do{%
\ifx \reserved@a \@empty
\toks@={}%
\else
\toks@=\expandafter{\reserved@a\AmpChar}%
\fi
\@temptokena=\expandafter{\reserved@b}%
\edef\reserved@a{%
\the\toks@
% \multicolumn を入れるとエラーになるので
% ちょっとごまかし
\hfill\noexpand\textbf{\the\@temptokena}%
\hfill\null
}%
}%
\reserved@a
}
\catcode`\&=\AmpCharCatCode
\makeatother
\begin{document}
\begin{tabular}{llllll}
\titlerow{bold 1&bold 2&bold 3&bold 4}\\
\titlerow{bold 5&bold 6}\\
medium 1 & medium 2 & medium 3
\end{tabular}
\end{document}