dafo
\documentclass[border=10pt]{standalone}
\usepackage[most]{tcolorbox}
\usepackage{parskip}
\colorlet{helpful}{lime!70}
\colorlet{harmful}{red!30}
\colorlet{internal}{yellow!20}
\colorlet{external}{cyan!30}
\colorlet{F}{helpful!50!internal}
\colorlet{D}{harmful!50!internal}
\colorlet{O}{helpful!50!external}
\colorlet{A}{harmful!50!external}
\newcommand{\texta}{Positius\par \tiny (per assolir l'objectiu)}
\newcommand{\textb}{Negatius\par \tiny (per assolir l'objectiu)}
\newcommand{\textcn}{\rotatebox[origin=c]{90}{\parbox[t]{3cm}{\centering Origen intern\\ \tiny (atributs de l'empresa)\par}}}
\newcommand{\textdn}{\rotatebox[origin=c]{90}{\parbox[b]{3cm}{\centering Otigen extern\\ \tiny (atributs de l'ambient)\par}}}
\newcommand{\texts}{strength 1\par strength 2}
\newcommand{\textw}{weakness 1\par weakness 2}
\newcommand{\texto}{opportunity 1\par opportunity 2}
\newcommand{\textt}{threat 1\par threat 2}
\tcbset{swotbox/.style={size=normal, boxrule=0pt,
colback=#1, watermark text=#1, width=.5\linewidth-5mm},
header/.style={size=small, boxrule=0pt, width=.5\linewidth-5mm, colback=#1, valign=center, halign=center},
firstcol/.style={header=#1, width=1cm}
}
\begin{document}
\begin{tcbitemize}[raster columns=3, raster rows=3, enhanced, sharp corners, raster row 2/.style={height=3cm}, raster row 3/.style={height=3cm}, raster equal height=rows, raster force size=false, raster column skip=0pt, raster row skip = 0pt]
%Empty corner and two headers
\tcbitem[blankest, width=1cm]
\tcbitem[header = helpful]
\texta
\tcbitem[header = harmful]
\textb
%First row
\tcbitem[firstcol = internal]
\textcn
\tcbitem[swotbox = F]
\footnotesize
\textbf{Fortaleses:}
\tcbitem[swotbox = D]
\footnotesize
\textbf{Debilitats:}
%Second row
\tcbitem[firstcol = external]
\textdn
\tcbitem[swotbox=O]
\footnotesize
\textbf{Oportunitats:}
\tcbitem[swotbox=A]
\footnotesize
\textbf{Amenaces:}
\end{tcbitemize}
\end{document}