9/29/2021

Excel。AVERAGE関数だけではもったいない。データの特徴を把握する2つの関数を追加してみよう。【Grasp】

Excel。AVERAGE関数だけではもったいない。データの特徴を把握する2つの関数を追加してみよう。

<AVERAGE・GEOMEAN・MEDIAN関数>

Excelをつかってデータから合計値や件数。

それに平均値を算出してみる。

なんてことをするわけが、それだけでは、そのデータ全体がみえてこないので、簡単な関数をつかって、把握するための数値を算出してみましょう。


次のデータを用意しました。


説明用なのでデータ数は少ないですが、算出したいものを確認していきます。


E1には、平均値が算出されています。

オートSUMボタン内にもある、お馴染みの、AVERAGE関数をつかっています。

E1の数式は、

=AVERAGE(B2:B11)

算出結果は、「18」

だけど、何かおかしいですよね。


「18」ってみた感じで大きいですよね。


原因は、B9の「72」という値。

とびぬけていますね。

いわゆる「外れ値」ですね。このようにとびぬけた値があると、AVERAGE関数は、そのデータに引っ張られる特徴があります。


つまり、AVERAGE関数は、算数の世界で使用する「算術平均」だからです。


とびぬけたデータがあることを考慮すると、「幾何平均」を算出するといいわけですね。


幾何平均は、かけ離れた値の影響を受けにくい特性があります。


幾何平均を算出する関数は、GEOMEAN関数です。

E2の数式は、

=GEOMEAN(B2:B11)

算出結果は、13.21…と、外れ値の影響を受けてない印象の結果が算出できました。


AVERAGE関数だけをつかった資料よりも、GEOMEAN関数の結果も併記してあげると、いいですね。


次に、データ全体がだいたい同じ数値の幅ならばいいのですが、複数の塊で集まっていることもあります。


分布の偏りがあるかもしれません。


偏りがある場合には、平均値だけでは実際のデータとの印象に誤差が生じる恐れがありますので、「中央値」も算出したいところですね。


E3の数式は、

=MEDIAN(B2:B11)

MEDIAN関数をつかうことで、中央値を算出することができます。

中央値は、すべての値を昇順に並べて、ちょうど、真ん中にある値です。


単純に平均値を算出するとデータの偏りがみえてきませんが、中央値や幾何平均をつかうことで、分布の偏りがみえてきます。


あと、最頻値とかを算出ということも考えますが、データが極端に偏っている場合だとつかうのもいいかと思いますが、一般のデータでは、あまりつかわないように思われます。


ということで、オートSUMボタンにあるAVERAGE関数の平均だけではなく、幾何平均のGEOMEAN関数や、中央値のMEDIAN関数も合わせてつかってみると、よりデータを把握できます。

9/28/2021

今週のFacebookページの投稿 2021/9/20-2021/9/26【one thing】

今週のFacebookページの投稿 2021/9/20-2021/9/26

<Facebookページ>

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

9月20日

Excel。スパークライン。

折れ線は、時間の経過によるデータの流れを表す場合に使えますね。



9月21日

Excel。スパークライン。

縦棒は、データの大小関係を比べるのにたけていますね。



9月22日

Excel。スパークライン。

勝敗は、正と負を基準としたデータの勝敗を表したものですね。



9月23日

Excel。シート名は、シート見出しをダブルクリックすると変更できますね。



9月24日

Excel。シート名は、シート見出しの上で右クリックして、ショートカットメニューから、名前の変更で変更できますね。



9月25日

Excel。シート見出しの色は、シート見出しの上で、右クリックして、ショートカットメニューから、シート見出しの色からも変更できますね。



9月26日

Excel。セルや範囲に名前を付けておくと、目的のセルや範囲を選択することが出来ますね。

9/26/2021

Excel。いつもの資料にデータの特徴を把握する2つの関数を追加してみよう。【Data features】

Excel。いつもの資料にデータの特徴を把握する2つの関数を追加してみよう。

<AVERAGE・GEOMEAN・MEDIAN関数>

Excelをつかってデータから合計値や件数。

それに平均値を算出してみる。

なんてことをするわけが、それだけでは、そのデータ全体がみえてこないので、簡単な関数をつかって、把握するための数値を算出してみましょう。


次のデータを用意しました。


説明用なのでデータ数は少ないですが、算出したいものを確認していきます。


E1には、平均値が算出されています。


オートSUMボタン内にもある、お馴染みの、AVERAGE関数をつかっています。


E1の数式は、

=AVERAGE(B2:B11)

算出結果は、「18」


だけど、何かおかしいですよね。

「18」ってみた感じで大きいですよね。


原因は、B9の「72」という値。

とびぬけていますね。

いわゆる「外れ値」ですね。


このようにとびぬけた値があると、AVERAGE関数は、そのデータに引っ張られる特徴があります。


つまり、AVERAGE関数は、算数の世界で使用する「算術平均」だからです。


とびぬけたデータがあることを考慮すると、「幾何平均」を算出するといいわけですね。


幾何平均は、かけ離れた値の影響を受けにくい特性があります。


幾何平均を算出する関数は、GEOMEAN関数です。


E2の数式は、

=GEOMEAN(B2:B11)

算出結果は、13.21…と、外れ値の影響を受けてない印象の結果が算出できました。


AVERAGE関数だけをつかった資料よりも、GEOMEAN関数の結果も併記してあげると、いいですね。


次に、データ全体がだいたい同じ数値の幅ならばいいのですが、複数の塊で集まっていることもあります。

分布の偏りがあるかもしれません。

偏りがある場合には、平均値だけでは実際のデータとの印象に誤差が生じる恐れがありますので、「中央値」も算出したいところですね。


E3の数式は、

=MEDIAN(B2:B11)

MEDIAN関数をつかうことで、中央値を算出することができます。

中央値は、すべての値を昇順に並べて、ちょうど、真ん中にある値です。


単純に平均値を算出するとデータの偏りがみえてきませんが、中央値や幾何平均をつかうことで、分布の偏りがみえてきます。


あと、最頻値とかを算出ということも考えますが、データが極端に偏っている場合だとつかうのもいいかと思いますが、一般のデータでは、あまりつかわないように思われます。


ということで、オートSUMボタンにあるAVERAGE関数の平均だけではなく、幾何平均のGEOMEAN関数や、中央値のMEDIAN関数も合わせてつかってみると、よりデータを把握できます。

9/25/2021

Excel。BITAND関数。ビット単位の論理積を算出する関数があります【function: BITAND】

Excel。BITAND関数。ビット単位の論理積を算出する関数があります

<BITAND関数>

Excelには様々用途にも対応できるように、見たこともないような関数が用意されています。例えば、BITAND関数。


10進数の数値を2進数のビットに変換して、その2進数の桁どうしの積を算出して、10進数の数値に戻すという、使わない人には、全くご縁がない関数だと思います。


図解で説明します。


A2には、10進数の「9」。

A3には10進数の「14」。それぞれ2進数に変換すると、9は「1001」。14は「1110」と表示されます。

その桁ごとをかけた結果が、4行目のE4:H4です。

2進数の結果が「1000」とわかったので、これを10進数に戻すと、A4の「8」と算出するというのが、「論理積」なのです。


ただ、非常に計算が面倒です。

そこで、Excel2013から、新しく「BITAND関数」が追加されました。


このBITAND関数をつかったのが、A7です。

A7の計算式は、

=BITAND(A2,A3)

です。


たったこれだけで、図解で説明した計算を一気に省いて算出してくれるわけです。


このように、Excelには、色々な関数が用意されていますので、現場でつかえるものがないのか確認してみるといいかもしれませんね。


また、BITAND関数の読み方は「ビットアンド」です。

所属は、「エンジニアリング」です。


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

BITAND (数値1,数値2)

となっています。

9/23/2021

Excel。VBA。表から特定の列(フィールド)だけを手早くコピーしたい【COPY】

Excel。VBA。表から特定の列(フィールド)だけを手早くコピーしたい

<Excel VBA>

データから必要な列(フィールド)だけを手早くコピーするとしたら、どうしたらいいのでしょうか?


例えば、次の表。


A列の「NO」とF列の「販売日」だけをコピーしたいとします。

自力でコピーしてもいいのですが、もっと多くの列だと、面倒です。


単純な作業ほど、繰り返し実行するとなると、効率的に作業できる方がいいですよね。


そこで、Excel VBAでマクロをつくると、とても簡単に、手早くコピーすることができます。


では、Excel VBAのプログラム文をつくってみました。

Sub 特定列コピー()

    Dim hani As Range

    Dim tokutei As Variant

    Dim i As Long

    

    Set hani = Range("a1").CurrentRegion

    

    tokutei = Array(1, 6)

    

    For i = 0 To UBound(tokutei)

        hani.Columns(tokutei(i)).Copy Range("i1").Offset(0, i)

    Next

    Range("i1").CurrentRegion.Columns.AutoFit

End Sub


まずは実行してみましょう。


ご覧のように、I列とJ列に該当するデータをコピーすることができました。


プログラム文を確認していきます。

最初は、お馴染みの「宣言文」

Dim hani As Range

Dim tokutei As Variant

Dim i As Long


haniには、表の範囲を代入します。

tokureiには、配列としてコピーしたい特定の列番号を代入します。


Set hani = Range("a1").CurrentRegion

haniに、A1から連続するデータ(表)の範囲を代入します。


tokutei = Array(1, 6)

範囲の中から、抽出したい列番号をしていします。

今回は、1列目と6列目をコピーしたいので、Array(1, 6)と設定します。


For i = 0 To UBound(tokutei)

    hani.Columns(tokutei(i)).Copy Range("i1").Offset(0, i)

Next


For To Next文でコピーを繰り返します。

iが0なのは、配列は「0」から始まるからです。


UBoundは、指定した配列で使用できる添え字の最大値を算出することができます。

つまり、UBoundをつかうことで、繰り返し回数を決めることができます。


hani.Columns(tokutei(i)).Copy Range("i1").Offset(0, i)

指定した列をコピーして貼り付けます。

Offsetをつかうことで、隣の列に貼り付けることができます。


最後の

Range("i1").CurrentRegion.Columns.AutoFit

この行は、貼り付けた列幅を自動調整させることで、「####」と表示されないようにしています。


少ないプログラム文ですが、簡単な作業でも、手早く処理することができますので、Excel VBAでプログラムをつくってみるのもいいかもしれませんね。

9/22/2021

Word。ガンマにラムダにミュー。ギリシャ語のアルファベット一覧を簡単につくれます【Quick table】

Word。ガンマにラムダにミュー。ギリシャ語のアルファベット一覧を簡単につくれます

<クイック表作成>

COVID-19こと。新型コロナウイルスの影響もあってか、最近よく耳にする、「ガンマ」とか「ラムダ」とかの「ギリシャ語のアルファベット」。


今後も色々出てきそうですが、この「ギリシャ語のアルファベット」の一覧表を作ろうとした場合、Excelで関数をつかってということはしなくても、実はWordがあれば、とても簡単に、ギリシャ語のアルファベット一覧をつくることができます。


というよりも、ギリシャ語のアルファベット一覧が用意されているのです。

 

それでは、上記の「ギリシャ語のアルファベット」を作っていきます。


挿入タブの表にある「クイック表作成」にマウスカーソルを合わせます。


組み込みに「2段の表」というのがありまして、それが、「ギリシャ語のアルファベット一覧」になっています。


あとは、クリックするだけで、「ギリシャ語のアルファベット一覧」を挿入することができますので、今後、ギリシャ語のアルファベットを知る必要が出た場合には、ちょっと覚えておくと、意外と使えるかもしれませんね。

9/20/2021

Excel。VLOOKUP関数をつかって、行方向のデータを列方向に手早く抽出したい【ROW】

Excel。VLOOKUP関数をつかって、行方向のデータを列方向に手早く抽出したい

<VLOOKUP+ROW関数>

通常データベースの表は、行方向のテーブルで管理されています。

その中から、該当するデータを抽出したいのですが、抽出したデータは行方向ではなくて、列方向に表示したい場合は、どのようにしたら、手早く抽出することができるのでしょうか?


やりたいのは、次のようなデータ。


A6:D11のデータから、該当する番号のデータをB1:B4の列方向に表示させています。

データが少ない場合は、力技という方法もあるかもしれませんが、大変です。


今回のケースでは、「VLOOKUP関数」をつかうことで、抽出することができますが、問題となるのは、VLOOKUP関数の数式です。


B2にVLOOKUP関数の数式を作ってみると、

=VLOOKUP($B$1,$A$7:$D$11,2,FALSE)

という数式になるわけですが、オートフィル機能で数式をコピーすると、きちんと抽出してくれません。


列方向に数式をコピーできれば、手早く結果を抽出することができるので、オートフィルを使うことを考えた場合、このVLOOKUP関数の数式をどのようにしたら、いいのでしょうか。

改めて、数式を見てみましょう。

=VLOOKUP($B$1,$A$7:$D$11,2,FALSE)


引数の最初は、検索値ですが、検索値は、オートフィルで数式をコピーしても、参照できるように、絶対参照を設定しておきます。


次の引数の、範囲は、データベースなので、これも、オートフィルで数式をコピーしても、参照できるように、絶対参照を設定しておきます。


先に4番目の引数を確認します。

4番目の引数は、完全一致なので、FALSE を設定します。


3番目の引数の列番号。氏名なので、左から2番目のデータなので、「2」と設定します。


この列番号が問題になるところです。


オートフィルで数式をコピーしたら、この数値がズレてほしいわけですね。

ところが、「2」という数値を入力しているため、全部「2」になってしまうわけです。


これをどうにかして、オートフィルで数式をコピーしたとき、「3」「4」と連動して変化してほしいわけです。


そこで、ROW関数をつかいます。ROW関数は、行番号を算出してくれる関数です。


下方向。つまり、行方向にオートフィルで数式をコピーした時に、行番号も変化(増加)してくれます。


では、次のように列番号のところに、ROW関数をつかった数式に修正してみます。


=VLOOKUP($B$1,$A$7:$D$11,ROW(),FALSE)


オートフィルで数式をコピーしてみましょう。


このように、オートフィルで数式をコピーすることで、行方向のデータを列方向に抽出することができました。

列番号が、飛び飛びになっている場合でも、ROW関数をうまくつかうことで、手早く抽出することができます。

9/19/2021

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

今週のFacebookページの投稿 2021/9/13-2021/9/19

<Facebookページ>

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

9月13日

Excel。シート名には、[ ](大カッコ)は使えませんね。



9月14日

Excel。ショートカット。

Ctrlキー+F6キーで、ウインドウの切り替えをすることが出来ますね。



9月15日

Excel。ショートカット。

Ctrlキー+Kキーで、パイパーリンクの編集ダイアログボックスを表示することが出来ますね。



9月16日

Excel。ショートカット。

Ctrlキー+F3キーで、名前の管理ダイアログボックスを表示することができますね。



9月17日

Excel。ショートカット。

F5キーで、ジャンプ ダイアログボックスを表示することが出来ますね。



9月18日

Excel。グラフ。

Altキーを押しながら、大きさを変えると、セルの枠線に合わせてサイズを変更することが出来ますね。



9月19日

Excel。スパークライン。

スパークラインはExcel2010で登場した新機能ですね。

9/17/2021

Excel。空白は除いて0(ゼロ)と入力されたセルだけを塗りつぶししたい。【Conditional formatting】

Excel。空白は除いて0(ゼロ)と入力されたセルだけを塗りつぶししたい。

<条件付き書式+AND関数>

条件付き書式は、とても便利な機能なのですが、ちょっとしたことで悩むことがあります。


たとえば、次のような、0(ゼロ)と入力されたセルを塗りつぶしたい場合です。


簡単に処理できるでしょうと思ったら大間違いです。

確認してみるとわかります。

ホームタブの条件付き書式にある「セルの強調表示ルール」から「指定の値に等しい」をクリックします。

指定の値に等しいダイアログボックスが表示されますので、「0(ゼロ)」と設定します。


すると、「0(ゼロ)」だけではなくて、「空白」のセルも塗りつぶしされていることがわかります。


これは、空白セルを「0(ゼロ)」としているために、このような結果になってしまうわけです。


なので、「0(ゼロ)」のみを塗りつぶすことは、簡単ではないわけです。

 

数式をつかったとしても、結果は同じになります。

ホームタブの条件付き書式にある「新しいルール」をクリックして、新しいルールダイアログボックスを表示します。

 

「数式を使用して、書式設定するセルを決定」から、次の数式を満たす場合に値を書式設定に、=B2=0 と設定しても、先程と同じように、空白セルも塗りつぶしされてしまいます。


アイディアとして、数式を使うのはいいのですが、

=B2=0

という、条件では不十分というわけです。


空白は対象外にするという条件を追加しないといけないわけです。


数式の条件を次のように設定します。

=AND(B2=0,B2<>"")


AND関数をつかって、「0(ゼロ)でかつ「空白」ではない」という条件にしてみました。


書式を設定してOKボタンをクリックします。


これで、「0(ゼロ)」だけのセルのみを塗りつぶしすることができました。


条件付き書式はアイディアで、色々使うことが出来ますが、簡単に設定することが出来ないものもありますので、注意が必要ですね。

9/16/2021

Excel。不良品の許容範囲を算出するBINOM.INV関数【function: BINOM.INV】

Excel。不良品の許容範囲を算出するBINOM.INV関数

<BINOM.INV関数>

製造工程でどうしても、不良品は一定の割合で発生してしまいます。

BINOM.INV関数をつかうと、許容される不良品数を算出することが、簡単にできます。

ここで算出された不良予測数よりも、実際には多くの不良品が発生した場合は、その製造工程のどこかに、問題が潜んでいる恐れがあると考えられます。


BINOM.INV関数の読み方は「バイノム・インバース」です。

バイノミアル・インバースの略ですね。

所属は、「統計」です。

BINOM.INV関数の引数も確認しておきましょう。


BINOM.INV (試行回数,成功率,α)

αは、「基準値」です。


今回は、サンプル数を1000・不良率を5%・累積確率を95%とした場合の、不良予測数を算出していきます。


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

=BINOM.INV(B1,B2,B3)


これで、不良予測数が15と算出されました。

この製造ラインで、1000個製造したうち、15個以下の不良数ならば、その製造ライン許容範囲ということが算出できました。

担当者としては、1個たりとも不良は出したくないというのが本心なんですけどね。


Excelには、BINOM.INV関数に限らず、ちょっと知っていると、うちの現場でも使えるという関数が、結構あるように思いますので、確認してみるといいかもしれませんね。

9/14/2021

Excel。ABCとabc。大文字小文字の違いはIF関数では対応できません。【Uppercase and lowercase】

Excel。ABCとabc。大文字小文字の違いはIF関数では対応できません。

<EXACT関数>

セル内の文字が合致しているかなどでも、IF関数を使えば、簡単に比較して合致しているかどうかを判断することは容易にできるのですが、意外なケースだとIF関数で対応することができません。


例えば、大文字と小文字

大文字で入力されているかどうかを確認したい場合、小文字で入力されていたら、合致していないと判定してほしいわけですが、IF関数だと判定することができません。


確認してみましょう。


A列の文字とB列の文字が合致していたら、C列に「○」を表示するというIF関数を設定しています。


C2の数式は、

=IF(A2=B2,"○","×")


A2とB2は、ともに大文字の「ABC」なので、当然合致していますので、「○」が表示されるわけです。


ところが、

A3は、大文字の「ABC」でB3は小文字の「abc」ですから、合致していません。


文字コードから考えても、合致はしていないのですが、結果は「○」。

つまり合致しているとIF関数を使用すると判断されてしまうわけです。


大文字で入力しているかどうかを判定する場合は、IF関数が使えないわけです。


セル内に入力されている一文字ごとに、大文字か小文字か判断させるのも大変です。


実は、今回のような場合、IF関数ではなくて、別の関数を使えば、あっさり解決することができます。


その関数が、『EXACT関数』です。


EXACT関数は、文字列を比較するだけではなく、大文字と小文字の区別もしてくれる関数なのです。


EXACT関数をつかって算出してみます。


D2の数式は、

=EXACT(A2,B2)

と設定しています。


算出結果は、「TRUE」「FALSE」と表示されます。大文字・小文字の区別もしてくれていることが確認できます。


ただ、TRUEとFALSEでは、実務的な表としては、わかりにくいので、数式を修正します。


D2の数式を、

=IF(EXACT(A2,B2),"○","×")

とIF+EXACT関数のネストにすることで、「○」「×」で判定することができます。


Excelでは、大文字と小文字の区別が、結構曖昧なことが多く見受けられますので、大文字と小文字の違いを確認したい時には、それに対応できる方法を確認しておく必要があります。


比較するのに、よくつかう、「条件付き書式」も大文字と小文字の区別がありません。

 

ホームタブの条件付き書式にある「セルの強調表示ルール」の「指定の値に等しい」をつかって、確認すると、大文字と小文字の違いを判定していないことがわかります。


今回のケースのように、思ったように処理されないこともありますので、実務では、少しずつ対応方法を増やしていくといいのかもしれませんね。

9/13/2021

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

今週のFacebookページの投稿 2021/9/7-2021/9/12

<Facebookページ>

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

9月6日

Excel。名前ボックスにセル番地を入力して、Enterキーを押すと、そのセル番地にジャンプできますね。


9月7日

Excel。シート名は31文字までOKです。全角半角は関係ありませんね。


9月8日

Excel。シート名には、:(コロン)は使えませんね。


9月9日

Excel。シート名には、¥(円マーク)は使えませんね。


9月10日

Excel。シート名には、/(スラッシュ)は使えませんね。

ということは、日付。2021/1/1はNGなんですね。



9月11日

Excel。シート名には、?(クエスション)は使えませんね。


9月12日

Excel。シート名には、*(アスタリスク)は使えませんね。

9/11/2021

Excel。折れ線グラフ。簡単に交点ゼロから描くにはどうしたらいい。Microsoft365編【Zero intersection】

Excel。折れ線グラフ。簡単に交点ゼロから描くにはどうしたらいい。Microsoft365編

<折れ線グラフ:X軸0Y軸0(交点0)>

折れ線グラフを交点ゼロから描きたい場合、ちょっと修正しないと描くことができません。

X軸0Y軸0(交点0)折れ線グラフ

今回は、Microsfot365(旧称Office365)で、簡単に、交点ゼロから折れ線グラフ(マーカー付き折れ線グラフ)を作っていきます。

グラフを作るためのデータを用意します。


ポイントは、C2:C8にA2:A8のデータをセル参照で設定することです。


C2には、=A2というセル参照を設定したら、オートフィルターで数式をコピーします。


では、マーカー付き折れ線グラフを挿入していきますので、A2:B8を範囲選択します。


交点ゼロから始める折れ線グラフを描くためには、A1:B1の見出し行は含めないのがポイントです。


ホームタブの「折れ線/面グラフの挿入」にある「マーカー付き折れ線グラフ」をクリックします。


マーカー付き折れ線グラフが挿入されました。

グラフを大きく表示したいので、グラフタイトルは削除しています。


マーカー付き折れ線グラフの書きはじめの位置が、X軸・Y軸のゼロ。

すなわち交点から書きはじめたいわけです。


Y軸を起点として書くことは、設定を変更すれば簡単にできるのですが、X軸を起点とするには、「0(ゼロ)」か「空白」のデータを用意する必要があります。


そこで、横(項目)軸のためにつくった、C列が役に立つわけです。


グラフのデザインタブの「データの選択」をクリックします。


データソースの選択ダイアログボックスが表示されます。


データから修正しますので、凡例項目の編集ボタンをクリックします。


系列の編集ダイアログボックスが表示されます。


系列値が、「=交点ゼロ!$B$2:$B$8」と入力されていますが、ゼロのデータを追加する必要がありますので、「=交点ゼロ!$B$1:$B$8」と拡張した範囲選択をします。


見出しの「販売数」という文字が入力されていますが、文字であって、数値ではないので、値としては「ゼロ」とExcelが判断してくれます。


OKボタンをクリックします。


データソースの選択ダイアログボックスに戻ってきます。


グラフは、横軸から書き始めていますが、データと横軸がずれていますので、それを修正していきます。


データソースの選択ダイアログボックスを引き続き修正していきます。


横(項目)軸ラベルの編集ボタンをクリックします。


軸ラベルダイアログボックスが表示されます。


軸ラベルの範囲には「=交点ゼロ!$A$2:$A$8」とA列のデータが設定されています。


単純にA1:A8をしたいところなのですが、A1には、「営業月」という文字が入力されているため、グラフの横軸に「営業月」と表示されてしまいます。


そこで、ダミーのC列を使うわけです。


よって、軸ラベルの範囲には、「=交点ゼロ!$C$1:$C$8」と設定します。


設定後OKボタンをクリックします。


データソースの選択ダイアログボックスに戻りますので、OKボタンをクリックします。


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


まだ完成ではありません。

あとは、横軸の設定を変更しますので、横軸をクリックして、書式タブのグラフの要素が「横(項目)軸」になっていることを確認したら、選択対象の書式設定をクリックします。


軸の書式設定作業ウィンドウが表示されます。


軸のオプションの「軸位置」を「目盛」に変更します。


これで、交点ゼロから描いたマーカー付き折れ線グラフをつくることができました。


あとは、見栄えを調整して完成です。


このように、X軸・Y軸の交点を起点とした交点ゼロから描くには、ちょっとしたアイディアが必要です。

9/10/2021

Excel関数辞典 VOL.52。N関数~NETWORKDAYS.INTL関数【dictionary】

Excel関数辞典 VOL.52。N関数~NETWORKDAYS.INTL関数

<Excel関数>

今回は、N関数~NETWORKDAYS.INTL関数までをご紹介しております。

N関数

エヌ

数値または型に対応する数値を算出します

N(値)



NA関数

エヌエー

つねにエラー値#N/Aを返す

NA()



NEGBINOMDIST関数

ネガバイノムディスト

負の二項分布の確率を算出します

NEGBINOMDIST(失敗数,成功数)



NEGBINOM.DIST関数

ネガバイノム・ディスト

負の二項分布の累積確率か確率密度を算出します

NEGBINOM.DIST(失敗数,成功数,成功率,関数形式)



NETWORKDAYS関数

ネットワークデイズ

日付の間の稼働日数を算出します

NETWORKDAYS(開始日,終了日,[祭日])



NETWORKDAYS.INTL関数

ネットワークデイズ・インターナショナル

週末(曜日指定OK)と祝日を除いた日付間の日数を算出します

NETWORKDAYS.INTL(開始日,終了日,[週末],[祭日])

9/08/2021

Excel。2列1組でセルを塗りつぶししたいけど、効率よく設定するにはどうしたらいい。【Conditional formatting】

Excel。2列1組でセルを塗りつぶししたいけど、効率よく設定するにはどうしたらいい。

<条件付き書式:MOD+COLUMN関数>

データベースのルールに則ったExcelの表をテーブルにして、テーブルスタイルを、一行おきに塗りつぶしされているスタイルを反映させれば、一行おきにセルを塗りつぶししたデザインの表を作ることはできますが、列の場合はどうしたらいいのか?


さらに、次の表のように、2列1組をセットとして、セルを塗りつぶしたい場合、効率的に処理するには、どのようにしたらいいのでしょうか?

 

残念ながら、2列1組のスタイル(デザイン)は、Excelには用意されていませんので、自分で設定しなければいけません。

当然のことながら、大きな表だったら、範囲選択して塗りつぶしの設定をするだけでも、面倒ですし、大変です。


このようなケースでは、「条件付き書式」をつかえないかということを考えてあげるといいですね。


条件付き書式をつかうとしたら、どのような条件。

要するに、数式を作ることができるのかを考えてあげれば、対応方法が見つかるかもしれません。


あと使えそうなものは、列番号。

2組が同じだと判別できるようにするために、列番号は使えないかと考えます。


そこで、次のような数式を、今回はB12に作ってみました。

=MOD(COLUMN(B1),4)


2組1列と判断するためのルールを見つけるために、列番号を4で除算して、その余りを算出した値です。


塗りつぶしした列としていない列は、4列で構成されていますので、4で除算した余りを使えば、グループ分けすることができます。


あとは、この数式をアイデアとして使い、余りが「0」と「1」だったら、塗りつぶしを行う条件付き書式を設定してあげればいいわけですね。


条件付き書式を設定していきます。

B1:I10を範囲選択し、ホームタブの条件付き書式にある「新しいルール」をクリックします。


新しい書式ルールダイアログボックスが表示されます。

 

「数式を使用して、書式設定するセルを決定」を選択したら、次の数式を満たす場合に値を書式設定ボックスに、

=mod(column(),4)<2

という数式を設定して、書式を設定したら、OKボタンをクリックします。


余りが「0」と「1」のセルを塗りつぶしするというルールを設定します。


こうすることで、2列1組で、セルを塗りつぶしすることができました。


どのようなルールがあるのかを見つけることができれば、条件付き書式を設定することができますので、ルールやパターンを見つけるようにするといいかもしれませんね。

9/07/2021

今週のFacebookページの投稿 2021/8/30-2021/9/5【one thing】

今週のFacebookページの投稿 2021/8/30-2021/9/5

<Facebookページ>

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

8月30日

Excel。ショートカット。

PageDownキーを押すと、1画面単位で下に移動できますね。



8月31日

Excel。ショートカット。

Altキー+PageUpキーを押すと、1画面単位で左に移動できますね。



9月1日

Excel。ショートカット。

Altキー+PageDownキーを押すと、1画面単位で右に移動できますね。



9月2日

Excel。アクティブセルの太枠の上部線上で、ダブルクリックをするとデータ範囲の先頭行に移動できますね。



9月3日

Excel。アクティブセルの太枠の下部線上で、ダブルクリックをするとデータ範囲の最終行に移動できますね。



9月4日

Excel。アクティブセルの太枠の左部線上で、ダブルクリックをするとデータ範囲の左端列に移動できますね。



9月5日

Excel。アクティブセルの太枠の右部線上で、ダブルクリックをするとデータ範囲の右端列に移動できますね。

9/05/2021

Excel。VBA。ROUND関数をExcel VBAでつかうと四捨五入の結果が変なんです。【Rounding】

Excel。VBA。ROUND関数をExcel VBAでつかうと四捨五入の結果が変なんです。

<Excel VBA:ROUND>

四捨五入でお馴染みの、「ROUND関数」。

データをインポートした後に、ROUND関数をつかった計算式をつくるのもいいのですが、まとめて処理をしたほうが、楽だろうということで、Excel VBAでROUND関数をつかってプログラム文をつくると、普通のROUND関数と算出結果が異なるわけです。


次の表をつかって説明します。


C列は、A列÷B列で算出した結果です。


C2の数式は、

=A2/B2

としています。算出結果を四捨五入したのが、D列です。


D2の数式は、

=ROUND(C2,0)

第2引数を「0(ゼロ)」で設定したことにより、小数点第一位を四捨五入しています。


D列の算出結果は、なんら問題はないことがわかります。


E~G列は、Excel VBAでプログラム文を作ったものを実行していますが、E列のデータの一部に算出結果におかしな結果があります。

それでは、Excel VBAのプログラム文を見てみましょう。

Sub round関数()

    Dim i As Long

    Dim lastrow As Long

    

    lastrow = Cells(Rows.Count, "a").End(xlUp).Row

    

    For i = 2 To lastrow

        Cells(i, "e").Value = Round(Cells(i, "c"), 0)

        Cells(i, "f").Value = WorksheetFunction.Round(Cells(i, "c"), 0)

        Cells(i, "g").Value = Int(Cells(i, "c") + 0.5)

    Next

End Sub


簡単な説明ではありますが、変数宣言をしています。

Dim i As Long

Dim lastrow As Long

    

lastrow = Cells(Rows.Count, "a").End(xlUp).Row

「i」はこのあとのFor To Next文で使用します。

lastrowは、データの最終行の行番号を算出しています。

For To Next文でlastrowまで繰り返し実行するわけです。


For To Next文の中身を確認します。

Cells(i, "e").Value = Round(Cells(i, "c"), 0)

E列に算出しているのが、このプログラム文です。


Round(Cells(i, "c"), 0) と、Round関数を使用しています。

プログラム文自体おかしなところはありませんが、算出結果に、おかしな結果が出ているわけです。


実は、VBAのRound関数は、「四捨五入」するものではなくて、「数値を丸める」処理をする関数なのです。

4以下の場合は切り捨て、5以上の場合は切り上げという処理はしてくれないわけです。


偶数の場合、丸める値が、5だと、切り捨てをする「銀行での丸め処理」と同じで、AccessのRound関数と同じ動きをしています。


だから、通常のExcelと同じようにプログラム文をつくってしまうと、算出結果が、変わってしまうというわけです。


なので、Excel VBAで通常のExcelと同じ算出結果にしたい。

つまり通常のROUND関数と同じ算出結果にするには、次の2つの対応方法があります。


1つ目が、F列のWorksheetFunctionのROUND関数をつかいます。


WorksheetFunctionは、通常のExcel関数を用意しています。

今回のROUNDはWorksheetFunctionに用意されているので使用することができます。


WorksheetFunctionをつかったプログラム文が、

Cells(i, "f").Value = WorksheetFunction.Round(Cells(i, "c"), 0)


基本的に、WorksheetFunctionをつかうことで、問題は解決しますが、次のような方法もあります。


それが、2つ目の、

Cells(i, "g").Value = Int(Cells(i, "c") + 0.5)

これは、元の値に丸める「0.5」を加算した値を、整数化することで、ROUND関数を同じように算出することができます。


ただし、今回は、整数化した、四捨五入だったので、この数式で対応できますが、小数点第二位とか、色々かわると、加算値を考えないといけないので、WorksheetFunctionをつかうのがいいのかなと思います。


ということで、Excel VBAでROUND関数をつかうと、通常のROUND関数と算出結果が異なるので注意が必要です。