4/29/2021

Excel。条件付き順位は発想を変えると簡単に算出することができます。【Conditional ranking】

Excel。条件付き順位は発想を変えると簡単に算出することができます。

<COUNTIFS関数>

店舗番号順の売上表があります。


算出したいのは、E列の「地区別順位」です。


順位ということで、使う関数は、「RANK.EQ関数かな?」と思い浮かぶかもしれませんが、残念ながら、RANK.EQ関数は、全体の中で何番目というように、「全体の中」なので、今回のように、地区別順位。

つまり、条件付き順位は、算出することができません。


RANK.EQ関数をつかうとしたら、範囲選択を地区ごとに分けて行って、その範囲内で順位を算出するようになります。


地区ごとにまとまっていれば、まだ範囲選択はしやすいのですが、出店した順に店番が振られている場合などだと、範囲選択は非常に面倒になります。


面倒ということで、わざわざ、Excel VBAでマクロをつくるというのも、なんか割に合いません。


そこで、発想の転換。

そもそも順位というは、自分の数値より大きい数値の件数が何件あるのかがわかれば、算出することができます。


何件あるのか?ということなので、COUNTIFS関数をつかうことで、条件付き順位を算出することができるのです。


では、E2をクリックして、COUNTIFS関数をつかった数式をつくっていきましょう。


E2の数式は、

=COUNTIFS($C$2:$C$10,C2,$D$2:$D$10,">"&D2)+1


数式の説明はあとでするとして、まずは数式を確定して、結果を確認してみましょう。


このように、地区ごとに順位を算出することができました。


それでは、数式の引数を確認していきましょう。

=COUNTIFS($C$2:$C$10,C2,$D$2:$D$10,">"&D2)+1


検索条件範囲1は、地区の$C$2:$C$10。オートフィル機能で数式をコピーしますので、絶対参照で設定する必要があります。


検索条件1には、B2。


検索条件範囲2は、売上高の$D$2:$D$10。

こちらも絶対参照の設定を忘れずに行っていきましょう。


最後の、検索条件2ですが、「">"&D2」と設定します。

これは、D2:D10の範囲で、D2より大きい値がいくつあるのか確認しています。


さて、数式の最後尾に「+1」がされています。

これはなんなのかというと、「D2より大きい」という条件になっていますので、1番大きい値の場合、自分自身の値よりも大きい値はないわけですから、「0」と算出されてしまいます。


そのために「+1」することで、条件付き順位を算出できるというわけです。


順位をCOUNTIFS関数で算出できることを知っていれば、複数条件での順位を算出するなど、色々な角度から順位を算出することができるようになります。


例えば、全体では、順位が高い方だけど、地区内の順位だと、下の方ということも簡単に算出することができます。


日頃使っている資料などに、プラスしたりするといいかもしれませんね。 

4/28/2021

Excel。ローマ数字をアラビア数字に変換するARABIC関数。環境依存文字は非対応です【function:ARABIC】

Excel。ローマ数字をアラビア数字に変換するARABIC関数。環境依存文字は非対応です

<ARABIC関数>

ローマ数字をアラビア数字に変換することができるARABIC関数。

数式の設定自体は、簡単なのですが、変換したいローマ数字に気を付けないと、エラーが表示されてしまいます。


ARABIC関数の読み方は「アラビック」です。

カテゴリーとしては、「数学/三角」に所属しています。文字列操作のように思えますが、数字なので、「数学/三角」に所属しているようですね。


ARABIC関数の引数も確認しておきましょう。

ARABIC(文字列)


この引数の文字列というのが曲者。


B2には、

=ARABIC(A2)

という、ARABIC関数をつかった数式を設定しているのですが、「#VALUE!」というエラーが表示されてしまっています。

A2には、「Ⅴ」。

ところが、この「Ⅴ」が原因なのです。この「Ⅴ」は、環境依存文字なわけですが、普通ローマ数字を使うときには、環境依存文字を何気なく使っているハズですし、Wordなどの文書アプリでは環境依存文字で入力していることが多いです。 


よく考えてみると、欧米には、全角の「Ⅴ」は存在していません。

そう、つまり「v」(普通の”v”)で入力する必要がありますし、「Ⅲ」も「iii」と「i」を3個入力する必要があるというわけです。


けど、Wordでは、Ⅲを「III」とか「iii」とか「i」を繰り返して入力することはありません。

だから、トラブルというかエラーになってしまうことが多いのです。


このように、使い方が簡単そうにみえる関数でも、ちょっとクセがある関数が結構ありますので、注意が必要そうですね。


なお、アラビア数字からローマ数字に変換する時に使う関数は、「ROMAN関数」を使います。

4/26/2021

Accessのクエリ。パレート図でお馴染みのABC判定を算出するにはどうしたらいいの?【Pareto chart】

Accessのクエリ。パレート図でお馴染みのABC判定を算出するにはどうしたらいいの?

<ABC分析>

パレート図でお馴染みのABC分析を、Accessにデータがあるならば、わざわざ、Excelにエクスポートして算出よりも、Access上でつくってしまったほうがいいのではと、考えます。

ただ、ちょっと演算フィールドを追加しないといけないので、大変というか面倒ではあります。


作りたいのは、次のクエリ。


今回は、構成比の累計が80%未満なら、「A」80%~90%未満なら「B」。

それ以外は「C」とします。


元になるテーブルが次のテーブルです。


クエリを作っていきます。作成タブのクエリデザインをクリックします。



【構成比を算出】

構成比の算出からABC分析は始まります。

あと、売上高を降順にしておきます。


構成比を算出するための、演算フィールドを確認してみましょう。

構成比: [売上高]/DSum("売上高","T商品A売上")


構成比を算出するには、売上高を売上高の総合計で除算しますので、DSum関数をつかって、売上高の総合計を算出します。


DSum関数の引数は、

DSum(フィールド名,テーブル&クエリ名)

です。


それと、小数点以下の桁数が除算しきれないために、多くの桁数が表示されてしまうので、パーセント表示に変更します。


「構成比」の演算フィールドをクリックしておいて、クエリツールのデザインタブにある「プロパティシート」をクリックします。

 

プロパティシート作業ウィンドウが表示されるので、標準の書式を「パーセント」にして小数点以下表示桁数を「1」にします。



【構成比の累計を算出する準備で「順位」を算出】

構成比を算出できたので、構成比の降順とした累計値を算出したいのですが、Excelのように、行という感覚ではなく、レコードで管理しているため、降順で表示されているまま累計値を算出することができません。


そのため、順位を算出して、その順位を使って、累計値を算出していきます。


演算フィールドは、

順位: DCount("構成比","Q商品A構成比","構成比>" & [構成比])+1


ExcelのようにRANK.EQ関数のような順位を算出する関数が、Accessにはないので、Dcount関数を使います。


Dcount関数の引数は、

Dcount(フィールド名,テーブル&クエリ名,条件)


自分自身を越える値があれば、数えるという計算式ですから、値を越えない、つまり「1位」のときは、「0件」ということで「0」を算出してきますが、「0」では困るので、「+1」することで順位を算出できます。


【累計構成比を算出】

算出した順位をつかって、累計構成比を算出します。


累計値は合算ということですから、使う関数は、Dsum関数です。


演算フィールドは、

累計構成比: DSum("構成比","Q商品A構成比","順位<=" & [順位])


ここで、ちょっと注意というかポイントがあって、算出された値は、『文字数値型』ということで、「テキスト型」になっています。

そこで、プロパティシートをつかって、標準の「書式」に「#」を入力して、数値扱いにします。


算出できた累計構成比をつかって、ABC判定をつくっていきます。


【IIf関数をつかって、ABC判定を算出】

改めてですが、今回の判定は、構成比の累計が80%未満なら、「A」80%~90%未満なら「B」。それ以外は「C」とします。


判断分岐をするには、IIf関数をつかいます。

さらに、三分岐ですからIIf+IIf関数というネストで算出していきます。


ABC判定の演算フィールドは、

ABC判定: IIf([累計構成比]<0.8,"A",IIf([累計構成比]<0.9,"B","C"))


これで、完成しましたので、実行ボタンをクリックします。


ご覧のように、様々な関数を駆使して、ABC判定を算出することができました。

やっていること自体は、Excelとあまり差はありませんが、Accessの演算フィールドで関数をつかって算出するのが、わかりにくい場合には、ExcelにエクスポートしてExcel上で算出するという方法でいいと思います。

4/25/2021

今週のFacebookページの投稿 2021/4/19-2021/4/25【one thing】

今週のFacebookページの投稿 2021/4/19-2021/4/25

<Facebookページ>

Facebookページで【書いてみた】ワンポイントです。

4月19日

Excel。エラー。

#N/A エヌエー 正式は、No Assign (ノー・アサイン)です。

値がない時に登場します。Vlookup関数の時によく見かけますね。



4月20日

Excel。エラーじゃないのですが、表示が#######となると、ビックリしますが、桁あふれしているだけなので、列幅を広げれば大丈夫ですね。



4月21日

Excel。オートSUMボタンの▼で、平均を選べば簡単に平均が算出できますね。



4月22日

Excel。オートSUMボタンの▼で、最大値を選べば簡単にその範囲の中での最大値が算出できますね。



4月23日

Excel。オートSUMボタンの▼で、最小値を選べば簡単にその範囲の中での最小値が算出できますね。



4月24日

Excel。オートSUMボタンの▼で、数値の個数は文字を数えてくれないので、氏名や商品名では使えないので、気を付けないといけませんね。



4月25日

Excel。行の高さをマウスで変更したい時は、行番号の間の境界線上でマウスカーソルを上下の形に変わったら、ドラッグすると変更できますね。

4/23/2021

Excel。インパクトのある「ヒストグラムと集合縦棒の合体グラフ」の作り方。【histogram】

Excel。インパクトのある「ヒストグラムと集合縦棒の合体グラフ」の作り方。

<集合縦棒グラフ>

次のような普通の集合縦棒グラフでもいいのですが、当たり前すぎてインパクトがありません。


そこで、棒グラフ同士を重ねた、前後に並べた集合縦棒グラフにするだけで、印象を変えることができます。

次のグラフが、前後に並べた集合縦棒グラフです。


単純に前後に並べた集合縦棒グラフではなくて、後ろ側の前年のグラフは太さをかえることで、ヒストグラムとすることができます。


今回は、前後に並べた集合縦棒グラフというかヒストグラムと集合縦棒グラフの合体グラフの作り方を紹介していきます。


グラフ用のデータを用意しましょう。


A1:C4を範囲選択して、挿入タブのグラフブロックにある、「すべてのグラフを表示」をクリックします。


グラフの挿入ダイアログボックスが表示されます。


すべてのグラフの組み合わせを選択します。


グラフの種類を、前年・今年ともに、「集合縦棒」に設定します。


そして、第2軸をつかうのですが、「前」に表示したいデータを第2軸としますので、第2軸は、「今年」のデータということになります。


設定したら、OKボタンをクリックします。

グラフが挿入されました。なお、グラフタイトルは今回グラフを大きくみせたいので、削除しております。


グラフは、確かに前後になったことはなったのですが、これでは、「前年」のデータを見ることができません。


続いて、後ろ側にまわった、「前年」のグラフの幅を広げていきます。


グラフの要素を「系列”前年”」にして、選択対象の書式設定をクリックします。


画面の右側に、「データ系列の書式設定」作業ウィンドウが表示されます。


系列のオプションにある「要素の間隔」の数値を小さくしていきます。今回は10%としてみました。


グラフはこのようになりました。


凡例を右上に移動させて、フォントサイズを大きくして見栄えをUPします。


凡例を右上に移動したことにより、横軸の下側に空きスペースができたいので、プロットエリアを下方向に拡張しましょう。


第2縦軸は、不要となりますので、クリックして選択したら、DELキーを押して、削除しましょう。


最後に、後ろ側の「前年」の色が濃いので、薄くして完成です。


今回のように、作るのが簡単そうに見えるグラフですが、第2軸をつかわないと、重ねることができないなどExcelのグラフには、ちょっとしたクセがありますので、色々な方法を駆使ながら、資料で使えるグラフを見つけられる・作れるようになるといいですね。

4/22/2021

Excel。AND関数はピンよりも組み合わせることで威力を発揮する関数です。【function:AND】

Excel。AND関数はピンよりも組み合わせることで威力を発揮する関数です。

<AND関数>

AND条件とかOR条件でもおなじみのAND関数。

AND関数単体では、なかなか使用することはないかもしれませんね。


Excelで使うとしたら、やっぱり、IF関数とのネストというのが多いですね。

IF関数との組み合わせもバッチリですが、特徴を知っておくことは悪くないので、ちょっと確認しておきましょう。


AND関数の読み方は「アンド」です。

カテゴリーとしては、「論理」に属しています。

AND関数の引数も確認しておきましょう。

AND(論理式1,[論理式2],…)

使うことはないかもしれませんが、論理式は255個設定することができます。


設定した引数のすべてが成立(TRUE)したら、「1」を返します。

逆に、設定した引数のうち、一つでも成立していなければ(FALSE)、「0」を返します。


このAND関数。知らなくても算出することはできるものも多いのですが知っていると便利でわかりやすくなる数式は多々あります。

次の場合の数式を確認してみると、一目瞭然です。

E列の判定は、英語・国語・数学のすべてが80以上なら○。そうでなければ、×とします。


E2の数式は、IF関数のみで構成した場合です。


E2の数式は、

=IF(B2>=80,IF(C2>=80,IF(D2>=80,"〇","×"),"×"),"×")

一つずつ、IF関数で質問していくことになりますから、数式は煩雑にあります。

「×」は質問数分必要になってしまいます。


E3の数式は、IF+AND関数のネストで作った場合です。


E3の数式は、

=IF(AND(B3>=80,C3>=80,D3>=80),"○","×")


質問を1回だけで済むことができるので、シンプルな数式となり、わかりやすくなりました。


AND関数は単独では、なかなか使わないかもしれませんが、パートナーとしてはとても重宝する関数なので、知っているといいかもしれませんね。

4/20/2021

Excel。VBA。オートフィルターでセルの一部が合致するデータを抽出して別シートにコピーしたい。【Copy to sheet】

Excel。VBA。オートフィルターでセルの一部が合致するデータを抽出して別シートにコピーしたい。

<Excel VBA>

大量のデータを読み込んだりした後に、該当するデータを抽出して処理をするということは、よくあります。


作業自体の流れとしては、オートフィルターなどをつかって、データを抽出するわけですね。

ただ、いつも同じ条件で抽出して決まったシートにコピーするという作業は、単純作業になってしまうので、面倒くさい作業になってしまいます。


さらに、抽出条件が、「セルの一部が合致する」ものを抽出したいということで、オートフィルターの抽出設定も面倒となるわけです。


それがこのデータ。


やりたいことは、C列の住所にある「横浜市」のデータを抽出して別のシートにコピーしたいわけです。


オートフィルター機能を使った場合には、「テキストフィルター」にある「指定の値を含む」から、「横浜市」と設定することで抽出してくれます。


「テキストフィルター」の中にはいっての設定ですから、やっぱり面倒ですね。

ところで、「指定の値で始まる」というのは、どのように表現したらいいのでしょうか?


「テキストフィルター」にある、「指定の値で始まる」「指定の値で終わる」「指定の値を含む」は、ワイルドカードを使用することで表現することが出来ます。


横浜市から始まるデータを抽出したいので、ワイルドカードをつかった条件は「横浜市*」とすることで抽出できます。

横浜市以降の複数の文字が含まれていますので「*(アスタリスク)」を使います。


都道府県まで含まれていた場合は、「*横浜市*」とします。

ただ注意しないといけないのは、「中央区」とか「緑区」など、他の地域でも使われていることが想定される場合には、「東京都中央区」とか「横浜市緑区」など範囲を広げて、ワイルドカードを使ってあげる必要があります。


それでは、プログラム文を確認しておきましょう。


Sub ワイルドカードで抽出()

    Range("a1").AutoFilter field:=3, Criteria1:="横浜市*"

    Range("a1").CurrentRegion.Copy Destination:=Worksheets("COPY").Range("a1")

    Range("a1").AutoFilter

End Sub


それでは、実行してみましょう。


このように、「横浜市」から始まるデータを抽出することができました。

それでは、プログラム文を確認しておきましょう。


Range("a1").AutoFilter field:=3, Criteria1:="横浜市*"

AutoFilterでオートフィルターを設定します。

field:=3は、左から3列目ということで、住所の列が対象です。


Criteria1:="横浜市*" で、横浜市という文字で始まるデータが抽出条件です。

ここで、「*(ワイルドカード)」を使います。


Range("a1").CurrentRegion.Copy Destination:=Worksheets("COPY").Range("a1")

Range("a1").CurrentRegion.Copyで、A1から連なっている範囲(CurrentRegion)をコピーします。


Destination:=Worksheets("COPY").Range("a1")は、COPYシートのA1をコピー先とする意味ですね。


Range("a1").AutoFilter

コピーが終了したので、オートフィルターを残しておいてもしょうがないので、オートフィルターを解除するのがこの行です。


たった3行のプログラム文ですが、作業効率を改善できるかもしれませんので、通常作業も、Excel VBAをつかって、マクロを作ってみるといいかもしれませんね。

4/19/2021

今週のFacebookページの投稿 2021/4/12-2021/4/18【one thing】

今週のFacebookページの投稿 2021/4/12-2021/4/18

<Facebookページ>

Facebookページで【書いてみた】ワンポイントです。

4月12日

Excel。エラーが表示されるとビックリしますよね。

けど、ちょっと知っていると、ビックリしなくなります。


4月13日

Excel。エラー。

#NULL! ヌル 正式は、Null Intersection (ナル・インターセクション)です。

セル指定の「:(コロン)」や「,(カンマ)」がない時や、セル範囲に共通部分がないと登場します。


4月14日

Excel。エラー。

#DIV/0! ディブゼロ 正式は、DIVided by 0(ディヴァイディッド・バイ・ゼロ)です。

0で割り算をしちゃうと、登場しますね。


4月15日

Excel。エラー。

#VALUE! バリュー 正式は、Wrong Type Value (ローング・タイプ・バリュー)です。

不適切なデータが入っている時に登場しますね。


4月16日

Excel。エラー。

#REF! レフ 正式は。A REFerence to a cell that does not exit (ア・リファレンス・トゥ・ア・コール・ザット・ダズ・ノット・イグジット)です。

セルが参照できない時に登場します。


4月17日

Excel。エラー。

#NAME? ネーム 正式は、Unrecognized Name (アンリコグナイズド・ネイム)です。

関数名やセル範囲名などの名前が正しくない時に登場します。


4月18日

Excel。エラー。

#NUM! ナム 正式は、An Invalid Number (アン・インヴァリッド・ナンバー)です。

数値が大きすぎる。または、小さすぎると登場します。

4/17/2021

Excel。1回目と2回目のデータに差はあるのかないのか?そこでt検定のT.TEST関数の出番です。【t-test】

Excel。1回目と2回目のデータに差はあるのかないのか?そこでt検定のT.TEST関数の出番です。

<T.TEST関数>

期間をあけて、同じ試験を2回受けてみた結果の表があります。

1回目と2回目の数値ですが、見た感じでは、あまり差を感じません。


データ同士に差があるのかないのか?直感で判断するわけにはいきません。

それぞれの平均値を算出したとしても、数値としての差はありますが、なかなか判断できません。


1件ごとに、1回目よりも2回目の数値がいいというIF関数をつかってみて、2回目の成績がいい件数を数えたところで、2回目の数値が1でも大きければ、計上されてしまいます。


差があるのか、ないのかを調べたい時に登場するのが『t検定』です。


そして、使う関数は、T.TEST関数。


T.TEST関数を使えば、数値として、差があるのか、無いのかを算出することができます。


T.TEST関数は、「t検定」の時に使う関数で、2つの母集団の平均値に差があるかどうかを調べることできる関数です。


1回目と2回目は同じ内容の試験でしたが、2回目は1回目を経験しているので、2回目の方がたぶん、数値はいいのではないかなと、予想を立ててT.TEST関数で算出していきます。


それでは、F1にT.TEST関数の数式を作ってみましょう。


=T.TEST(B2:B11,C2:C11,1,1)

T.TEST関数の引数を確認していきましょう。

配列1は、1回目側なので、B2:B11 と範囲選択します。

配列2は、2回目側なので、C2:C11 と範囲選択します。


検定の指定(尾部)ですが、1の「片側分布」を選択します。

「片側分布」は、いずれかが大きいかどうかを調べる時に使います。

「両側分布」は、差があるかどうかを調べる時に使います。


1回目の経験があっての2回目なので、たぶん、2回目の方が点数は高くなっているのではという想定を立てましたので、1の「片側分布」をつかって算出しようと思います。


検定の種類を1の「対」とします。

1の「対」をつかうのは、同じ人が、1回目と2回目を経験していますので、このような同じ人の評価の場合は、「対」を使います。


なお、2の「等分散の2標本」は、母集団の分散が等しいと仮定される場合で使用します。

3の「非等分散の2標本」は、母集団の分散が等しいと仮定されない場合で使用します。


F1の値は、0.0487。パーセント表示に変更すると、4.88%と算出できました。


「0.05以下ならば、平均値に差があるといえる。」といわれています。

今回は0.05以下なので、見た目似た感じのデータ同士の比較でしたが、差があることが数値的に算出することができました。


Excelには、様々な関数が用意されていますので、実務で使えそうなものを増やしていくといいかもしれませんね。

4/16/2021

Excel。19種類の集計ができる。AGGREGATE関数をもっと使ってみよう!【function:AGGREGATE】

Excel。19種類の集計ができる。AGGREGATE関数をもっと使ってみよう!

<AGGREGATE関数>

SUBTOTAL関数をグレードアップというか、機能拡張した関数があります。

それが、AGGREGATE関数

SUBTOTALは「小計」という意味ですね。

それに対して、AGGREGATEは「集計」という意味ですね。


なんで、SUBTOTAL関数があるのに、AGGREGATE関数を使うのと思うかもしれませんが、「小計」と「集計」ということで、似て非なる関数なわけです。


結果的に、19種類の集計を行うことができるというのが、AGGREGATE関数の強みとなったわけです。


AGGREGATE関数の読み方は「アグリゲイト」です。


AGGREGATE関数の引数も確認しておきましょう。

AGGREGATE(集計方法,オプション,参照1,…)

AGGREGATE(集計方法,オプション,配列,[順位])

19種類の集計を行えるということで、2種類の引数を持っているのが特徴です。

集計の種類で使い分けます。


そして、このAGGREGATE関数は、『手入力』で数式を作ることをおススメします。

その理由は、集計方法やオプションに集計の種類ごとなどに番号が割り振られています。


関数挿入ダイアログボックスだと、その番号がわかりません。


また、関数の分類は、「数学・三角」に所属しています。


次の表を使って確認してみましょう。


今回は、H1に、データが非表示になっても連動して、売上高の第3位を算出してみます。


関数を作る前に、G1の「3位」は、ユーザー定義をつかって、表示形式で「位」を表示させています。G1の内容は、3です。


ポイントなのは、上位何番目のデータを算出できる。

LARGE関数は行の非表示には対応していませんし、SUBTOTAL関数では、LARGE関数のような「上位何番目」を算出する方法はもっていません。

なぜならば、SUBTOTAL関数は「小計」を算出する関数ですから。


それでは、H1に入力していきましょう。


最初に設定する引数が、「集計方法」。今回は、LARGEの「14」をつかいます。


次が、「オプション」。


「非表示の行を無視します」をクリックすることで、行が非表示になった時でもリアクションしてくれるようになります。


配列には、売上高のD2:D11を設定し、順位はG1を設定します。

完成した数式は、

=AGGREGATE(14,5,D2:D11,G1)

結果を確認してみましょう。


上位3番目の数値が算出することができました。


では、データを非表示にしてみましょう。


このように、数値が連動して変わったことが確認できました。


用途によって、SUBTOTAL関数とAGGREGATE関数が使い分けられるようになるといいのかもしれませんが、算出結果があっていれば、どっちでもいいというのが、現場レベルというところなんでしょうね。


最後に、集計方法とオプションを紹介しておきます。

『集計方法』

1 AVERAGE 平均

2 COUNT 数値の件数

3 COUNTA データ件数

4 MAX 最大値

5 MIN 最小値

6 PRODUCT 積

7 STDEV.S 標本標準偏差

8 STDEV.P 母集団標準偏差

9 SUM 合計

10 VAR.S 不偏分散

11 VAR.P 母集団の分散

12 MEDIAN 中央値

13 MODE.SNGL 最頻値

14 LARGE 何番目に大きな値

15 SMALL 何番目の小さな値

16 PERCENTILE.INC 百分位数 0%以上~100%以下

17 QUARTILE.INC 四分位数 0%以上~100%以下

18 PERCENTILE.EXC 百分位数 0%超~100%未満

19 QUARTILE.EXC 四分位数 0%超~100%未満


こんな番号。覚えられないよね。


『オプション』

0 集計値の無視

1 集計値の無視と非表示行の無視

2 集計値の無視とエラーの無視

3 集計値の無視と非表示の無視とエラーの無視

4 何も対象外にしない

5 非表示行の無視

6 エラーの無視

7 非表示行の無視とエラーの無視

4/14/2021

Excel。複数列に個別の条件で合致するデータを抽出するにはどうしたらいいの?【Matching data】

Excel。複数列に個別の条件で合致するデータを抽出するにはどうしたらいいの?

<オートフィルター:AND関数>

オートフィルター機能をつかうことで、条件に合致したデータを抽出することができますが、ちょっと条件が複雑になると、オートフィルター機能単独だと、太刀打ちできないことがあります。


例えば、次のような表で見てみましょう。


B1:D1の数値は、各月の平均値です。

B1の数式は、

=AVERAGE(B4:B10)


今回やりたいことは、4月~6月までの各月の平均以上のもの、すなわち、全部の月で兵員以上だった店舗はどこの店舗なのか、わかるように抽出したいわけです。


抽出とすれば、オートフィルター機能をつかうわけですが、今回のような複数列を対象にした抽出方法はありません。


また、一つだけのフィールドだけであったとしても、平均以上を抽出することは容易ではありません。

オートフィルター機能の数値フィルターで項目にある「指定の値以上」をつかってみても、オートフィルターオプションダイアログボックスが表示されるので、平均値が算出されているセルをクリックすることはできませんし、B1と入力しても、対応してくれません。


つまり、オートフィルターオプションをつかってみても、抽出することができないわけです。


それが、今回は、複数の列が対象となっているわけですね。

では、このようなことは出来ないのでしょうか?


このような場合には、判定用の列をつくってあげる方法が一番わかりやすいと思います。


E4に次の数式を設定します。

=AND(B4>=$B$1,C4>=$C$1,D4>=$D$1)


AND関数をつかうことで、引数内の条件が合致していればTRUEを算出することができます。

IF+AND関数という方法でもいいのですが、条件に合致するかどうかだけわかればいいわけなので、わざわざ、IF+AND関数というネストにしなくてもいいと思いますが、わかりにくい場合には、合致する場合には、「○」とかしておくといいかもしれませんね。


算出できたらば、オートフィル機能をつかって、数式をコピーします。

結果をみてみましょう。


条件が成立していると、「TRUE」を算出して、成立していない場合には「FALSE」を算出しています。


算出することさえできれば、あとは、オートフィルター機能をつかって、「TRUE」のみを抽出してあげれば、いいわけですね。


このように、オートフィルター機能のメニューにない場合は、アイディアによって抽出することができるようになりますので、色々考えてみると、今まで以上に作業効率が改善できるかもしれませんね。

4/13/2021

今週のFacebookページの投稿 2021/4/5-2021/4/11【one thing】

今週のFacebookページの投稿 2021/4/5-2021/4/11

<Facebookページ>

Facebookページで【書いてみた】ワンポイントです。

4月5日

Excel。シートの全部のセルを選択するのは、全選択ボタンをクリックします。

A列の左側と1行目の上の四角のボタンです。



4月6日

Excel。足し算を使う記号は+。

引き算は-。掛け算は×でなく*。割り算は÷でなく/ですね。



4月7日

Excel。2乗3乗のべき乗の記号は^(キャレット)ですね。



4月8日

Excel。数学・算数のルールと同じで、()カッコの中が先に計算されます。

{ }とか[ ]は使いません。



4月9日

Excel。文字と文字も足す(合体)することもできます。

&を使うと、簡単にできますね。



4月10日

Excel。Σ。オートSUMボタンをクリックして、範囲を決定するだけで合計を求めることができます。



4月11日

Excel。オートSUMボタンで、合計するときに離れている所を計算したい時は、Ctrlキーでクリックすれば、算出できますね。

4/11/2021

Excel。空白セルを数えるのはCOUNTBLANK関数。では、空白でないセルを数えるには?【COUNTBLANK】

Excel。空白セルを数えるのはCOUNTBLANK関数。では、空白でないセルを数えるには?

<COUNTIF関数 COUNTBLANK関数>

範囲内の空白セルを数えるには、「COUNTBLANK関数」を使うことで、簡単に算出することができますが、逆に、空白でないセルはどのようにして数えたらいいのでしょうか?


今回のケース。

シンプルに考えれば、難しいこともないのですが、ドツボにはまってしまうと、抜け出せなくなるというケースの一つといえます。


次の表を用意しました。


最初は、E2に、COUNTBLANK関数をつかって、B2:B10の範囲で、空白セルがいくつあるのかを算出してみます。


E2に次の数式を作ります。

=COUNTBLANK(B2:B10)


では、算出結果を確認しておきましょう。


「3」と算出されました。

COUNTBLANK関数を使うことで、簡単に空白セルの数を算出することができました。


それでは、この逆。空白セルでないセルはいくつあるのでしょうか?


空白以外のセルのデータが、「済」という文字だけだとしたら、「済」という文字がいつくあるのかを算出させるようにしてもいいのですが、今回は、色々な文字が含まれているデータです。


『空白ではない』というのは、どのように表現したらいいのかを考えてみましょう。


仮に、『空白である』という条件ならば、「=””」としてあげればいいわけですよね。


「=」(イコール)でない、比較演算子をつかえばいいわけです。その比較演算子は「<>」。


それでは、比較演算子の「<>」をつかって、E3にCOUNTIF関数で空白でないセルを算出していきましょう。


E3の数式です。

=COUNTIF(B2:B10,"<>")


ポイントは、比較演算子「<>」には、前後に「”(ダブルコーテーション)」で囲ってあげる必要があります。


結果を確認しておきましょう。


「6」と算出することができました。


ところが、問題が潜んでいます。

B4は空白ですが、次のような数式をB4に設定したらどうなるのでしょうか?

=IF(C4="","",1)


すると、空白以外の数が「7」になってしまいました。


 

E3の数式は、

=COUNTIF(B2:B10,"<>")

でしたが、この数式の欠点は、完全な空白でないと駄目ということです。


つまり、B4は、数式の算出結果が「空白」になっている。


この場合は、完全な空白ではないので、文字が入力されているのと同じ扱いになりますから、空白以外の数が増えてしまったわけです。


この現象は、COUNTA関数でも発生します。

COUNTBLANK関数の逆バージョンはありませんので、このようなデータの場合は、単純に、全体の件数から空白のセルを減算する方法が、わかりやすい気がします。


E3の数式を次のように修正してみます。

=COUNTA(A2:A10)-COUNTBLANK(B2:B10)


COUNTBLANK関数は、算出結果が空白でも、完全な空白でも、見た目「空白」ならば、空白として数えてくれます。


これで、算出することができました。

数える関数は色々Excelには用意されていますが、ケースバイケースで、使い分けたりする必要があるようですね。