ただし空のセルを無視する(出力しない)といった複雑な機能は再現が困難なので、単に1種類の区切り文字で分割するだけとします。
手順
やりたいことの確認です。
B3セルに対象となる文字列が入力されています。
ここで文字列中の「☆」を区切り文字として文字列を分割(ねぎ、レタス、ねぎ、きゅうり、なすの5つ)し、右側のD3セル以降のセルに並べて表示させるものとします。

まずはD3セルに次のように入力します。

D3セル
=REPLACE(
LEFT("☆"&$B3&"☆",FIND("★",SUBSTITUTE("☆"&$B3&"☆","☆","★",COLUMN(A1)+1))-1),1,
FIND("★",SUBSTITUTE("☆"&$B3&"☆","☆","★",COLUMN(A1))),""
)かなり長い式になっていますが、次のような内容です。
- 次の3つの文字列を用意する
- B3セルの文字列の前後に「☆」を加えた文字列
- 上記aの文字列のうち1番目(COLUMN(A1))の「☆」を「★」に置き換えた文字列
- 上記aの文字列のうち2番目(COLUMN(A1)+1)の「☆」を「★」に置き換えた文字列
- B3セルの文字列の前後に「☆」を加えた文字列
- FIND関数を使い、上記b,cの文字列中の「★」がそれぞれ何文字目か取得する(それぞれm,n文字目とします)。
- 上記aの文字列中の「m+1文字目からn-1文字目」までを取得する
右側にフィルコピー(D3セル右下の小さい四角をドラッグ)すると、各セルに分割された文字列が表示されます。右側のセルほど上記の式のCOLUMN関数の値が増えていくのでE3セルでは2,3番目の「☆」の間の文字列を、F3セルでは3,4番目の「☆」の間の文字列を取得する…という仕組みです。
なお、分割後の文字列が5つなので、6つ目以降のセル(I列以降)は「#VALUE!」エラーになります。これを表示させたくない場合はIFERROR関数を加えて「=IFERROR(上記の式,"")」としてください。

次の画像は、いくつかの文字列を対象として上記の数式を適用した結果です(上記の数式をそのまま下方にフィルコピーしています)。
文字列の先頭や末尾に「☆」があったり、連続する「☆」がある場合はその部分に空文字列が発生します。
また、「☆」がない場合は文字列がそのまま表示されることがわかります(ただし空白セルは空文字列に変換されています)。

備考
関数式入力後の表操作について
上記の式ではCOLUMN関数を利用しているため、例えばA列を削除すると「#REF!」エラーが発生します。
式を工夫する方法も考えられますが、関数式入力後に値に変換(コピー→値を貼り付け)しておいた方が無難です。
他の方法について
上記の例のほかに、FILTERXML関数を使う方法もあります。
アプローチが異質なうえに利用に適したバージョンが限られます(スピル機能がありTEXTSPLITがないバージョン)が、参考まで。