質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.48%

  • Excel

    1592questions

    Excelは、マイクロソフト社が開発しているデータ集計や分析を行う表計算ソフトの一つです。文書作成や表計算、資料作成などの多彩な機能を備えており、統合パッケージであるMicrosoft Officeに含まれています。

EXCEL 数式の簡素化について

解決済

回答 2

投稿

  • 評価
  • クリップ 0
  • VIEW 251

masayone

score 6

 前提・実現したいこと

EXCEL 数式を入力していますが、今回の問合せ以外にも多数の数式があり
非常にEXCELが重くなっています||||
数式を簡素化することで軽量化できないかを模索中です。

ここに質問の内容を詳しく書いてください。

イメージ説明

セル K2に入力されている数式
売買の合計を計算
=IF(F2="",0,INDEX($A$2:$D$6,MATCH(F2,$A$2:$A$6,0),2)+IF(G2="",0,INDEX($A$2:$D$6,MATCH(G2,$A$2:$A$6,0),2)+IF(H2="",0,INDEX($A$2:$E$6,MATCH(H2,A2:A6,0),2)+IF(I2="",0,INDEX($A$2:$D$6,MATCH(I2,A2:A6,0),2)+IF(J2="",0,INDEX($A$2:$D$6,MATCH(J2,$A$2:$A$6,0),2))))))

セル L2に入力させている数式

=IF(AND(COUNT(F2:J2)=4,ISODD(K2)),2,IF(COUNT(F2:J2)=5,IF(MOD(K2,3)=0,3,1),1))

セル M2に入力されている数式

=ABS(SUMIF(A2:A6,F2,D2:D6)+SUMIF(A2:A6,G2,D2:D6)+SUMIF(A2:A6,H2,D2:D6)+SUMIF(A2:A6,I2,D2:D6)+SUMIF(A2:A6,J2,D2:D6))/L2

上記画像の表に入力されている数式の簡素化方法があればご教示ください

宜しくお願い致します。

また、数式をワークシートに直接入力するのと、VBAで数式を挿入するのでは、処理速度、軽量化を図れるのでしょうか?
またVBAで数式を挿入するにはどのようにVBAに書き込むのかもお教えいただければ幸いです。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • CHERRY

    2018/06/16 08:12

    EXCELが、重いというのは、データの更新で、毎回再計算が入るからでしょうか?

    キャンセル

  • imihito

    2018/06/16 13:25

    「元表」の行数は実際も5行ですか?それとも多くの行がありますか?

    キャンセル

  • masayone

    2018/06/16 14:11

    最大7行までと考えています

    キャンセル

回答 2

+3

M2については、SUMPRODUCT()を使用すれば簡潔にできます。

=ABS(SUMPRODUCT((D2:D6)*(A2:A6=F2:J2)))/L2


K2も(F2~J2は前詰め前提ですけど、前詰め前提なしで)SUMPRODUCT()で表現できます。

=SUMPRODUCT((B2:B6)*(A2:A6=F2:J2))


※SUMPRODUCT()が配列式が使用できる事と、評価式の結果であるTrue=1、False=0を利用することで、条件付きの表計算に威力を発揮します。

データ

(確認用)配列定数によるA1:D6のデータ。
D列は本来数式ですが、直接関係ないので値を埋め込んでいます。
※A1:D6の範囲を選択し、下記内容を数式バーに張り付けて、ctrl+shift+enter

={"No","売買","購入金額","購入金額2";1,1,3500,3500;2,2,3200,-3200;3,2,3100,-3100;4,2,3000,-3000;5,2,2900,-2900}

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/06/16 23:34

    saziさん回答ありがとうございました。SUMPRODUCT()はすごく便利な関数なのですねたすかりました。
    今まで時間をかけて長い数式をたくさん書いているような気がします。
    他の数式でも質問させてください。  ベストアンサーでした。
    ※SQL Server総合一位:EXCELでできていることはSQLで構築できるのでしょうか?今度ご教授下さい。

    キャンセル

  • 2018/06/17 00:22 編集

    他の方法で高速化できたのかと思って興味がありました。
    SUMPRODUCT()だけでなく、配列式を活用すると表を扱う場面では簡潔になるケースは多いと思いますので、色々調べてみて下さい。

    データを扱う事に関しては、エクセル関数<SQLだと思います。
    称号は、質問と回答者が少ないのでたまたまそうなっているだけです。

    キャンセル

check解決した方法

0

計算に関しては自動計算に設定しています。
再計算設定するのでしょうか、その際何処かのタイミングで計算させるきっかけはどの様にすれば良いのでしょうか

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/06/16 16:20

    設定を変更することで、高速化が図れたという事でしょうか?
    後学の為に、解決方法を記載お願いします。

    キャンセル

  • 2018/06/16 23:28

    saziさんSUMPRODUCT()が配列式ありがとうございます。
    解決した方法のコメントは、補足質問を追加したつもりが、解決に記載してしまいました。

    キャンセル

関連した質問

同じタグがついた質問を見る

  • Excel

    1592questions

    Excelは、マイクロソフト社が開発しているデータ集計や分析を行う表計算ソフトの一つです。文書作成や表計算、資料作成などの多彩な機能を備えており、統合パッケージであるMicrosoft Officeに含まれています。