• ベストアンサー

難易度の高いエクセル関数について

=SUMPRODUCT(VALUE(SUBSTITUTE(LEFT(E3:E13,LEN(E3:E13)-1),CHAR(160),""))) というエクセル関数の意味の解明に努めています。 SUMPRODUCT(VALUE(SUBSTITUTEまではわかるのですが、 LEFT(E3:E13,LEN(E3:E13)-1),CHAR(160),"")の部分がわかりません。 具体的には2つわかりません。 (1)googleで検索しても、LEFT関数の例を挙げますと、引数は2つまでですが、上記の例では4つ出ているところがわかりません。なぜ4つが可能なのでしょうか? (2)また、もう一つわからない点は同じくLEFT関数最後の引数の""です。何を意味しているのか、google検索では全くわかりませんでした。 どなたかお分かりの方、ご教授いただけますと幸いです。どうぞよろしくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
  • myRange
  • ベストアンサー率71% (339/472)
回答No.4

>SUMPRODUCT(VALUE(SUBSTITUTEまではわかるのですが、 ほんとに分かってますか? そこまで分かっていたらこういう質問はしないと思いますが。。(^^;;; ------------------------------------------------- 簡単のためセルE3の値で説明 セルE3の値を、@3,456円 とする 先頭の"@"は文字コード160の文字と仮定 ------------------------------------------------- (1)LEFT( E3:E13, LEN(E3:E13)-1)    E3:E13の値の右1文字(円)を除いて取得    結果: @3,456 -------------------------------------------------- (2)SUBSTITUTE( ■@3,456■, CHAR(160), "" )    取得した文字列の中の文字コード160で表される文字(@)を    長さ0の文字列に変換(消去したと考えてもいい)    結果: 3,456  (これは数値ではなく文字列) --------------------------------------------------- (3)VALUE( ●3,456● )    取得した文字列を計算できるように数値に変換 ---------------------------------------------------- (4)SUMPRODUCT( ▲3456▲ )    E3:E13の値を変換した結果を合計 ----------------------------------------------------------- ただ、これらはそれぞれの関数のヘルプに書いてあることです。 これを機会に理解できないことがあったら先ずヘルプをじっくり眺めることをお奨めします。    

keepuandu
質問者

お礼

丁寧にご回答、誠にありがとうございます。 >ただ、これらはそれぞれの関数のヘルプに書いてあることです。 >これを機会に理解できないことがあったら先ずヘルプをじっくり >眺めることをお奨めします。 アドバイスありがとうございます。今後はgoogleだけでなく、 ヘルプも頼りにしていきたいと思います。 myRange様のご回答なしではとうてい理解できませんでした。 本当にありがとうございました。

その他の回答 (3)

  • wisemac21
  • ベストアンサー率39% (171/429)
回答No.3

「この式は文字列の最後の1文字を削除した数値を合計する。」ということ CHAR(160)の文字を削除するするための式が SUBSTITUTE(LEFT(E3:E13,LEN(E3:E13)-1),CHAR(160),"")) です。 LEFT関数の引数が参照範囲になっているのは、配列関数SUMPRODUCTをつかっているので配列としているためです。 CHAR(160)については下記URLを参照 私なら、編集→置換で検索する文字列にCHAR(160)の文字をコピーして、置換する文字列には何も入力せず「すべて置換」をクリックして削除すると方法をとります。

参考URL:
http://oshiete1.goo.ne.jp/qa5016226.html
keepuandu
質問者

お礼

ご回答ありがとうございます。 わかりやすいご回答ありがとうございます。とくに >LEFT関数の引数が参照範囲になっているのは、配列関数 >SUMPRODUCTをつかっているので配列としているためです。 そこには全く気がつきませんでした。ありがとうございました。

回答No.2

(1) left関数の引数はE3:E13とleft(E3:E13)-1の2つですよ。 (2) それはsubstitute関数の第3引数ですね。 =substitute(   left(E3:E13,len(E3:E13)-1),   char(160),   "") と読んでください。neKo_deuxさんは最上位のsumproductに注意。

keepuandu
質問者

補足

ご回答くださりありがとうございます。 > (1) > left関数の引数はE3:E13とleft(E3:E13)-1の2つですよ。 タイプミスだと思いますが、後者はLEN(E3:E13)-1でしょうか? > (2) > それはsubstitute関数の第3引数ですね。 > =substitute( > left(E3:E13,len(E3:E13)-1), > char(160), > "") > と読んでください。neKo_deuxさんは最上位のsumproductに注意。 なるほど、ありがとうございます。どのような意味を持つのでしょうか? こちらもgoogle検索で分からなかったので、恐縮ですが、ご回答頂ければ 幸いです。 最後に、「neKo_deuxさんは最上位のsumproductに注意。」とはどのような 意味でしょうか?こちらも合わせてご回答いただければ幸いです。

  • neKo_deux
  • ベストアンサー率44% (5541/12319)
回答No.1

> LEFT(E3:E13,LEN(E3:E13)-1),CHAR(160),"")の部分がわかりません。 LEFT関数の部分を抜き出すと、 LEFT(E3:E13,LEN(E3:E13)-1) です。 カッコの対応をしっかり確認してください。 また、LEFT関数は引数に範囲を与えても、この場合だとE3セルの内容しか対象にならないです。 この場合なら、 LEFT(E3,LEN(E3)-1) と書き換えても同じなのでは。 引数4つなのは、SUBSTITUTE関数ですね。

keepuandu
質問者

補足

>> LEFT(E3:E13,LEN(E3:E13)-1),CHAR(160),"")の部分がわかりません。 > > LEFT関数の部分を抜き出すと、 > > LEFT(E3:E13,LEN(E3:E13)-1) > > です。 > カッコの対応をしっかり確認してください。 なるほど、見間違えていました。ありがとうございます。 > また、LEFT関数は引数に範囲を与えても、この場合だとE3セルの内容しか対象にならないです。 > この場合なら、 > > LEFT(E3,LEN(E3)-1) > > と書き換えても同じなのでは。 そうなのですか?それは初耳です。この関数は、この質問 (http://oshiete1.goo.ne.jp/qa5034431.html)で出てきた関数でして、自分でできる ところまでは自分で調べておくために質問を締め切って自分でこの関数を調べ、 わからなかった部分を今回の質問で質問させていただいているのですが、回答 番号:No.7では「下記の数式はE3:E13の範囲にある値を変換して合計を求めます。」 とご回答いただいております。(スクリーンショットもつけて頂きました)どちらが 正しいのでしょうか? > 引数4つなのは、SUBSTITUTE関数ですね。 いろいろ考えてみましたが、おっしゃっていることがわかりません。もう少し詳しくご説明頂けないでしょうか?恐れ入りますが、どうぞ宜しくお願い致します。

関連するQ&A

専門家に質問してみよう