-1

私は次のことをしようとしています:

  • 各行について
  • セルAにテキスト「abc」が含まれている場合は、列Bの値を取得して
  • 列Bの値が0:03:00より大きい場合、0.9を返します
  • それ以外の場合、列Bの値が0:03:00未満で00:01:00より大きい場合は0.6を返します
  • それ以外の場合は0.3を返します
  • 戻り値を他のすべてと合計します。

結果は次のようになります。

=IF(ISNUMBER(FIND("abc",INDIRECT(""&$A16&""&"!$D$2:$D"))),IF(INDIRECT(""&$A16&""&"!$D$2:$D")>"00:0300,???,???),?etc??)

??? 不足している部品です。また、INDIRECT()テストのために削除することもできますが、問題はそれです??? 部。IFステートメントの結果を取得する方法とそれを処理する方法がわかりません。列の操作方法がわからないと思います。

4

1 に答える 1

2

このようなLOOKUPでExcelで「配列数式」を使用できる可能性があります

=SUM(IF(ISNUMBER(FIND("abc",A2:A100)),LOOKUP(B2:B100,{0,1,3}/1440,{3,6,9}/10)))

Ctrl + Shift+Enterで確認

またはIF付きのこのバージョン[編集済み]

=SUM(IF(ISNUMBER(FIND("abc",A2:A100)),IF(B2:B100>="0:03"+0,0.9,IF(B2:B100>"0:01"+0,0.6,0.3))))

Googleスプレッドシートでは、このバージョンを使用します

=arrayformula(SUM(IF(ISNUMBER(FIND(ʺabcʺ,A2:A100)),IF(B2:B100>=ʺ0:03ʺ+0,0.9,IF(B2:B100>ʺ0:01ʺ+0,0.6,0.3)))))

これにより、列Aのテキストに「abc」があり、列Bが> = 0であるが<0:01、0.6であるすべての行の合計に0.3が追加されます。ここで、B> = 0:09および<0:03および0:09(B> = 0:09の場合)

LOOKUPを使用すると、複数のIFを回避するのが簡単になりますが、境界で正しい値が得られるかどうかはわかりません。これは、2番目のバージョンでより簡単に調整できます。範囲の長さを調整し、必要に応じてINDIRECTを追加できます。

注:最初の条件にFINDを使用すると、数式はテキスト内の任意の場所で「abc」(大文字と小文字を区別)を検索します。他のテキストなしで正確に「abc」をチェックする場合は、range="のみを使用できます。 abc " [大文字と小文字を区別しない]またはEXACT(範囲" abc ") [大文字と小文字を区別]

于 2012-07-04T18:20:38.860 に答える