How to create simple funnel in LaTeX?

I have a problem trying to create a simple funnel, as it can be seen on the attached file:

I have tried to look at the internet, trying to write the lines, but it won't work. I am using TikZ. The basic idea with the figure is to show the reader, that I do a delimitation.

If someone can help me or have another better option, I would be glad to hear about that.

-
This is what Wikipedia reports as a helix and a spiral - both of which reference "mathematical curves". None of that is highlighted in your graphic. –  Werner Apr 13 at 14:01
I could not find a better word. Maybe a funnel is more precise? –  A. F. Apr 13 at 14:29
You should accept one of the answers. –  Svend Tveskæg Apr 15 at 12:08

Doesn't generalize very well, but...

\documentclass[tikz,border=5]{standalone}
\begin{document}
\begin{tikzpicture}[x=4cm,y=.5cm, >=stealth]
\foreach \i [evaluate={%
\x=\i<4 ? \i : (\i<16 ?    1 : (\i<22 ?     2 : 3));
\y=\i<4 ?  1 : (\i<16 ? 2-\i : (\i<22 ? 11-\i : 15-\i));
}] in {1,...,23}
\node (text-\i) at (\x,\y) {Text \i};
\draw [->] ( text-4.north west -| text-15.west)++(0,1)  -- (text-22.north east);
\draw [->] (text-15.south west)++(0,-1) -- (text-23.south east);
\end{tikzpicture}


-

A PSTricks solution:

\documentclass{article}

\usepackage{pstricks}
\usepackage{multido}

\begin{document}

\begin{pspicture}(8,8.1)
\psline{->}(0,0)(8,3)
\psline{->}(0,7)(8,4)
\multido{\iA = 1+3, \iB = 1+1}{3}{\rput(\iA,8){Text~\iB}}
\multido{\r = 5.975+-0.45, \i = 4+1}{12}{\rput(1,\r){Text~\i}}
\multido{\r = 4.625+-0.45, \i = 16+1}{6}{\rput(4,\r){Text~\i}}
\multido{\r = 3.725+-0.45, \i = 22+1}{2}{\rput(7,\r){Text~\i}}
\end{pspicture}

\end{document}


-

Something like this?

\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{arrows}

\begin{document}

\begin{tikzpicture}
% Line of Text
\node at (0,7) {Text 1};
\node at (4,7) {Text 2};
\node at (8,7) {Text 3};
% First column of Text
\node at (0,5.5) {Text 4};
\node at (0,5) {Text 5};
\node at (0,4.5) {Text 6};
\node at (0,4) {Text 7};
\node at (0,3.5) {Text 8};
\node at (0,3) {Text 9};
\node at (0,2.5) {Text 10};
\node at (0,2) {Text 11};
\node at (0,1.5) {Text 12};
\node at (0,1) {Text 13};
\node at (0,0.5) {Text 14};
\node at (0,0) {Text 15};
% Second column of Text
\node at (4,4) {Text 16};
\node at (4,3.5) {Text 17};
\node at (4,3) {Text 18};
\node at (4,2.5) {Text 19};
\node at (4,2) {Text 20};
\node at (4,1.5) {Text 21};
% Third column of Text
\node at (8,3) {Text 22};
\node at (8,2.5) {Text 23};
% Arrows
\draw[-triangle 60] (-1,6.5)--(9,3.5);
\draw[-triangle 60] (-1,-1)--(9,2);
\end{tikzpicture}

\end{document}


Yielding this:

Edit: An adjustment for shorter code, but less control over what might be placed in place of each specific "Text":

\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{calc,arrows}
\begin{document}

\begin{tikzpicture}
% Line of Text
\foreach \x in {1,2,3}{\node at ($(0,7)+(\x*4-4,0)$) {Text \x};}
% First column of Text
\foreach \x in {4,...,15}{\node at ($(0,6)+(0,\x*-.5+1.5)$) {Text \x};}
% Second column of Text
\foreach \x in {16,...,21}{\node at ($(4,4)+(0,\x*-.5+8)$) {Text \x};}
% Third column of Text
\foreach \x in {22,23}{\node at ($(8,3)+(0,\x*-.5+11)$) {Text \x};}
% Arrows
\draw[-triangle 60] (-1,6.5)--(9,3.5);
\draw[-triangle 60] (-1,-1)--(9,2);
\end{tikzpicture}

\end{document}

-
The output is fine but can you get rit of all the hard-coded stuff? –  Svend Tveskæg Apr 15 at 3:58
@SvendTveskæg Sure, with a \foreach \x\y\z in {0/7/1,4/7/2,...} loop, or I suppose \foreach \x in {1,...,12} for the first column and some counter manipulation. I actually assumed the asker was putting the "Text"s as placeholders here, that he/she wanted to put something more specific, more relevant to what he/she is doing, in place of those, and they might not be so easily iterable. I might be wrong, though. –  jlv Apr 15 at 4:05
I just ask because I don't know TikZ myself and would like to see other solutions than the one of Mark Wibrow. :) –  Svend Tveskæg Apr 15 at 4:08
@SvendTveskæg See my edit. The approach resembles yours now, with a single command for each "group" of "Text"s. –  jlv Apr 15 at 4:22