これをテキストとして返す数式の結果があるとします+10+5+1+40
。それらの数値を合計して合計を算出したいとします。
結果は任意の数の値になる可能性があるので、 または のようになり+2+5
ます+10+5+7+1+8
。
参考までに、元のデータ セットはこれS10_S5_S1_S40
またはこれのようなものですE_E_S2_S5
。追加したいのは S の横の数字だけなので、それ以外のものはすべて削除しました。
最後に、できれば VBA を避けたいので、スーパーユーザーに投稿しています。
アップデート
この式により:
=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(D25,"E",""),"_",""),"S","=",1),"S","+")
=10+5+1+40
これをD25 = ...まで下げましたがS10_S5_S1_S40
、これは実際には前に があるのと同じだと+
思います。
答え1
例のように1桁または2桁の数字しかないと仮定すると、この「配列数式」はD25のすべての「S」の数字を合計します。
=SUM(IF(MID(D25,ROW(INDIRECT("1:"&LEN(D25))),1)="S",(0&SUBSTITUTE(MID(D25,ROW(INDIRECT("1:"&LEN(D25)))+1,2),"_",""))+0))
確認済みCTRL+SHIFT+ENTER
D25にS10_S5_S1_S40
それが含まれている場合、結果は56になります。
答え2
それを実行するワークシート数式はありません。古い Excel 4 マクロ関数 EVALUATE() を使用できますが、名前付き範囲でのみ使用できます。
たとえば、列Dにデータがあり、列Eに代替数式がある場合、F25を選択して名前マネージャーで新しい名前付き数式を作成します。「EvaluateMe」という名前を付けて、参照できるようにします。
=EVALUATE(Sheet1!E25)
次に、
=EvaluateMe
セル F25 に入力すると、結果が表示されます。この名前付き範囲は相対参照を使用しており、定義時にアクティブ セルが F25 にあった場合は、常に左隣のセルを評価しようとします。
答え3
これはバリーの「素晴らしい」答えから派生したものです。次の「配列数式」
=SUM(IF(MID(D25,ROW(INDIRECT("1:"&LEN(D25))),1)="S",MID(D25,ROW(INDIRECT("1:"&LEN(D25)))+1,IFERROR(FIND("_",D25,ROW(INDIRECT("1:"&LEN(D25)))+1),LEN(D25)+1)-(ROW(INDIRECT("1:"&LEN(D25)))+1))+0))
Ctrl( + Shift+で入力) は、長さに関係なく、Enterセル内のすべての「S」の数字を追加します。したがって、に「S10_S5_S1_S240」が含まれている場合、上記の数式では結果 256 が返されます。これは負の数も処理します。「S10_S5_S–1_S240」は 254 になります。D25
D25
まだ徹底的にテストしていません。おそらく月曜日の朝に私自身も何か問題を見つけるでしょう。:)