11

2 つの別々のシートを持つ Google スプレッドシートがあります。1 つ目は名前とデータの大きなリストであり、2 つ目は最初のシートのすべてのデータを並べ替えたリスト (たとえば姓で並べ替えたもの) です。2番目のシートを定義している現在の方法は次のとおりです。

=sort(sheet1!A2:L100, sheet1!D2:D100, TRUE)

1 つの問題を除いて、これはほとんどの場合正常に機能します。シート 1 では、4 列目 (列 D) のセルの一部が空白です。列 D に空白のセルがある行を並べ替えが無視するように数式を変更するにはどうすればよいですか?

私が試した数式は望ましくない結果になりました:

  1. =arrayformula(if(istext(sheet1!D2:D100), sort(sheet1!A2:L100, sheet1!D2:D100, true), ""))

    希望どおりに並べ替えられましたが、1 つの問題がありました。空白のセルは最後にプッシュされず、行の間に散らばっていました。

  2. =arrayformula(sort(filter(sheet1!A2:L100, istext(sheet1!D2:D100)),sheet1!D2:D100, true))

    フィルター部分は完全に機能しますが、並べ替えと組み合わせると、エラーが発生します: 範囲の長さが一致しません。

4

2 に答える 2

19

列 D に空白のセルがある行をフィルターで除外するには、#2 のようなことを行うことができますが、エラー メッセージが示すように、範囲が同じ長さになるように 2 番目の引数もフィルター処理する必要があります。幸いなことに、より簡単な方法があります。それは、範囲ではなく列インデックスを使用することです。

=SORT(FILTER(sheet1!A2:L100;ISTEXT(sheet1!D2:D100));4;TRUE)

別の方法として、次のような場合に QUERY 関数を使用できます。

=QUERY(sheet1!A2:L100;"select * where D != '' order by D";0)

于 2013-08-06T00:36:07.733 に答える