I try to place the three first description in a multirow enviroment and include a linebreak.
But I did not succed in doing this without creating an error. Do you have an idea how I could do this?
% page setup
\documentclass[a4paper, 11pt]{article}
\usepackage[margin=2cm]{geometry}
% language
\usepackage[utf8]{inputenc}
% graphics
\usepackage{array,multirow,graphicx}
% units
\usepackage{siunitx}
% chemistry
\usepackage{ghsystem}
\usepackage[version=4]{mhchem}
% tables
\usepackage{ragged2e}
\usepackage{booktabs, tabularx}
%____________________________________________________________________________________________________________
\newcolumntype{B}[1]{>{\scriptsize\RaggedRight\hspace{0pt}}p{#1}}
\newcolumntype{L}{>{\scriptsize\RaggedRight\hspace{0pt}}X}
\newlength\colwidth
%____________________________________________________________________________________________________________
% figures
\usepackage{float}
%____________________________________________________________________________________________________________
\begin{document}
\begin{table}[ht!]
\settowidth\colwidth{\textbf{Solution}} % <-- need to use \textbf to get correct measurement
\begin{tabularx}{\textwidth}{@{} B{\colwidth} *{8}{L} @{}}
\toprule
\multirow{2}{*}{\textbf{Solution}} & \multirow{2}{*}{\textbf{\shortstack{Molar mass \\ [$\si{\gram\per\mol}$]}}} & \multirow{2}{*}{\textbf{ V stock \\ [$\si{\milli\liter}$] }}& \multicolumn{3}{c}{\textbf{Amount of substance [$\si{\milli\mol}$]} } & \multicolumn{3}{c}{\textbf{Mass [$\si{\gram}$]} } \\
\cmidrule(lr){4-6} \cmidrule(lr){7-9}
& & & $\ce{KH2PO4}$ & $\ce{Na2HPO4}$ & $\ce{NaCl}$ & $\ce{KH2PO4}$ & $\ce{Na2HPO4}$ & $\ce{NaCl}$\\
\midrule
$\ce{KH2PO4}$ stock & \num{150} & $\num{1.5}$ & - & $\num{}$ & $\num{}$ & - & $\num{}$ \\
$\ce{Na2HPO4}$ stock & \num{100} & - & $\num{1}$ & $\num{}$ & - &\num{} & $\num{}$ \\
\bottomrule
\end{tabularx}
\endtabularx
\end{table}
\end{document}
\` are followed by
[` (with some spaces in between), but these are interpreted as an optional argument for\`. So write
\\{}[...` instead.\multirow
s, why don't you use{=}
in the place of{*}
since they happen in fixed width columns?