SUMIF関数のsum_rangeパラメーターでLEFTを使用(Excel)


0

私は、次のように多くの列を重ねています。

互いの上にあるセル

この範囲内で、で始まるすべてのセルを見つけて1a、次に続くものを合計したいと思います。したがって、この例では、我々は見つける1a101a20、そう私たちの結果は10 + 20になり、または30

難しいのは、の後aに1 桁または 2桁ある可能性があることaです。また、前に2桁の数字を使用できるように拡張したいと思います。したがって、次のことができます。

1a10 1a1 11a1 11a10

私は私が学んだことを試してみましたSUMIFSUMIFSそしてSEARCH、私は(ある程度)することができた一方で、それの開始、終了と開始の、特に長さを切断、選択した細胞を検出しますさまざまな可能性があり、積み重ねられたIFステートメントの寄せ集めと機能しない式が残っています。

残念ながら、マクロを使用することはできず、私の学校はExcel 2013までしかありませんが、これがまだ可能であることを願っています。

ありがとう。


1
あなたの質問は本当に明確です。「また、aの前の2桁の数字で動作するように拡張したいので、1aで始まるか1aを含むかを探す必要がありますか?
マテジュハス

回答:


3

あなたは配列式でこれを行うことができます

=SUM((LEFT($A$2:$A$8,2)="1a")*(IF(ISNUMBER(--RIGHT($A$2:$A$8,LEN($A$2:$A$8)-2)),RIGHT($A$2:$A$8,LEN($A$2:$A$8)-2),0)))

これは配列式であるため、単にの代わりにControl+ Shift+ を使用する必要があります。 EnterEnter

さらに、配列式なので、次のような完全な列参照を避けたい A:A

数式の周りに{}が表示されると、正しく入力したことがわかります。{}は手動で追加できない場合があります。

POC

更新

22aなどのより長い検索文字列を処理するために数式をもう少し堅牢にし、合計するID文字列にセルを使用できるようにする場合は、次の数式を使用できます。

=SUM((LEFT($A$1:$A$8,LEN(TRIM(C2)))=C2)*(IF(ISNUMBER(--RIGHT($A$1:$A$8,LEN($A$1:$A$8)-LEN(C2))),RIGHT($A$1:$A$8,LEN($A$1:$A$8)-LEN(C2)),0)))

これはまだ配列数式です。また、検索対象のキーの後の1桁のデータ値を含むように範囲が拡大されました。

POC2

マイナーアップデート、... に変更されまし-RIGHT--RIGHTが、どうやら-は必要ないかもしれません。


完全に機能します。まさに私が必要としていたもので、どんな長さのIDや番号でも問題なく動作します!特に非常に複雑なものを扱う場合、式を非常にコンパクトにすることができたことに驚いています。
ゲザケレクセニ

0

私はあなたのためにあなたの仕事をしたくありませんが、私はあなたにいくつかの提案をすることができます...

1つまたは2つの大きな長い数式を使用してこれを実行する方法はありますが、別の列で複数の数式に分割して理解しやすくすることができます。たとえば、B1では次を使用できます。

=IF(LEFT(A2,2)="1a",1,0)) これは、「1a」で始まるセルには1を返し、そうでないセルには0を返します。

C1では、使用できます

=LEN(A2) これにより、A2の文字数が返されます。

そこから、式(実際の式ではなく、以下の擬似コード)を使用してIFステートメントの作成を開始します。

"If A2=1 AND C1=4, return RIGHT(A2,2)"

"If A2=1 AND C1=3, return RIGHT(A2,1)"

私がしているのは、1a10から "10"を独自の列に入れるようにシートを設定することです。その後、結果の数値に対して任意の代数を実行できます。


そして、それらをどのように要約しますか?私が前に行くために20種類の数字持っているように私は、3次元構造を必要とするa非常に複雑なヘルパーカラム構造...されるであろう、
下座Kerecsenyi

「あなたのためにあなたの仕事をしたくありませんが、私はあなたにいくつかの提案をすることができます」このタイプのヒントはこのサイトにうまく適合しません。本当に解決策を提供したくない場合は、コメントのみを書いてください。答えを書いてからそれをうまく書くと、解決策を書くよりもヒントに多くの時間を費やしたことになります。いくつかの式を書くことは「他人の仕事をする」ことではありません
マテユハス

@MátéJuhász-ヒントをありがとう、私はまだこのサイトに慣れていない。元の投稿を投稿したときにコメントを投稿するほどの評判がありませんでした。OPへの私のアプローチは、本質的に、必要な計算/式のそれぞれを個別の列として実行し、上記の単一行の配列式よりもロジックを追跡しやすくすることでした。
user2800

@Geza Kerecsenyi上記のコメントを考えると、はい、他の答えは私のものよりもはるかにうまく機能します。
user2800

0

以下は別のアプローチSUBSTITUTEです:

=SUM(IFERROR(SUBSTITUTE(A1:A7,C1,"")*1,0))

使い方:

  • =SUM(IFERROR(SUBSTITUTE(A1:A7,C1,"")*1,0))
  • SUBSTITUTE(A1:A7,C1,"")- 1aすべての行から削除します
  • SUBSTITUTE(...)*1-可能な場合はエントリを番号に変換します(1a以前に削除された行のみ)。その他の場合はエラーになります
  • IFERROR(...,0) -エラーを 0

また、これは配列式なので、入力後にCtrl + Shift + Enterキーを押す必要があります。

ここに画像の説明を入力してください

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.