web-dev-qa-db-ja.com

Excelで別の列に特定の部分文字列テキストが含まれている場合の平均数

A列の文字列に特定のテキストが含まれている場合にのみ、B列などの1列の数値を平均化する方法を探しています。

例えば:

(In column A) (In column B)
Hello table . . . 1
Hello desk  . . . 2 
Bye table   . . . 3
Bye desk  . . . . 4

したがって、数値を平均化する基準が「デスク」である場合、答えは(2 + 4)/ 2 = 3になります。

これまでに思いついたのは:

=AVERAGEIF(A1:A5, SEARCH("desk",B1:B5),B1:B5) 

ただし、SEARCHは1つの入力しか受け取らないため、エラーが返されます。

助言がありますか?

7
Rem

次のように、単語「desk」の前後にアスタリスク*ワイルドカード文字を追加します。

=AVERAGEIF(A1:A5,"*desk",B1:B5)

または

=AVERAGEIF(A1:A5,"*desk*",B1:B5)

これは、Wordの「デスク」の前後の文字を無視するようにExcelに指示します。

10
BillDOe

うまくいくいくらか一般的な答えとして、関数内の条件を実行する別の方法(あなたの場合はAVERAGE内のIF)なら、いつでも分解できます。 IFステートメントは配列を返すこともでき、単一の値である必要はありません。

入力した場合

=AVERAGE(IF(ISERROR(SEARCH("desk",A1:A5))=FALSE,A1:A5))

そして押す CtrlShiftEnter 入力すると、入力では値ではなく配列として扱われ、結果が得られます。

お役に立てれば!

3
Eric F

[〜#〜] averageif [〜#〜] は、Excel 2013+の最良の答えです。古いバージョンでは、3番目の列Cを使用する必要があります。

列Cのすべてのセル(左側に値があります)には、次の数式があります:=IF(ISNUMBER(SEARCH(C$7,A1)), B1, "")

セル、C7は単語deskを入力するだけなので、検索を変更するたびにこれらの数式を修正する必要はありません。

この後、C5でその平均=AVERAGE(C1:C4)を実行するだけです。それで十分です。無駄なスペースはそれほど多くありません。必要に応じて関数を調整するだけで、検索ボックスを取り除くこともできます。

1
krowe2

列Cを使用する可能性があるかどうかはわかりませんが、テストしたオプションの1つを次に示します。

セルC1に次の数式を入力します。= IF(ISNUMBER(SEARCH( "desk"、A1))、B1、 "")

列Cの各行にこの数式をコピーして貼り付けます

列Cに表示される金額を平均します。

列Cが既に使用されている場合は、その場所に別の列を挿入するだけです

0
Jamiho