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

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

新規登録して質問してみよう
ただいま回答率
85.48%

Q&A

解決済

2回答

1429閲覧

EXCEL 数式の簡素化について

masayone

総合スコア13

0グッド

0クリップ

投稿2018/06/15 16:35

前提・実現したいこと

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に書き込むのかもお教えいただければ幸いです。

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

CHERRY

2018/06/15 23:12

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

2018/06/16 04:25

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

2018/06/16 05:11

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

回答2

0

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

EXCEL

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

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

EXCEL

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

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

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

EXCEL

1={"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 02:31

編集2018/06/16 04:46
sazi

総合スコア25173

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

masayone

2018/06/16 14:34

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

2018/06/17 02:20 編集

他の方法で高速化できたのかと思って興味がありました。 SUMPRODUCT()だけでなく、配列式を活用すると表を扱う場面では簡潔になるケースは多いと思いますので、色々調べてみて下さい。 データを扱う事に関しては、エクセル関数<SQLだと思います。 称号は、質問と回答者が少ないのでたまたまそうなっているだけです。
guest

0

自己解決

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

投稿2018/06/15 23:34

masayone

総合スコア13

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sazi

2018/06/16 07:20

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

2018/06/16 14:28

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問