0

> = 0の単純な基準を満たす行の最後の(右端、右から左への)8つの数値セル値の平均を見つける必要があります。ゼロと負の値の組み合わせを含む行からのゼロまたは正の数。つまり、行の終わりから逆方向に数えて0以上を含むすべてのセルから8番目のセル参照を見つける必要があります。

行の例:

1.6425  0.6233  5.2899  4.4372  2.0356  3.9796  1.5306  3.8344  0   -1  -1  3.8294  -1  3.0957  0   3.7572  -1

期待される結果:2.50(3.7572 + 0 + 3.0957 + 3.8294 + 0 + 3.8344 + 1.5306 + 3.9796)/ 8

4

2 に答える 2

0

私はあなたの問題を解決しましたが、補助列がたくさんあります。以下では、行 2 から始まる列 A から Q にデータがあると仮定します。

  1. 1 行目の T 列から AC 列に A から J の文字を入力します。

  2. 最初のデータ行

    =ROW()2.1 フォーラムを S 列に入れる

    2.2 配列数式 (入力時に Shift + Ctrl + Enter を押す)=SUM(IF(INDIRECT(T$1 & $S2 & ":Q" & $S2,TRUE)>=0,1,0))を列 T に配置し、列 AC まで右にコピーします。

    2.3 =INDEX($T$1:$AC$1,MATCH(8,T2:AC2,0))AD列に配列数式を入力

    2.4 最後に、配列数式=SUM(IF(INDIRECT(AD2 & S2 & ":Q" & S2) >= 0, INDIRECT(AD2 & S2 & ":Q" & S2), 0))/8を列 AE に配置します。これが目的の結果です

  3. 数式を含む行をデータのあるすべての行にコピーできます

これは私のExcelでどのように見えるかです: スクリーンショット

機能:

  • 列 S は現在の行です。配列関数では機能しないINDIRECTため、関数に必要です。ROW()INDIRECT

  • 列 T - AC では、現在のデータ行の右側にある正またはゼロの列の数を、異なる列から数えます。それらの文字は最初の行にあります。開始できる一番右の列は J です。それ以外の場合、8 つの値はありません。

  • 列 AD で 8 番に一致し、最初の行から、平均化の範囲を開始する必要がある列を取得します

  • 最後に、列 AE で必要INDIRECTな範囲への参照を作成し、0 以上のすべての数値を合計して 8 で割ります。

于 2012-08-02T09:10:27.327 に答える
0

必要な 8 つのセルだけをマークするために、補助行A2:Q2AVERAGEIFSを1 つだけ使用して追加することで、これをきれいに解決しました。この余分な行は、行 A2:Q2 全体にコピーされた数式を使用して、行 1 の上のセルが 0 より小さくない場合にのみ、前のカウント (右側の次のセル) から 1 ずつ反復して、行の末尾から逆方向にカウントします。これは、メインの数式の基準2として機能します。つまり、右から最初の 8 つのセルを値 >=0 で使用します。=IF(A1<0,B2,B2+1)

=AVERAGEIFS(A1:Q1, A1:Q1, ">=0", A2:Q2, "<9")次に、セルC4で結果を取得するのは簡単です。C5は、計算結果に対する単純な手動テストです。

Excel ファイルは次のとおりです: https://dl.dropbox.com/u/4974539/averageifs_tweak.xlsx - スクリーン ショット:

ここに画像の説明を入力

于 2012-08-02T15:27:43.787 に答える