単純にMEDIAN関数で実現できますが、条件付きの中央値を求める場合は他の関数との組み合わせが必要です。
基本的な求め方
次の画像では、MEDIAN関数を使ってC列の7つの数値の中央値を求めています。
数値は小さい順に24,29,30,33,35,41,182となっており、そのちょうど真ん中(中央)にある「33」が求められています。

E3セル
=MEDIAN(C3:C9)
単純に対象とするセルの範囲を指定するだけで中央値が求められます。中央値は極端な値(外れ値)の影響を受けにくいのが特徴で、このデータでも182という外れ値がありますが、これがいくら大きい数字になったとしても33という中央値に変わりはありません。
なお、セル範囲をカンマで区切って指定することで飛び飛びの範囲にある数値の中央値を求めることもできます。
次の画像は、数式を変えずにデータ中の最後の1つを削除した様子です。
数値は小さい順に24,29,30,33,35,182の6つとなっており、このとき中央値は真ん中の2つの数値(30,33)の平均である31.5となります。数値が偶数個の場合は同様の計算で中央値が算出されます。

なお空白セルのほか、文字列も無視されます(結果に反映されない)。
条件付きの中央値を求める方法
GoogleスプレッドシートにはAGGREGATE関数がなく、MEDIANIF(S)のような関数も存在しないので条件付きの中央値を求める場合はMEDIAN関数と他の関数を組み合わせる必要があります。
0を除いて中央値を求める場合
2つの方法を紹介します。
1つ目はFILTER関数とMEDIAN関数を組み合わせる方法です。
次の画像では、数値のうち0以外のものだけを対象として中央値を求めています。
対象は小さい順に24,29,30,35,41,182の6つとなるので、中央値は30と35の平均つまり32.5となります。

E3セル
=MEDIAN(FILTER(C3:C9,C3:C9>0))
FILTER関数で0以外の6つの数値(配列)を取得し、そこからMEDIAN関数で中央値を求めています(便宜上「0以外」としていますが数式では0より大きいものを取得しているので、0以外の正負の数値から中央値を求める場合は「>0」を「<>0」としてください。次の例でも同様です)。
ただし数値が複数列に並んでいる場合はこのままでは使えません。そのような場合は「=MEDIAN(FILTER(TOCOL(範囲),TOCOL(範囲)>0))」とすればOKです。
2つ目はIF関数とMEDIAN関数を組み合わせる方法です。

E3セル
=MEDIAN(ARRAYFORMULA(IF(C3:C9>0,C3:C9,"")))
IF関数を使って0以外を空文字列に変換し、そこからMEDIAN関数で中央値を求めています。
アイデアは単純なのですがARRAYFORMULAを忘れると誤った結果になるのが問題で、少々扱いにくい感じはします。
ただし数値が複数列に並んでいる場合でもこのまま使える(範囲を広げるだけでよい)のがメリットです。
他の列に条件をつける場合
数値以外の列に条件をつけて中央値を求める例です。ここではFILTER関数と組み合わせる例のみ紹介します。
次の画像では、B列の値が「本店」であることを条件としてD列の数値の中央値を求めています。
対象となる数値は小さい順に24,33,35,182の4つで、真ん中の2つの数値(33,35)の平均つまり34が中央値となります。

F3セル
=MEDIAN(FILTER(D3:D9,B3:B9="本店"))
抽出条件にB列を指定しただけで、式の内容としては上記例と特に変わりありません。
もちろんIF関数と組み合わせる方法でも求められますが、FILTER関数の方が複数条件(AND)にするのが簡単(カンマで区切って2番目、3番目の条件を記していけばよい。ただしExcelでは使えないので注意)なこともあってやはりFILTER関数の方が使いやすいかと思います。