6/30/2022

Excel。単一条件で件数を算出したい時は、COUNTIF関数がおススメです。【COUNTIF】

Excel。単一条件で件数を算出したい時は、COUNTIF関数がおススメです。

<COUNTIF関数>

単純に件数を算出するのではなくて、条件を付けて件数を算出したい場合には、COUNTIF関数やCOUNTIFS関数があります。


今回は、条件が一つだけ、つまり「単一条件」のCOUNTIF関数を確認していきます。


用意した表の、C列の成績が80点以上の件数を算出する場合で確認をします。


C8には、次の数式を設定しています。

=COUNTIF(C2:C6,">=80")


引数の最初は、「範囲」なので、「C2:C6」と設定します。


次の引数は、検索条件なので、「">=80"」

80以上なので、比較演算子をつかって、以上である「>=」を数値の前につけます。


ただ、ポイントになるのは、比較演算子を含めて「”(ダブルコーテーション)」で数値まで含めて囲う必要があります。


算出結果は、「2」となっていますね。

問題なく算出できています。


ところが、C9ですが、算出結果は「2」とC8と同じ結果です。


しかし、数式は、次のように設定してあります。

=COUNTIF(C2:C6,">="&B9)


C8の場合と何が違っているのかというと、B9に条件である「80」をつかった数式にしてあります。


この場合、比較演算子のみを「”(ダブルコーテーション)」で囲い、「&(アンパサンド)」でセル番地を連結する必要があります。


COUNTIF関数に限らず、条件を設定するときに、ちょっとしたポイントがあるものがありますので、注意して数式をつくっていくといいですね。

6/29/2022

Excel。同じ列内での複数条件をつかって手早く件数を算出したい【Multiple conditions】

Excel。同じ列内での複数条件をつかって手早く件数を算出したい

<DCOUNT関数>

複数条件での件数を算出するには、COUNTIFS関数をつかうことで、算出することができますが、複数条件にもルールがあります。


E7には、次の数式を設定しています。

=COUNTIFS(A2:A9,"新宿",A2:A9,"渋谷")


何をやりたいのかというと、A列の店舗名に、新宿と渋谷が何件あるのかを算出したいわけです。


そこで、複数条件で件数を算出したいので、COUNTIFS関数をつかってみたところ、算出結果は「0」。


COUNTIFS関数は、複数条件で検索することはできるのですが、複数列での対応で、一つの列内で複数条件には、対応していないわけです。


要するに、店舗名が「新宿」でかつ、来店客数が「300以上」のような、AND条件には対応していますが、店舗名が「新宿」または「渋谷」といったOR条件には対応していません。


そこで、COUNTIF関数を複数つかい、それぞれの算出結果を加算させる

=COUNTIF(A2:A9,"新宿")+COUNTIF(A2:A9,"渋谷")


という方法で対応することもあります。


ただ、この方法だと、OR条件が多くなった場合は、数式自体の可読性も悪化し、数式のミスを誘発する可能性が高くなります。


何よりも、手早く算出することができません。


そこで、DCOUNT関数をつかうことで、素早く算出することができます。


ただし、DCOUNT関数は、条件のフィールドを用意する必要があります。

E1:E3が条件です。


E7に、DCOUNT関数をつかった数式を設定します。

=DCOUNTA(A1:C9,A1,E1:E3)


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


DCOUNTA関数の引数を確認しておきます。


DCOUNTA(データベース,フィールド,条件)


データベースは、リストのことです。

「A1:C9」で、見出し行も含む必要があります。


フィールドは、次の条件が含まれている、見出し名です。

今回は、店舗名が対象なので「A1」。


条件は、先程設定した、条件の範囲である、E1:E3を設定します。

ここも見出しが必要になりますので、忘れずに範囲に含めます。


条件が増えたとしても、E3の下に追加するだけで、手早く算出することができます。


オートフィルターとかテーブルにすれば、算出する方法もありますが、ほぼ数式だけで算出することができます。


条件が複雑になった場合や、OR条件になった場合には、DCOUNTA関数など「D」がついたデータベース関数をつかってみると、いいかもしれませんね。

6/28/2022

Excel。VBA。表をコピーする。値でコピーするにはどうしたらいいの【COPY】

Excel。VBA。表をコピーする。値でコピーするにはどうしたらいいの

<Excel VBA:COPYメソッド>

Excel VBAで、コピーするプログラム文をつくることから確認しておきます。


A1:D7の表を、A9を起点として、そのままコピーするには、1行だけで、つくることができます。


Sub ssコピー()

    Range("a1").CurrentRegion.Copy Range("a9")

End Sub


では、実行してみます。


とても簡単ですが、基本形なので、大切なところですね。


補足しておくと、

「Range("a1").CurrentRegion」は、A1を起点として連続しているデータ。

つまり表を範囲選択します。


「Copy Range("a9")」は、Copyメソッドをつかって、A9を起点として、貼り付けるという意味です。


書式も含めてコピーしているので、次に紹介するのは、「値のコピー」をしたい場合です。


Sub 値のコピー()

    Range("a1").CurrentRegion.Copy

    Range("a9").PasteSpecial xlPasteValues

End Sub


実行して確認してみましょう。


このように、値のコピーという形で、コピーすることができました。


プログラム文を確認してみると、

先ほどと異なっていて、

「Range("a9").PasteSpecial xlPasteValues」

と、PasteSpecialメソッドを使用して、貼り付けています。


なぜ、PasteSpecialメソッドを使うのかというと、引数である「xlPasteValues」という貼り付ける形式を使いたいからですね。


「xlPasteValues」は、値のみ貼り付けるという引数です。


貼り付け方は色々ありますので、それぞれ引数が用意されていますので、用途に合わせて引数を使い分けるといいですね。

6/27/2022

Excel。手早く指定行ごとの累計を算出するには、どうすればいいの。【Cumulative】

Excel。手早く指定行ごとの累計を算出するには、どうすればいいの。

<SUM+OFFSET+INT+ROW関数>

やりたいことはイメージできても、実際にそれを表現するのが難しいことがあります。


例えば、4行1組となっている表で、その4行1組ごとに累計を算出したい場合も、そのようなケースだと思います。


表のD列のように算出したいわけです。


最初に、D2の数式をご紹介します。

=SUM(OFFSET($C$2,INT((ROW()-2)/4)*4,0):C2)


この数式を、オートフィルでコピーするだけで、4行ごとに累計を算出することができます。


ただ、この数式だけでは、いったい何がどうなっているのか、わかりにくいので、説明していきます。


抑えておきたいのは、累計を算出する数式です。

D列に売上高の累計を単純に算出するならば、

=SUM($C$2:C2)


という始点を絶対参照にして、終点を相対参照のままにすれば、累計を算出することができました。


終点の相対参照は、オートフィルで自動的に参照がかわりますので、考えるのは、始点ということになります。


始点を4行ごとにするには、どうしたらいいのかを、考えてみましょう。


ポイントは4行おきに始点をずらしたいわけです。


「ずらす」というキーワードがでたら、OFFSET関数の登場だと思っていいでしょう。


今度は、OFFSET関数の引数を確認します。

OFFSET(参照,行数,列数,[高さ],[幅])

行数を4行おきに、「+1」すれば、うまくいきそうです。


列数は、ずらさないので、「0」

「高さ」と「幅」は、今回省略します。


あとは、どうやって「行数」をつくっていくかを考えます。


ここで、思い出したいのは、オートフィルをするということ。


オートフィルでずれた時に、変わるものといったら、行数です。

行数を算出するのは、ROW関数です。


行方向に何かするときには、ROW関数にお世話になります。

=SUM(OFFSET($C$2,INT((ROW()-2)/4)*4,0):C2)


この数式の、「INT((ROW()-2)/4)」を抽出したE列をつくってみました。


E2は、ROW関数で算出される行番号は「2」。


この値をデータの始点である2行目の「2」で減算します。

算出した値「0」を4行1組の組数の「4」で除算した値を、INT関数をつかって、整数化します。


最後に、「INT((ROW()-2)/4)」で算出された値に、「×4」する。

この4倍は、4組の「4」です。

そうすれば、OFFSET関数の行数として、つかうことができます。


色々な関数が登場しましたが、その中でも、OFFSET関数をつかうことで、今まで、手早く算出することができなかった帳票類も改善することができるかもしれませんね。

6/26/2022

Excel。CHIDIST関数は、カイ二乗分布の上側確率を求める時に使います【CHIDIST】

Excel。CHIDIST関数は、カイ二乗分布の上側確率を求める時に使います

<関数辞典:CHIDIST関数>

CHIDIST関数

読み方: カイディスト

読み方: カイディストリビューション

分類: 互換性 

CHIDIST(x,自由度)

CHIDIST関数


カイ二乗分布の上側確率を算出します 

6/25/2022

Excel。今週のFacebookページの投稿 2022/6/13-2022/6/19【Trivia】

Excel。今週のFacebookページの投稿 2022/6/13-2022/6/19

<Facebookページ>

Facebookページで【書いてみた】Excelの豆知識(Trivia)です。

6月13日

Excel。

DEVSQ関数

読み方は、ディブスクウェアで、数値の偏差平方和を算出する



6月14日

Excel。

DGET関数

読み方は、ディーゲットで、データベースから1つの値を抽出します



6月15日

Excel。

DISC関数

読み方は、ディスクで、割引債の割引率を算出します



6月16日

Excel。

DMAX関数

読み方は、ディーマックスで、条件を満たすレコードの最大値を算出します



6月17日

Excel。

DMIN関数

読み方は、ディーミニマムで、条件を満たすレコードの最小値を算出します



6月18日

Excel。

DOLLAR関数

読み方は、ダラーで、数値を四捨五入してドル記号を付けた文字列に変換する



6月19日

Excel。

DOLLARDE関数

読み方は、ダラーディーイーで、分数表記のドル価格を小数に変換します

6/24/2022

Excel。新しい関数TOCOL関数をつかえば、表を1列で表示することができます。【TOCOL】

Excel。新しい関数TOCOL関数をつかえば、表を1列で表示することができます。

<TOCOL関数>

Office Insider のWindows:2203から追加された、新しい関数の中に「TOCOL関数」というのが含まれています。


どのような関数なのか説明します。

 

上記A1:C4までに、年別の上半期・下半期の表があります。

これを、A7:C12にあるように、データを1列にまとめて表記したいときに、この「TOCOL関数」の出番となります。


C7には、

=TOCOL(B2:C4)


と数式を設定します。

スピル機能で、数式がコピーされますので、オートフィルを使う必要はありません。


たったこれだけの処理ですが、作業効率が改善できる可能性があります。


データ量が多い場合、イチイチ、範囲選択をして、貼り付け先の一番下側に移動して、貼り付ける処理を何度も繰り返す必要があるわけですね。


処理的には、地味だけど面倒というのは、だいたい、Excel VBAでプログラム文をつくって対応しますが、TOCOL関数の登場でプログラム文を作らなくてもいい可能性があります。


また、ピボットテーブルで対応できる気もしますが、帳票のレイアウト変更のようなことなので、対応することは難しいです。


最後に、引数などを確認しておきましょう。

TOCOL関数

読み方:トゥコル

読み方:トゥカラム

分類: 検索/行列 

TOCOL(array,[ignore],[scan_by_column])


1番目の「array」は配列ですね。つまり表。

次の[ignore]に次のように設定することもできます。

「0」はすべての値が対象です。

「1」は空白を無視します

「2」はエラーを無視します

「3」は空白とエラーを無視します。


最後のscan_by_column は、

Falseが初期値で、行方向ごとに抽出します。

TRUEだと、列方向ごとに抽出します。

 

TRUEとFALSEに設定することで、様々なレイアウトに合わせて、帳票をつくることができます。

6/23/2022

Access。クエリ。すべてのフィールドを表示した条件付き最大値を手早くつくりたい。【MAX】

Access。クエリ。すべてのフィールドを表示した条件付き最大値を手早くつくりたい。

<Access:DMax>

テーブルからクエリのグループをつかうことで、簡単に、該当するフィールドの最大値を算出することはできるのですが、該当するレコードの全フィールドを表示したい場合、クエリのグループ化では対応することができません。


やりたいことを確認しておきましょう。


店舗名が横浜店で売上高の最大値をすべてのフィールドで表示したいわけです。

次のテーブルがあります。


これをクエリの集計をつかうと、最大値を算出することができます。


ただし、グループ化するために、すべてのフィールドを使うことはできません。


結果、データシートビューで確認すると、店舗名別最大売上高のクエリができた状態です。

 

つくりたいクエリはこれではありません。


では、どのようにしたら、次のようなクエリをつくることができるのでしょうか


今回は、抽出条件にDMax関数をつかうことで、問題は解決します。


クエリデザインで、「T文房具売上」の全てのフィールドをつかって、クエリのフィールドを設定します。


そして、売上高フィールドの抽出条件にDMax関数をつかった設定を入力します。


DMax("売上高","T文房具売上","店舗名='横浜'")


なお、画面の都合上、画像は、売上高フィールドのみを表示していますが、左側に、NO・店舗名・商品名のフィールドを設定しております。


これで、横浜店で売上高の最大値のデータをすべてのフィールドで表示することができます。


DMax関数の引数は、

DMax(フィールド名,テーブル名,条件)です。


この数式のポイントは、「"店舗名='横浜'"」の条件です。


「”(ダブルコーテーション)」で条件全体を囲う必要があるのですが、条件の横浜には、「’(シングルコーテーション)」で囲う必要があります。

「’(シングルコーテーション)」を「”(ダブルコーテーション)」に間違えてしまうと、エラーが表示されますので、入力する時に注意が必要です。

6/22/2022

Excel。見た目空白セルを数えたいならCOUNTBLANK関数の出番です。【COUNTBLANK】

Excel。見た目空白セルを数えたいならCOUNTBLANK関数の出番です。

<COUNTBLANK関数>

何も入力されていない、空白セルでも、IF関数などの算出結果が空白になっている場合でも、「見た目」空白のセルの個数を算出するには、「COUNTBLANK関数」をつかうことで、手早く算出することができます。


次の表を用意しました。


D7には、次の数式を設定してあります。

=COUNTBLANK(D2:D6)


COUNTBLANK関数の引数は、範囲のみです。


Ctrlキーをつかった、いわゆる「飛び地」には対応しておりません。


D列は、IF関数をつかった数式が設定されており、結果が空白のセルも、数える対象になっているため、「見た目」が空白セルを、数えてくれる関数です。


なお、逆に、空白でない、例えば今回のように「○」となっている件数を算出したい場合には、COUNTA関数はつかえないので、COUNTIF関数をつかって、算出させます。


このように、様々なケースで数える関数は変わります。

ビジネスシーンでは、件数を算出することが多いので、COUNT系関数は抑えておくといいかもしれませんね。


最後にCOUNT BLANK関数の引数などの情報を確認しておきましょう。

COUNTBLANK関数

読み方: カウントブランク

分類: 統計 

COUNTBLANK(範囲)

6/21/2022

Excel。CHAR関数は、文字コードを文字に変換する関数です。【CHAR】

Excel。CHAR関数は、文字コードを文字に変換する関数です。

<関数辞典:CHAR関数>

CHAR関数

読み方: キャラクター  

分類: 文字列操作 


CHAR(数値)

CHAR関数


文字コードを文字に変換します。

6/20/2022

Excel。VBA。見出し行を除いた範囲を手早く削除するにはどうしたらいい【Range selection】

Excel。VBA。見出し行を除いた範囲を手早く削除するにはどうしたらいい

<Excel VBA:Resizeプロパティ>

簡単な処理でも、何度も行うと、面倒になってきます。

まして、簡単になればなるほど面倒です。


例えば、次のデータ。


見出し行を残して、データだけを削除する作業など、面倒な作業の一つといえます。


しかも、データ量がその都度、異なっているとか、データ量が膨大だったりすれば、範囲選択も面倒な作業となってきます。


手早く処理をしたいので、Excel VBAでプログラム文を考えてみることにしましょう。


Sub 見出し行除き範囲()

    Dim rw As Integer

    Dim cl As Integer

    rw = Range("a1").CurrentRegion.Rows.Count

    cl = Range("a1").CurrentRegion.Columns.Count 

    Range("a2").Resize(rw - 1, cl).Clear

End Sub


たった、数行ですが、作業効率が改善することができます。


まずは、実行していましょう。


このように、見出し行だけを残して、データを削除することができました。


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


最初は、お馴染みの変数宣言です。

Dim rw As Integer

行数の変数として、rwを用意しました


Dim cl As Integer

列数の変数として、clを用意しました。


rw = Range("a1").CurrentRegion.Rows.Count

データの行数をrwに代入する作業をしています。

当たり前ですが、途中に空白があると範囲選択が表の途中になってしまうので、注意が必要です。

今回は、データベースのルールに則っているものとしています。


cl = Range("a1").CurrentRegion.Columns.Count

データの列数を代入するのがclです。


これで、rwとclの情報から表全体の大きさがわかります。


そして、見出し行を除いた範囲選択とデータの削除を行うのが、次のプログラム文です。

Range("a2").Resize(rw - 1, cl).Clear


A2を起点としています。これは、見出し行の直下の左隅セルです。

今回のポイントである、Resizeプロパティで、見出し行を除いた範囲を選択します。

Resize(rw - 1, cl)


Resizeプロパティは、

Resize(行数,列数)という引数をもっています。

行数をrwに代入しましたが、見出し行を除きたいので、「-1」しています。


最後は、削除したいので、「Clear」として、完成しました。


Resizeを使わないで、

Range("a2").CurrentRegion. Clear

とすると、A2以降の隣接する範囲ではなくて、A2も含めた隣接する範囲が対象になってしまうので、見出し行も削除することになります。


そのため、「CurrentRegion」ではなく、「Resize」をつかう必要があるわけです。


今回のように何気ない簡単な作業も、Excel VBAでプログラムをつくることで、作業効率が改善するかもしれませんね。

6/19/2022

Excel。CELL関数をつかえば、セルの書式・位置・内容に関する情報を得られます【CELL】

Excel。CELL関数をつかえば、セルの書式・位置・内容に関する情報を得られます

<関数辞典:CELL関数>

CELL関数

読み方: セル  

分類: 情報 

CELL(検査の種類,[参照])

CELL関数

セルの書式・位置・内容に関する情報を得る 

6/18/2022

Excel。今週のFacebookページの投稿 2022/6/6-2022/6/12【Trivia】

Excel。今週のFacebookページの投稿 2022/6/6-2022/6/12

<Facebookページ>

Facebookページで【書いてみた】Excelの豆知識(Trivia)です。

6月6日

Excel。

DATE関数

読み方は、デイトで、指定した日付を算出します。


6月7日

Excel。

DATEDIF関数

読み方は、デイトディフで、2つの日付の間の年・月・日数を算出する


6月8日

Excel。

DATESTRING関数

読み方は、デイトストリングで、西暦の日付を和暦の日付に変換する


6月9日

Excel。

DATEVALUE関数

読み方は、デイトヴァリューで、日付を表す文字列をシリアル値に変換する


6月10日

Excel。

DAVERAGE関数

読み方は、ディーアベレージで、条件を満たすレコードの平均を算出します。


6月11日

Excel。

DAY関数

読み方は、デイで、日付から日を算出する


6月12日

Excel。

DAYS関数

読み方は、デイズで、2つの日付の間の日数を算出します。

6/17/2022

Excel。セル内の文字に半角が含まれているか、手早く知るにはどうしたらいい【Half size】

Excel。セル内の文字に半角が含まれているか、手早く知るにはどうしたらいい

<LEN+LENB関数>

セル内の文字。半角の文字が含まれているのか、また何文字なのかを手早く知りたい時には、どのようにしたらいいのでしょうか?


次の表を用意しました。


A2とA3。違いは、「@(アットマーク)」。

A2は半角の「@」で、A3は全角の「@」がセル内に含まれています。

よく見ないと、半角が全角か、わかりにくいわけですね。


ついでに、セル内に半角文字が何文字含まれているかも、わかるようにしたいわけです。


文字コードとも考えたいのですが、文字コードで判定するのは大変です。

そこで、着目するのは、全角と半角の違いです。


B2には、次の数式を設定しました。

=LEN(A2)*2-LENB(A2)


これで、セル内の半角文字数を算出することができます。

つまり、半角文字がセル内に含まれていることも判断することができるというわけです。


つかっている関数は、LEN関数とLENB関数の2種類。


全角・半角関係なく、1文字=1と算出するLEN関数。

全角を2バイト、半角を1バイトとして算出するLENB関数


全角1文字=2。半角1文字=1と算出されるわけです。


このルールを踏まえて、数式を説明します。


C列は、LEN関数をつかった算出結果です。LEN関数は、セル内の文字数を算出します。

A2もA3も同じ6文字なので、「6」。


先に、E列を説明します。


LENB関数は、バイト数で算出しますので、全角文字は2ですから、6文字あるので、すべて全角ならば、12になるはずです。


ところがE2は11と算出された、すなわち、半角が含まれていることがわかります。


そこで、C列で算出した値を2倍した値からE列で算出した値を引けば、何文字の半角文字があるのかがわかります。


「0」ならば、半角文字は含まれていないことがわかります。


LEN関数とLENB関数を組み合わせることで、セル内に文字が含まれているかどうかを調べることができますよ。

6/16/2022

Excel。VBA。毎回連番を設定するのが面倒なので、どうにかしたい【Serial number】

Excel。VBA。毎回連番を設定するのが面倒なので、どうにかしたい

<Excel VBA:AutoFillメソッド>

「1・2・3…」と繰り返す連番を毎回毎回設定するのは、簡単な作業だからこそ、面倒になるわけですね。


例えば、次の表。


A2:A6に連番を設定するならば、For To Next文をつかって繰り返す方法があります。

Sub 連番()

    Dim i As Integer

    For i = 2 To 6

        Cells(i, "a").Value = i - 1

    Next

End Sub


説明すると、

Dim i As Integer は、変数宣言ですね。


For i = 2 To 6 ~ Next は、繰り返し構文です。


Cells(i, "a").Value = i – 1 は、iが2の場合、A2に2-1。

つまり1を代入することができます。


これで、問題は全くないのですが、Excelの機能同様にプログラム文には色々な対方法があります。


例えば、次のプログラム文でも連番を設定することができます。

Sub 連番()

    Range("a2") = 1

    Range("a2").AutoFill Destination:=Range("a2:a6"), Type:=xlFillSeries

End Sub


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


このように、連番を設定することができました。


最初のセルのA2に「1」を入力したら、オートフィルの「連続データ」を選択すると連番を設定できる方法をプログラム文にしたものです。


AutoFillメソッドをつかうと、オートフィル機能をつかえます。


Destination:=Range("a2:a6")は、Destinationですから、どこまでということで、範囲のことですね。


さらに、「Type:=xlFillSeries」を追記することで、「連続データ」とすることができます。


処理速度や可読性など、考えて設定する必要があるとは思いますが、まずはわかりやすい方で慣れていくというのがいいのかもしれませんね。

6/15/2022

Excel。新しく追加されたTEXTSPLIT関数は、簡単にセルごとに分割できます【TEXTSPLIT】

Excel。新しく追加されたTEXTSPLIT関数は、簡単にセルごとに分割できます

<TEXTSPLIT関数>

Office Insider のみに追加された関数の中でも結構つかえそうな関数の一つに、今回紹介する「TEXTSPLIT関数」があります。


現在ある、TEXTJOIN関数の逆で、セル内の指定した文字で、行方向でも列方向でも、セルごとに分割してくれる関数です。


次の表は、B2に「内藤,上原,北沢,野堀,由利」という文字が入力されています。

TEXTSPLIT関数

これを「,(カンマ)」で区切られているので、TEXTSPLIT関数をつかえば、簡単にセルごとに分割することができます。


D2には、

=TEXTSPLIT(B2,",")


と設定するだけです。スピル機能が稼働して、数式をコピーしなくても算出してくれます。


B4には、

=TEXTSPLIT(B2,,",")

と設定するだけで、行方向に分割してくれます。

これまた、スピル機能で数式をコピーする必要はありません。


早く正式に追加してくれるといいのですが…


最後に、TEXTSPLIT関数の引数などを確認しておきましょう。

TEXTSPLIT関数

読み方: テキストスピリット

分類: 文字列操作 

TEXTSPLIT(text,col_delimiter,[row_delimiter],[ignore_empty],[match_mode],[pat_with])


引数の説明ですが、

最初のtextは、データの文字です。

col_delimiterは、列方向に分割するための区切り文字を設定します。

[row_delimiter]は、行方向に分割するための区切り文字を設定します。

[ignore_empty]は、区切り文字が連続している場合は、空のセルを作成するなら、FALSEを指定します。

[match_mode]は、大文字と小文字の区別をします。

[pat_with]は、結果を埋め込む値です。

6/14/2022

Excel。散布図。横軸の日付は同じ日付が2つ表示されるのでどうにかしたい【Scatter plot】

Excel。散布図。横軸の日付は同じ日付が2つ表示されるのでどうにかしたい

<散布図>

折れ線グラフで描くよりも、散布図をつかって折れ線グラフを描くと、縦と横の補助線が自動的に表示されるなど、都合のいい場合もあります。


散布図で折れ線グラフを描くこと自体は、簡単ですが、横軸に日付をつかうと、不思議なグラフが描かれます。


次の表をつかって、散布図を描いてみます。


A1:A6とC1:C6を範囲選択して、挿入タブの散布図にある「散布図(直線)」をクリックします。


散布図を使った、折れ線グラフが表示されたのですが、注目したいのは、横軸です。

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

あと、サイズも大きくしています。


日付が2つ重複して表示されています。元の表には、そのようになっていません。

見づらいので、どうにかしたいわけですね。


原因と修正方法を確認していきましょう。


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


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


境界値の最小値「44712.5」と最大値「44717.5」と、わけのわからない状態になっています。

これは、シリアル値で表示されているだけです。

ただ、0.5は不要ですので、小数点はカットした値で入力し直すといいでしょう。


ついでなので、折れ線グラフの始点と終点を縦軸に重ねたグラフに変更しようと思いますので、次のように修正します。


最小値は「44713」

最大値は「44717」


さて、本題に戻って、横軸の日付重複表示をやめたいので、単位の「主」を「0.5」から「1」に変更します。


重複で表示された原因は、0.5になっていたのが原因です。

ざっくりいうと、午前と午後になっていたわけです。


散布図の折れ線グラフは、このように横軸も重複されず、始点と終点も縦軸から描かれたグラフに修正することができました。


あとは、見やすくデコレーションすれば、完成です。


散布図をつかって、折れ線グラフを描くことができるなど、散布図を散布図としてつかうのではない方法もありますので、色々試してみると、今まで描きたかったグラフを描くことができるかもしれませんね。

6/13/2022

Excel。空白は空白でも算出結果が空白だとCOUNTA関数は数えちゃいます。【COUNTA】

Excel。空白は空白でも算出結果が空白だとCOUNTA関数は数えちゃいます。

<COUNTA関数>

オートSUMボタンに含まれている、「数値の個数」のCOUNT関数は数値のみが、数える対象ですね。

数値ではなくて、文字を数えたい時は「COUNTA関数」をつかうことで、件数を算出することができます。

 

ただし、よく「空白以外を数える」と書いてあることがあるのですが、注意が必要です。

表を用意しましたので、確認していきます。

COUNTA関数


B7に、

=COUNTA(B2:B6)


という数式を設定しており、E7まで、オートフィルで数式をコピーした状態です。


B列は、連番の数値で、数値型データなので、数える対象ですから、「5」。

C列は、文字なので、文字型データなので、「5」


ところが、E列は、「○」という文字が2つしかないので、「2」と算出されるわけではなく、「5」と算出されています。


この原因は、E2にIF関数をつかった数式を設定していて、

=IF(D2>=80,"○","")


空白に見えても、算出結果が「空白」という状態なのです。


つまり、Null値というか、何も入力されていないセルのみが、数える対象以外になっているわけですね。


意外とこの関数の盲点でもあるので、実務で使うときには、ちょっと注意する必要があります。


では、最後にCOUNTA関数の引数などを確認しておきましょう。

COUNTA関数

読み方: カウントエー  

分類: 統計 

COUNTA(値1,[値2],…)


見た目と算出結果が違うときには、数式結果かどうかを確認するといいですね。

6/12/2022

Excel。CEILING.PRECISE関数は、指定した数値の倍数に切り上げられます。【CEILING.PRECISE】

Excel。CEILING.PRECISE関数は、指定した数値の倍数に切り上げられます。

<関数辞典:CEILING.PRECISE関数>

CEILING.PRECISE関数

読み方: シーリング・プリサイス  

分類:  数学/三角


CEILING.PRECISE(数値,[基準値])

CEILING.PRECISE関数

指定した数値の倍数に切り上げる。


この関数は、DATEDIF関数のように、関数の挿入ダイアログボックスの一覧に表示されていません。隠し関数です。

ただし、CEILING.PRECISE関数ダイアログボックスは存在しています。


6/11/2022

Excel関数辞典 VOL.64。QUARTILE.INC関数~RADIANS関数【dictionary】

Excel関数辞典 VOL.64。QUARTILE.INC関数~RADIANS関数

<Excel関数>

今回は、QUARTILE.INC関数~RADIANS関数までをご紹介しております。

QUARTILE.INC関数

読み方: クォータイル・ インクルーシブ  

読み方: クォータイル・ インクルード


分類: 統計 

QUARTILE.INC(配列,戻り値)

0%以上100%以下のデータの四分位数を算出します 



QUOTIENT関数

読み方: クオーシャント 


分類: 数学/三角 

QUOTIENT(分子,分母)

除算した商を算出します 



RADIANS関数

読み方: ラジアン 


分類: 数学/三角 

RADIANS(角度)

角度をラジアンに変換する 

6/10/2022

Excel。列ごとに違う行にある値の減算を手早く算出するにはどうすればいいの。【Subtraction】

Excel。列ごとに違う行にある値の減算を手早く算出するにはどうすればいいの。

<OFFSET関数>

日々の在庫数が入力されたデータ。

いくつ減ったのかを確認したいわけですが、単純に引き算の数式をつくればいいというわけにはいきません。


次の表で確認してみましょう。


6行目の減少数を算出する数式を作りたいのですが、最初の在庫数から、最新の在庫数を減算すればいいことは、わかります。


B6の数式は、

B2-B3


C6の数式は、

C2-C4


D6の数式は、

D2-D5


という数式になることはわかります。


どの場合も、最新の在庫数のセル番地を数式で使う必要があります。


減算の数式ではないのですが、オートフィルで、B6の数式をコピーしても意味がありません。


どのようにしたら、オートフィルをつかって手早く算出する数式を作ることができるのでしょうか。


このような時は、OFFSET関数を使うことで、問題を解決することができます。


B6の数式を、次のように設定します。

=B2-OFFSET(B3,COUNT(B4:B5),0)

この数式をオートフィルで列方向にコピーすれば、減少数を算出することができます。


このOFFSET関数がどのような動きをしているのかも、確認しておきましょう。


OFFSET関数は、参照を起点とした座標先のデータを抽出することができる関数です。

そこで、2日目から最後の4日目までのどこが、最新のデータなのかを抽出するように引数を設定してあげればいいわけです。


OFFSET関数の引数は、「参照,行数,列数,高さ,幅」で構成されています。


B3:B5の中から、最新のデータを抽出したいのがOFFSET関数でやりたいことです。

それを踏まえておきます。


参照は、B3:B5のスタートのセル番地なので、B3。


行数ですが、参照で設定したセル番地から何行下にあるのかを算出したいので、B4:B5の件数が、参照からみた最新のデータです。

COUNT関数をつかって、データの件数を算出します。


今回は、高さと幅は省略できるので、省略します。


算出した値を、最初のデータから減算すれば、減少数を算出できるというわけです。


簡単に思える数式も、少し工夫が必要な場合もあります。

そのような時には、OFFSET関数をつかうことで、手早く算出する数式をつくることができるかもしれません。

6/09/2022

Excel。CEILING.MATH関数は、指定した方法で倍数に切り上げることができます【CEILING.MATH】

Excel。CEILING.MATH関数は、指定した方法で倍数に切り上げることができます

<関数辞典:CEILING.MATH関数>

CEILING.MATH関数

読み方: シーリング・マス  

分類: 数学/三角 

CEILING.MATH(数値,[基準値],[モード])

CEILING.MATH関数


指定した方法で倍数に切り上げる 

6/08/2022

Excel。手早く切片と傾きを算出して売上予測を求めるにはどうしたらいい【Intercept and slope】

Excel。手早く切片と傾きを算出して売上予測を求めるにはどうしたらいい

<SLOPE+INTERCEPT関数>

たった2つのデータからだけでも、ちょっとした関数を知っているだけで、色々と見えてきます。


例えば予測を立てる時につかう、y=ax+bでお馴染みの「回帰分析」。


このy=ax+bに当てはめてあげると、予測した数値を手早く導き出すことができます。


なお、aのことを、「傾き」。

bのことを「切片」といいます。


また、回帰分析は、TREND関数をつかえば、一発で予測値を算出することもできますが、TREND関数をつかってしまうと、「傾き」と「切片」がわからないまま算出するので、今回は、傾きと切片を算出して、予測値を算出してみます。


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


B列には、来店客数。C列には、売上高の各店舗のデータがあります。


この2つのデータを使って、来店客数が300人の時に、売上高の予測値を算出していきます。


最初に、F1の相関係数を算出しておきます。


相関係数は、CORREL関数を使えば、一発で算出できます。


F1の数式は、

=CORREL(B2:B9,C2:C9)


相関係数は、この2つのデータに何らかの関係性があるのか、そして、その関係性は強いのか弱いのかがわかります。


この値が、「1」に近ければ、関係性は強いと判断できます。

今回は、「1」に近いので、関係性は強いようです。

逆に「0」に近い場合は、関係性が弱いことを指します。


SLOPE関数をつかうことで、傾きの「a」を算出できます。


F3の数式は、

=SLOPE(C2:C9,B2:B9)

傾きの「a」は、8.847と算出されました。


INTERCEPT関数をつかえば、切片の「b」を算出できます。


F4の数式は、

=INTERCEPT(C2:C9,B2:B9)

切片の「b」は、186.33と算出されました。


この2つの数値を回帰分析の式に当てはめます。

F7の数式は、

=F3*300+F4


結果、yである売上高の予測値は、「2840.58」と算出されました。


このように、ちょっとした数式と関数を使うだけで、手早く、予測値を算出することができます。

日頃使っているデータをつかって、色々な角度から資料を作ってみると、見えなかったものが見えてくるかもしれませんね。

6/07/2022

Excel。今週のFacebookページの投稿 2022/5/30-2022/6/5【Trivia】

Excel。今週のFacebookページの投稿 2022/5/30-2022/6/5

<Facebookページ>

Facebookページで【書いてみた】Excelの豆知識(Trivia)です。

5月30日

Excel。

CUBERANKDMEMBER関数

読み方は、キューブランクドメンバーで、キューブで指定したランクのメンバーを返します


5月31日

Excel。

CUBESET関数

読み方は、キューブセットで、キューブからセット式を返します


6月1日

Excel。

CUBESETCOUNT関数

読み方は、キューブセットカウントで、キューブセットにある項目数を返します


6月2日

Excel。

CUBEVALUE関数

読み方は、キューブバリューで、キューブから指定したセットの集計値を返します


6月3日

Excel。

CSCH関数

読み方は、ハイパーポリック コセカントで、数値の双曲線余割を算出します


6月4日

Excel

CUMIPMT関数

読み方:キュムアイピーエムティー

読み方:キュミュラティブ・イントレスト・ペイメント

元利均等返済における指定期間の金利累計を算出します


6月5日

Excel。

CUMPRINC関数

読み方は、キュムプリンク:キュミュラティブ・プリンシプルで、元利均等返済における指定期間の元金返済額累計を算出します

6/06/2022

Excel。CEILING関数は指定した数値の倍数に切り上げることができます【CEILING】

Excel。CEILING関数は指定した数値の倍数に切り上げることができます

<関数辞典:CEILING関数>

CEILING関数

読み方: シーリング  

分類: 互換性 


CEILING(数値,基準値)

CEILING関数

指定した数値の倍数に切り上げる 

6/05/2022

Excel。手早く一行おきで合計値を算出したいけど、どうしたらいいの。【Total】

Excel。手早く一行おきで合計値を算出したいけど、どうしたらいいの。

<SUMPRODUCT+MOD+ROW関数>

帳票をExcelにそのまま移行した場合、算出する方法は簡単でも、それをどのように数式として表現したらいいのか、難しくなることがあります。


例えば次の表。


B列の売上高の合計を一行おきに算出したいというのが、目的です。


なんで一行おきなのかというと、2行1組になっていて、1行目が2022年で2行目が2023年になっているというわけです。


年のフィールド(列)があれば、SUMIF関数がつかえるのですが、条件につかえる列がないので、つかえません。


SUM関数で、一行おきに、範囲選択するしかないのでしょうか。

それでは、ミスも発生する可能性が上がってしまうし、何よりも面倒です。


そこで、SUMPRODUCT関数をつかうことで、手早く算出することができます。


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

=SUMPRODUCT((MOD(ROW($B$2:$B$7),2)=0)*$B$2:$B$7)


F2には、次の数式を設定します。

=SUMPRODUCT((MOD(ROW($B$2:$B$7),2)=1)*$B$2:$B$7)


この数式で、算出することができるわけですが、少し複雑な数式なので、説明をします。


SUMPRODUCT関数は、「積の結果」を合計する関数です。

余計な計算列を作らなくて一発で、算出したい時に使うと便利な関数です。


SUMPRODUCT関数の引数から確認していきます。


C1に、

=MOD(ROW(C2:C7),2)=0

と引数のところを抽出してみました。スピル機能で、C7まで算出されています。


ROW関数は、行番号を算出する関数です。C2の行番号は「2」です。

MOD関数は、除算した余りを算出しますので、ROW関数で算出した結果を2で除算した余りを算出しています。

C2は、2÷2なので、余り「0(ゼロ)」です。


その結果が「0」と等しいならば「TRUE」と算出され、等しくなければ「FALSE」と算出される仕組みになっています。


算出結果をみると、TRUEとFALSEが一行おきになっていることがわかります。

これで、一行おきという条件に対応することができるというわけです。


また、Excelは、「TRUE」が1で「FALSE」が0と設定されています。


PRODUCTは掛け算を意味しますので、売上高にFALSE=0を掛ければ「0」になるので、TRUEのところだけをSUMするので、一行おきに合計値を算出できます。


いままで複雑で、いくつか計算列を経由して算出していた数値も、今回使用した、SUMPRODUCT関数をつかうと、コンパクトになるかもしれませんので、つかえないか検討してみるのもいいかもしれませんね。

6/04/2022

2022年5月の閲覧ランキングTOP10をご紹介【MAY 2022 ranking】

2022年5月の閲覧ランキングTOP10をご紹介

<TOP10>

皆様に閲覧していただいた項目の2022年5月TOP10をご紹介


1位

Excel。折れ線グラフを交点0からスタートさせるには?

https://infoyandssblog.blogspot.com/2013/07/excel0.html



2位

Excel。一日のタイムスケジュールを管理する24時間横棒グラフを作ってみる

https://infoyandssblog.blogspot.com/2016/03/excel24hour-schedule24.html



3位

Excel。セル内の「*」だけを手早く削除したいけど、どうしたらいいの

https://infoyandssblog.blogspot.com/2022/05/excelasterisk.html



4位

Excel。VBA。条件と合致した行全体を手早く塗りつぶしたい。

https://infoyandssblog.blogspot.com/2022/05/excelvbainterior.html



5位

Excel。VBA。読み込んだデータをテーブルにして計算列を手早くつくりたい

https://infoyandssblog.blogspot.com/2022/05/excelvbatable.html



6位

Excel。セル内でハイフンがないものだけを手早く追加入力したい

https://infoyandssblog.blogspot.com/2022/04/excelno-hyphen.html



7位

Excel。散布図の近似曲線。外れ値を除いて描きたいけどどうしたらいい?

https://infoyandssblog.blogspot.com/2016/08/excelscatter-plot.html



8位

Excel。BYCOL関数は、ラムダ関数を各列に適用し結果の配列を返します

https://infoyandssblog.blogspot.com/2022/05/excelbycolbycol.html



9位

Excel。一覧表から行単位で抽出するならVLOOKUP関数よりもINDEX関数がおススメ。

https://infoyandssblog.blogspot.com/2015/06/excelvlookupindex.html



10位

Excel。セル内にある○×それぞれの文字を数えるにはどうしたらいいの?

https://infoyandssblog.blogspot.com/2021/05/excelcount-letters.html

6/03/2022

Excel。BYROW関数は、ラムダ関数を各行に適用し、結果の配列を返す【BYROW】

Excel。BYROW関数は、ラムダ関数を各行に適用し、結果の配列を返す

<関数辞典:BYROW関数>

BYROW関数

読み方: バイロウ  

読み方: ビーワイロウ

分類: 論理 

BYROW(array,[function])

BYROW関数

ラムダ関数を各行に適用し、結果の配列を返す

6/02/2022

Excel。時間と分が別々のセルに入力された表で手早く合計時間を算出したい【Hours and minutes】

Excel。時間と分が別々のセルに入力された表で手早く合計時間を算出したい

<SUM+QUOTIENT&MOD関数>

なんでそんな表をつくったのという帳票をちょこちょこ見かけます。


次のような表もそのケースの一つです。


セルに、「2:35」と入力していれば、普通に和算すれば、手間暇かけずに、合計時間を算出することができたはずです。


ところが、この表。

時間と分が別々で入力されています。


このように、時間と分が別々のセルに入力されている場合、どのような数式をつくったら、手早く算出することができるのでしょうか?


「時間」を算出する数式から確認していくことにします。

B3の数式は、

=SUM(B1:B2)+QUOTIENT(SUM(D1:D2),60)

と設定しました。


考えなくてはいけない点は、分の繰り上げも含めて合算することですね。

そのため、単純に、SUM(B1:B2)だけにすることができません。


「QUOTIENT(SUM(D1:D2),60)」のQUOTIENT関数は、除算した商を算出する関数です。


D1:D2の合計値は80です。

この80を1時間60分なので、60で除算します。


結果は、1余り20ですね。

余りの部分は不要なので、それを除いた、商の値も追加することで、時間を算出することができます。


続いて、「分」を算出する数式をつくります。

D3の数式は、

=MOD(SUM(D1:D2),60)

と設定しました。


QUOTIENT関数は、除算した結果の「商」を算出しました。

それに対してMOD関数は、除算した結果の「余り」を算出することができます。


D1:D2の合計値を60で除算した余りをMOD関数で算出すれば、繰り上げした値を除いた余り、すなわち「分」を算出することができるというわけです。


ここで、間違いやすいのは、60で減算すればいいのではとして、数式をつくると、対応することができません。


15+25=40だとすれば、40-60で「-20」と算出されてしまいます。


このようなことから、D1:D2の合計値が、60未満の場合、「-(マイナス)」で算出されてしまうので、MOD関数をつかって、余りを算出する必要があるわけです。


どうしても帳票にExcelを合わせると、簡単なことも、色々考えないといけないことがありますので、できることなら、Excelの特徴や機能を優先した帳票をつくるようにするといいかもしれませんね。