As it happens, I have been working on a similar format, which I have extended to address this question. The code, though extensive, is relatively straightforward and commented.
\documentclass{article}
\usepackage{tikz}
\usepackage[margin=0.5in]{geometry}
\usepackage{fontspec}
\usepackage{xparse}
\usepackage{keyval}
\usepackage{varwidth}
\usetikzlibrary{positioning,calc,arrows.meta}
\newlength{\xmove}
\newlength{\ymove}
\def\spinecolor{black}
\makeatletter
\define@key{fishbone}{xmoveit}{\setlength{\xmove}{#1}}
\define@key{fishbone}{ymoveit}{\setlength{\ymove}{#1}}
\define@key{fishbone}{spinecolor}{\def\spinecolor{#1}}
\makeatother
%% https://tex.stackexchange.com/questions/545308/tikz-scope-and-xshift-in-a-macro-issues/545318#545318
%% How many entries
\makeatletter
\pgfmathdeclarefunction{Dim}{1}{%
\begingroup%
\pgfutil@tempcnta0%
\@for\pgfutil@tempa:=#1\do{\advance\pgfutil@tempcnta1}%
\edef\pgfmathresult{\the\pgfutil@tempcnta}%
\pgfmathsmuggle\pgfmathresult
\endgroup%
}
\makeatother
%% Formats the text of the heads used on the spines
\NewDocumentCommand{\makehead}{m}{%
\begin{varwidth}{1in}
\linespread{0.8}\selectfont%Tighten line spacing in multiline heads
\centering
#1
\end{varwidth}%
}
%% Sets up the angle and spacing of the elements on the ribs:
\NewDocumentCommand{\setscale}{mm}{% 1=scale; 2=angle
\pgfmathsetmacro{\xdiff}{#1*cos(#2)}
\pgfmathsetmacro{\ydiff}{#1*sin(#2)}
}
%% |=====8><-----| %%
%% For the following 4 macros: Optional argument is for options: spinecolor=<a defined color> and
%% xmoveit and ymoveit are used to move the spines horizontally and vertically.
%% The first mandatory argument is a comma-separated list of the elements on the spine; if
%% there are textual commas in the elements, those commas must be hidden with braces {,}.
%% The second mandatory argument is the heading of the spine -- see examples below.
%% Note that spinecolor, once changed, stays in effect until changed again.
%% Note, too, that the effect of ymove, once changed, remains in effect until it is reset.
\NewDocumentCommand{\rldmakespine}{O{}mm}{%% Right to left, headed down
\pgfmathsetmacro{\maxitems}{Dim("{#2}")}
\setkeys{fishbone}{#1}
\begin{scope}[xshift=\xmove,yshift=\ymove]%
\foreach \N [count=\M from 1] in {#2}
{%
\node[anchor=west,inner xsep=0pt,xshift=10pt] (X) at (\M*\xdiff,\M*\ydiff)
{\strut\N};
\draw[thick,-{Stealth[]}] (X.west) -- ++(-8pt,0);
}%
\draw[ultra thick,{Stealth[]}-,\spinecolor] (0,0) --
(\maxitems*\xdiff,\maxitems*\ydiff)coordinate(head);
\node[anchor=south,above =3pt of head,\spinecolor]{\makehead{#3}};
\end{scope}%
}
\NewDocumentCommand{\lrdmakespine}{O{}mm}{%% Spine left to right, headed down
\pgfmathsetmacro{\maxitems}{Dim("{#2}")}
\setkeys{fishbone}{#1}
\begin{scope}[xshift=\xmove,yshift=\ymove]%
\foreach \N [count=\M from 1] in {#2}
{%
\node[anchor=east,inner xsep=0pt,xshift=-10pt] (X) at (-\M*\xdiff,\M*\ydiff)
{\strut\N};
\draw[thick,-{Stealth[]}] (X.east) -- ++(8pt,0);
}%
\draw[{Stealth[]}-,ultra thick,\spinecolor] (0,0) --
(-\maxitems*\xdiff,\maxitems*\ydiff)coordinate(head);
\node[anchor=south,above =3pt of head,\spinecolor]{\makehead{#3}};
\end{scope}%
}
\NewDocumentCommand{\rlumakespine}{O{}mm}{%% Spine right to left, headed up
\pgfmathsetmacro{\maxitems}{Dim("{#2}")}
\setkeys{fishbone}{#1}
\begin{scope}[xshift=\xmove,yshift=\ymove]%
\foreach \N [count=\M from 1] in {#2}
{%
\node[anchor=west,inner xsep=0pt,xshift=10pt] (X) at (\M*\xdiff,-\M*\ydiff)
{\strut\N};
\draw[thick,-{Stealth[]}] (X.west) -- ++(-8pt,0);
}%
\draw[{Stealth[]}-,ultra thick,\spinecolor] (0,0) --
(\maxitems*\xdiff,-\maxitems*\ydiff)coordinate(head);
\node[anchor=north,below =3pt of head,\spinecolor]{\makehead{#3}};
\end{scope}%
}
\NewDocumentCommand{\lrumakespine}{O{}mm}{%% Spine left to right, headed up
\pgfmathsetmacro{\maxitems}{Dim("{#2}")}
\setkeys{fishbone}{#1}
\begin{scope}[xshift=\xmove,yshift=\ymove]%
\foreach \N [count=\M from 1] in {#2}
{%
\node[anchor=east,inner xsep=0pt,xshift=-10pt] (X) at (-\M*\xdiff,-\M*\ydiff)
{\strut\N};
\draw[thick,-{Stealth[]}] (X.east) -- ++(8pt,0);
}%
\draw[{Stealth[]}-,ultra thick,\spinecolor] (0,0) --
(-\maxitems*\xdiff,-\maxitems*\ydiff)coordinate(head);
\node[anchor=north,below =3pt of head,\spinecolor]{\makehead{#3}};
\end{scope}%
}
%% |=====8><-----| %%
%% Set default
\setscale{0.475}{60}
\begin{document}
%\setscale{0.475}{75}
\begin{tikzpicture}
%% Major vertical central rule
\draw[ultra thick,-{Stealth[]}] (0,2in) -- (0,-6in)node[anchor=north,draw,thick,fill=lightgray] {Bauteilqualit\"at};
%% Major horizontal rules (the backbone)
\draw[-{Stealth[]},ultra thick,cyan] (-2.5in,0)node[anchor=east]{Methode} -- (-0.05in,0);
\draw[{Stealth[]}-,ultra thick,yellow!80!red](0.05in,0) -- (2.5in,0)node[anchor=west] {Maschine};
%% Ribs
\rldmakespine[xmoveit=0.2in,ymoveit=2pt,spinecolor=yellow!80!red]{A,B,C,D}{Spine 1R}
\rldmakespine[xmoveit=.65in]{A,B,C,D,E,F, G,H,I{,} next}{Spine 2R} %% Note hidden comma {,}
\rldmakespine[xmoveit=1.8in]{max. Temperature,Anzahl Elemente,Regelstagilit\"at,Homogenit\"at,Anordnung,Isolierung,Leistung}{Heizsystem\\und mehr}
\lrdmakespine[xmoveit=-0.2in,ymoveit=2pt,spinecolor=cyan]{1,2,3,4,5,6}{Spine 1L}
\lrdmakespine[xmoveit=-.6in]{A,B,C,D,E,F, G,H,I}{Spine 2L}
\lrdmakespine[xmoveit=-1.5in]{A,B,C,D,E,F, G,H,I,J}{Spine 3L}
%%
\rlumakespine[xmoveit=0.2in,ymoveit=-2pt,spinecolor=yellow!80!red]{1,2,3,4,5,6}{Spine 1}
\rlumakespine[xmoveit=1in]{A,B,C,D,E,F, G,H,I}{Spine 2}
\rlumakespine[xmoveit=2in]{A,B,C,D,E,F, G,H,I,J}{Spine 3}
\lrumakespine[xmoveit=-0.2in,spinecolor=cyan]{1,2,3,4,5,6}{Spine 1}
\lrumakespine[xmoveit=-1in]{A,B,C,D,E,F, G,H,I}{Spine 2}
\lrumakespine[xmoveit=-2in]{A,B,C,D,E,F, G,H,I,J}{Spine 3}
%%%%
\begin{scope}[yshift=-4in]
%% Major horizontal rules (the backbone)
\draw[-{Stealth[]},ultra thick,red!70!yellow] (-2.5in,0)node[anchor=east]{Messung} -- (-0.05in,0);
\draw[{Stealth[]}-,ultra thick,blue!70!black](0.05in,0) -- (2.5in,0)node[anchor=west] {Mitwelt};
%% Ribs
\rldmakespine[xmoveit=0.2in,ymoveit=2pt,spinecolor=blue!70!black]{1,2,3,4,5,6}{Spine 1R}
\rldmakespine[xmoveit=.7in]{A,B,C,D,E,F, G,H,I}{Spine 2R}
\rldmakespine[xmoveit=1.5in]{A,B,C,D,E,F, G,H,I,J}{Spine 3R}
\lrdmakespine[xmoveit=-.2in,spinecolor=red!70!yellow]{1,2,3,4,5,6}{Spine 1L}
\lrdmakespine[xmoveit=-.7in]{A,B,C,D,E,F, G,H,I}{Spine 2L}
\lrdmakespine[xmoveit=-1.25in]{A,B,C,D,E,F, G,H,I,J}{Spine 3L}
%%
\rlumakespine[xmoveit=0.2in,ymoveit=-2pt,spinecolor=blue!70!black]{1,2,3,4,5,6}{Spine 1}
\rlumakespine[xmoveit=1in]{A,B,C,D,E,F, G,H,I}{Spine 2}
\rlumakespine[xmoveit=2in]{A,B,C,D,E,F, G,H,I,J}{Spine 3\\u.s.w.}
\lrumakespine[xmoveit=-.2in,spinecolor=red!70!yellow]{1,2,3,4,5,6}{Spine 1}
\lrumakespine[xmoveit=-1in]{A,B,C,D,E,F, G,H,I}{Spine 2}
\lrumakespine[xmoveit=-2in]{A,B,C,D,E,F, G,H,I,J}{Spine 3}
\end{scope}
\end{tikzpicture}
\end{document}

\coordinate (m1) at (met-|bq); \draw [<-, mturkis] ($(m1)!2cm!(met)$) coordinate (b1) -- ++(125:3cm) coordinate[label=above:Bauteul] (s1); \foreach [count=\i] \t in {a,b,c,d} \draw [<-] ($(s1)!12pt*\i!(b1)$) -- ++(-12pt,0) node[left]{\t};– Torbjørn T. May 20 '20 at 18:20@<username>to a comment, that user is notified. Tab completion is available, so for me start typing@Torb, and hit tab. Only works for other people who have commented.) – Torbjørn T. May 20 '20 at 19:39