
何千もの数字のセットが入ったスプレッドシートがあります。つまり、10 列あり、各列に数字があり、これらの数字の行が何千行もあります。
私がやりたいのは、各行の数字が増加しているかどうかをチェックすることです。たとえば、これが 1 行目だとします (各数字は別々の列です)。
13. 17. 25. 37. 39. 40. 53. 61. 68. 71
ご覧のとおり、数字はすべて増加しています。次に、これが 2 行目だと想像してみましょう。
13 5. 3. 18. 34. 17. 49. 83. 63. 71
この場合、開始番号と終了番号は最初の番号セットと同じですが、実行されるパスはまったく異なります。
私が欲しいのは、成長がどれだけ継続的であるかを評価するための式です。
何か案は?
答え1
=IFERROR(IFS(B6<A6,FALSE,C6<B6,FALSE,D6<C6,FALSE,E6<D6,FALSE,F6<E6,FALSE,G6<F6,FALSE,H6<G6,FALSE,I6<H6,FALSE,J6<I6,FALSE),TRUE)
それが最も簡単な方法だと信じています。
IFS は各数値を前の数値と比較し、前の数値より小さい場合は FALSE を返します。
すべての数値が前の数値より大きい場合、IFS は出力を生成せず、NA エラーが発生します。
ISERROR は NA エラーを TRUE に変換します。つまり、数値はすべて増加していることを意味します。
シーケンス内の前の数字より大きい数字の数を取得するには:
=COUNTIF(B11,">" & A11)+COUNTIF(C11,">" & B11)+COUNTIF(D11,">" & C11)+COUNTIF(E11,">" & D11)+COUNTIF(F11,">" & E11)+COUNTIF(G11,">" & F11)+COUNTIF(H11,">" & G11)+COUNTIF(I11,">" & H11)+COUNTIF(J11,">" & I11)
各カウントは、現在の数値を前の数値と比較し、数値が大きい場合のみカウントし、すべてのカウントを合計します。
答え2
これを実現するには、配列数式を使用できます。
データが にあると仮定してA1:J1
、次の数式をセルに入力し=AND(B1:J1>A1:I1)
、Ctrl+ Shift+を押してEnter配列数式を作成します。Excel では数式が{}
自動的に で囲まれることに注意してください (手動で囲むことはできません)。Google スプレッドシートでは、Excel ショートカットの代わりに 関数ArrayFormula
内でを使用できます。AND
AND(ArrayFormula(B1:J1>A1:I1))
これにより、 の要素ごとの計算が行われ>
、すべてが真であるかどうかがチェックされます。 2 つの範囲は 1 つのセルだけオフセットされていますが、長さは同じであるため、 と がB1
比較A1
され、C1
がB1
比較され、以下同様に比較されることに注意してください。 次に、結果の配列が に渡され、AND
すべてが真であるかどうかがチェックされます。
最初の行に配列数式を挿入したら、複数の行がある場合は、各行の数式を下にドラッグするだけです。
あるいは、何らかの理由で配列を使用したくない場合は、数値リストの下または横 (または、正直に言えばどこでも) に別のセル範囲を追加することで、配列を使用せずにこれを行うことができます。この追加のセル範囲で、各セルの比較を行うことができます。
データが から始まっている場合A1
、たとえばセル にB2
数式 を追加し、数式をドラッグしてデータの幅に合わせます (数式は参照を自動的に更新します)。最後に、それらのセルのすべてが true であるかどうかを確認する必要があります。(B1 > A1)
これは を使用して実行できます。AND(B2:J2)
答え3
ArrayFormula
google-spreadsheets にタグを付けたので、 を使用してこれを 1 つの数式に簡略化することもできます。
=AND(ARRAYFORMULA(B1:J1>A1:I1))
行数が変わる場合は、それに応じて とJ1
を調整できます。I1
右側の列がすべて空白の場合、次の操作を実行する=AND(ARRAYFORMULA((B1:Z1>A1:Y1)+(ISBLANK(B1:Z1))))
と、後続の列が空白である限り、最大 26 列まで自動的に処理されます。
答え4
これらの答えは、動的配列数式お使いのバージョンの Excel で利用できます。
新しい、よりシンプルな答え:
動的配列数式を使用すると、各要素が別の配列の要素よりも小さいかどうかを確認できます。
=AND((A1:I1) < (B1:J1))
これはシンプルで、基本的には、配列の最後までであることA1 < B1
を意味します。B1 < C1
コツは、2 つのリストをオフセットして、各項目を元の配列の次の値と比較することです。
つまり、最初の配列は最初の項目から最後から 2 番目の項目まで、2 番目の配列は 2 番目の項目から最後の項目までA1:I1
を比較していることになります。B1:J1
元の回答:
リストが>=
順序どおりであることが許可されている場合(厳密には ではなく>
)、つまり1, 2, 3, 3, 4
も有効である場合。
値を並べ替えたり、並べ替えた値を元の値と比較したりできます。
元の値が昇順になっている場合、並べ替えられたリストは元のリストと同じになります。
これにより、列ごとに並べ替えられ、各値を比較して、AND()
リストが 1 つの結果にまとめられます。
=AND(SORT(A1:J1,1,1,TRUE)=A1:J1)
単一のデータ列を比較する場合は、少し簡単になります。
=AND(SORT(A1:A10)=A1:A10)