Youtube。2023年9月に横棒グラフ縦軸反転などを公開しました。
<Excel Office Channel>
ExcelをはじめとしたMicrosoft Officeのテクニックを紹介するYouTubeチャンネルです。
https://www.youtube.com/@ExcelOfficeChannel/featured
【Word】納品書・請求書で必須の自動更新する日付をWordで設定するには、どうしたらいいの。
【Excel】グラフ:横棒グラフの縦軸を反転して表を同じ順番にする
Excel・Word・PowerPoint・Accessのテクニックや研修ネタ・テキストを紹介しております。主に、講義先や現場レベルで質問があったものを中心に書いております。
ExcelをはじめとしたMicrosoft Officeのテクニックを紹介するYouTubeチャンネルです。
https://www.youtube.com/@ExcelOfficeChannel/featured
【Word】納品書・請求書で必須の自動更新する日付をWordで設定するには、どうしたらいいの。
【Excel】グラフ:横棒グラフの縦軸を反転して表を同じ順番にする
四捨五入のROUND関数。
切り上げするROUNDUP関数に、切り捨てるROUNDDOWN関数は、有名ですが、MROUND関数という、なかなか便利な関数があります。
このMROUND関数は、指定した値を基準値として、その値の倍数で切り上げたり、切り捨てたりすることができます。
B2には、
=MROUND(A2,5000)
という数式を設定してあります。
オートフィルで数式をコピーしてあります。
このMROUND関数は、2つ目の引数である「倍数」を基準値として、それに近いかどうかで、算出値がかわってきます。
A4は2499です。
5000にするには、2501必要ですね。
5000は5000×1と考えられます。
5000×0は0なので、2499は、5000×0のほうが、5000×1よりも近いので、「0」と算出される。
すなわち、切り捨てられたわけです。
これがわかると、
A4は、14000なので、15000に近いので、15000と切りあげることができます。
A3は、12000なので、10000に近いので、10000と切り捨てられます。
このMROUND関数を知らないと、IF関数をつかったり、あれやこれやしなければなりません。
セル内で、Alt+Enterと入力すると、セル内の任意の場所に、改行を挿入することができます。
今回は、その入力されている改行を削除して、元の1行に戻したいわけです。
そこで、Excel VBAでプログラム文をつくって対応することにします。
Sub 改行削除()
Dim i As Integer
Dim row_count As Integer
row_count = Range("a1").End(xlDown).Row
For i = 2 To row_count
Cells(i, "a") = Replace(Cells(i, "a"), vbLf, "")
Next
End Sub
では、実行して確認してみます。
では、プログラム文を確認しておきましょう。
宣言文ですね。
Dim i As Integer
Dim row_count As Integer
このあとFor文で繰り返し処理をするので、繰り返し数を代入しているのが、row_countです。
row_count = Range("a1").End(xlDown).Row
For i = 2 To row_count
Cells(i, "a") = Replace(Cells(i, "a"), vbLf, "")
Next
Replace関数は、置換することができる関数です。
Alt+Enterの改行は、「vbLf」は、改行のコードナンバーを表しています。
このvbLfを「””」で置換させることで、削除と同じ意味になります。
よって、セル内の改行を削除して、1行にすることができたというわけです。
FACTDOUBLE関数
読み方: ファクトダブル
分類: 数学/三角
FACTDOUBLE(数値)
数値の二重階乗を算出する
データを読み込んでみたら、時間のデータが、なんと数値になっていた。
しかも、0~9時台は、5桁の数値。
それ以降は6桁の数値として、入力されていることがわかりました。
C2に設定した数式は、下記のようになります。
=TEXT(TIME(MID(TEXT(A2,"000000"),1,2),MID(TEXT(A2,"000000"),3,2),MID(TEXT(A2,"000000"),5,2)),"h:mm:ss")
数式自体は、長いのですが、やっていることは、同じようなことをやっていますので、一つずつ確認していきます。
MID関数は、指定した文字列から指定した文字数目から、指定の文字数を抽出する関数です。
MID関数の引数に、TEXT(A2,"000000") とTEXT関数をつかっているのは、5桁の場合、つまり0時台~9時台までの場合、頭に「0(ゼロ)」をついかしたいわけです。
数値の前に「0」を付けることはできませんので、表示形式のTEXT関数をつかって、5桁の場合0を付ける作業をしています。
6桁はそのままです。
これで、5桁のデータも6桁にすることができましたので、時・分・秒のデータを抽出しますので、MID関数をつかうというわけです。
あとは、TIME関数で、時・分・秒のデータを結合させれば、完成です。
ただ、今回その外側にTEXT関数を設定しているのは、AM/PM表示になってしまいます。
h:mm:ss形式で表示したかったので、TEXT関数をつかって、表示形式を整えてみました。
そもそも、時間として入力されていればいいわけですが、もし数値だった場合は、手間がかかってしまいます。
条件付き書式をつかうと、資料がわかりやすくなるメリットがあります。
例えば、次の表で、2024/1/6日以降のデータをわかりやすくしたいので、対象のデータ全体(行単位)で塗りつぶしたいとします。
A2:B9を範囲選択します。
ホームタブの条件付き書式にある、「新しいルール」をクリックします。
「数式を使用して、書式設定するセルを決定」を選択します。
ルールに数式を設定します。
=$A2>=2024/1/6
あとは、書式を設定します。
OKボタンをクリックしてみましょう。
ところが、この数式だと、うまくいきません。
「2024/1/6」だと日付として認識してくれません。
Accessならば「#」で囲みたいところですが、Excelでは「#」で囲むことはできません。
そのため、DATE関数をつかう必要があります。
では、数式を次のように修正します。
直接、日付を条件式で使うときには、DATE関数が必要になります。
なお、他のセルに、日付を用意してある場合は、セル番地を参照させますので、DATE関数は使わなくても大丈夫です。
今回は、VALUE関数~VAR.S関数までをご紹介しております。
VALUE関数
読み方: バリュー
VALUE(文字列)
文字列を数値に変換する
VALUETOTEXT関数
読み方: バリュートゥテキスト
VALUETOTEXT(値,[書式])
値のテキスト表現を返す
VAR関数
読み方: バリアンス
VAR(数値1,[数値2],…)
数値群を標本データとみなした不偏分散を算出します
VAR.P関数
読み方: バリアンス・ピー
VAR.P(数値1,[数値2],…)
数値群を母集団全体とみなした分散を算出します
VAR.S関数
読み方: バリアンス・エス
VAR.S(数値1,[数値2],…)
数値群を標本データとみなした不偏分散を算出します
FORECAST.ETS関数というのがありまして、一定間隔の時系列のデータから、その先の予測値を算出することができる関数なんです。
表をしました。
A2は、2023/4/1と入力されていて、それを表示形式で、2023年4月という「年月」としています。
毎月の売上高のデータがB列に入力されています。
2024年1月以降は、まだこれからなので、予測値を算出したいとします。
そこで、登場するのが、「FORECAST.ETS関数」というわけです。
ETSは、「指数平滑法」のことです。
また、数式の引数は、
FORECAST.ETS(目標期日,値,タイムライン,[季節性],[データ補間],[集計])
というようになっています。
C11のFORECAST.ETS関数をつかった数式は、
=FORECAST.ETS(A11,$B$2:$B$10,$A$2:$A$10,1,1,1)
と設定してあります。
オートフィルで数式をコピーしています。
これで、予測値を算出することができるというわけです。
では、数式の引数を確認しておきましょう。
=FORECAST.ETS(A11,$B$2:$B$10,$A$2:$A$10,1,1,1)
最初の引数は、「目標期日」です。
予測値を算出したい期日である、A11の2024年1月を設定します。
2番目の引数は、「値」です。
実績データに該当するので、$B$2:$B$10。
オートフィルで数式をコピーするので、絶対参照も合わせて設定しておきます。
3番目の引数は、「タイムライン」です。
2番目の引数の値の期間なので、$A$2:$A$10。
こちらも絶対参照を忘れずに設定します。
4番目の引数は、「季節性」です。
実績データに季節性がある場合は「1」。
ない場合は「0」を設定します。
今回は、季節性があるということにしましたので、「1」を設定しています。
5番目の引数は、「データ補間」です。
タイムラインである期日にデータがない期間がある場合の処理についてです。
もし不足データがある場合に、「0」と設定すれば、「0(ゼロ)」として算出していきます。
不足データを隣接するデータの平均値を算出して補填するならば「1」と設定します。
毎月のデータが入力されていますので、今後不足のデータが発生した場合平均値で補填しようと考えているので「1」としました。
最後の引数は、「集計」です。
データの集計方法です。平均値で算出するので「1」と設定します。
集計番号は、1が「AVERAGE」。
2が「COUNT」というように番号が割り振られています。
Excelは時間計算が苦手というか、少々考えないと算出できないものがあります。
例えば、何時間後の時刻を算出したい場合も、そのうちの一つです。
B列には、処理時間が入力されていて、時刻にこの処理時間が経過した時間を終了予定時刻として、算出してあるのがC列です。
C2には、A2+B2としたいところですが、希望するように算出してくれません。
1日を1としているのがシリアル値です。
なので、単純に処理時間を足してもダメというわけです。
なぜならば、1時間は1/24だからですね。
そこで、C2には、次の数式を設定すると、算出することができます。
=A2+TIME(INT(B2),(B2-INT(B2))*60,0)
B列の処理時間は、シリアル値を考慮して数式を作る必要があります。
TIME(INT(B2),(B2-INT(B2))*60,0)
を確認しておきましょう。
シリアル値で考える必要があります。
A列が時間なので、B列も時間にしなければいけません。
時間を作ることができる関数が、TIME関数です。
TIME関数の最初の引数は「時」です。
1時間半を1.5というように入力することを考慮して、整数化するために、INT関数をつかっています。
INT(B2)とすることで、「時」を抽出することができます。
2つ目の引数が「分」です。
小数点を抽出したいので、B2の値から、INT(B2)として整数を減算すれば、小数点以下を算出することができます。
3.5-3=0.5
「0.5」が算出されるのですが、これをそのまま「分」としてつかえません。
1時間は60分なので、60を掛けてあげる必要があります。
そのため、「分」の引数を、
(B2-INT(B2))*60
としているわけです。
最後の引数は「秒」ですが、今回は、不要なので「0」と設定します。
これで、何時間後の時刻を算出することができます。
Facebookページに書いた、Excelの豆知識(Trivia)です。
7月30日
Excel。
BINOM.DIST関数
読み方: バイノム・ディスト
読み方: バイノミアル・ディストリビューション
BINOM.DIST(成功数,試行回数,成功率,関数形式)
二項分布の確率を算出する
7月31日
Excel。
BINOM.DIST.RANGE関数
読み方: バイノム・ディスト・レンジ
読み方: バイノミアル・ディストリビューション・レンジ
BINOM.DIST.RANGE(試行回数,成功率,成功数,[成功数2])
二項分布を使用した試行結果の確率を算出する
8月1日
Excel。
BINOM.INV関数
読み方: バイノム・インバース
読み方: バイノミアル・インバース
BINOM.INV(試行回数,成功率,α)
累計二項分布が基準値以上になる最小値を算出します
8月2日
Excel。
BITAND関数
読み方: ビットアンド
BITAND(数値1,数値2)
論理積を算出する
8月3日
Excel。
BITLSHIFT関数
読み方: ビットレフトシフト
BITLSHIFT(数値,移動数)
ビットを左シフトする
8月4日
Excel。
BITOR関数
読み方: ビットオア
BITOR(数値1,数値2)
論理和を算出する
8月5日
Excel。
BITRSHIFT関数
読み方: ビットライトシフト
BITRSHIFT(数値,移動数)
ビットを右シフトする
支払予定日が、土日祝日だと、だいたい、前営業日に支払いをすることになるわけです。
その前営業日を算出するには、どのように関数を組み合わせたたらいいのでしょうか。
次のケースをつかって説明します。
=WORKDAY(EOMONTH(A6,IF(DAY(A6)<=10,0,1))+11,-1,$E$2:$E$3)
という数式をつくることで、土日祝日ならば、前営業日を算出することができます。
A2の2023/10/3は、10日締めなので、翌月の10日が支払日です。
B2のように2023/11/10が支払日となります。
B2に設定した数式は、
=EOMONTH(A2,IF(DAY(A2)<=10,0,1))+10
この式がベースとなっていきます。
EOMONTH関数は、月末日を算出する関数です。
1番目の引数は、「開始日」なので、A2を設定します。
これで、2023/10/31が月末日です。
2番目の引数は、「月」です。
10日締めなので、当月なのか、翌月の月末なのかという月を算出させる必要があります。
IF(DAY(A6)<=10,0,1))
IF関数とDAY関数をつかって、10日以前なのどうかを判断させています。
10日以前ならば「0」。
そうでなければ「1」とすることで、当月末なのか、翌月末なのかを算出できます。
その日付に「+10」すれば、10日払いの日付を算出することができるというわけです。
もし、25日払いならば、「+25」とすればいいわけです。
だから、EDATE関数ではなくて、EOMONTH関数をつかったというわけです。
さて、算出した日付が、平日ならばいいのですが、土日祝日だった場合、金融機関がお休みなので、前営業日にしたいわけです。
そこで、土日祝日を除くことができるWORKDAY関数をつかって、先程のEOMONTH関数をネストします。
=WORKDAY(EOMONTH(A6,IF(DAY(A6)<=10,0,1))+11,-1,$E$2:$E$3)
WORKDAY関数の最初の引数は、「開始日」です。
これは、先程のEOMONTH関数で算出した数式を設定します。
ただし、先程、10日払いだから「+10」としましたが、前営業日にしたいので、ワザと1日多い「+11」にします。
2つ目の引数は、「日数」なので、これを「-1」と設定することで、前営業日を算出することができます。
この「+1」と「-1」の考え方ですが、前営業日にしたいので「-1」したいわけです。
土曜日の場合は、「-1」すれば金曜日なので、問題はないのですが、金曜日など平日の場合は、その日でいいのにもかかわらず、「-1」されてしまい、前日が支払日として算出されます。
そのため、わざと「+11」と一日多くして、「-1」させるという方法をつかっております。
最後3つ目の引数は、祝日のカレンダーを用意しておき、その日付にも対応するようにしています。
土日祝日が絡んだ場合、前営業日を算出する方法をご紹介しました。
DATEDIF関数と同じように、手入力でないと使うことができない関数がいくつかあります。
今回は、そのうちの一つ「FLOOR.PRECISE関数」をご紹介します。
セル上で、FLOORまで入力しても表示されません。
関数の挿入ダイアログボックスにも表示されません。
B2には、FLOOR.PRECISE関数でつくった関数を設定してみました。
=FLOOR.PRECISE(A2)
基準値を省略すると、1の倍数になるように切り捨ててくれます。1の倍数ということなので、整数にすることができるというわけです。
Excelには、色々な関数が用意されているんですね。
F.TEST関数
読み方: エフ・テスト
分類: 統計
F.TEST(配列1,配列2)
F検定の両側確率を算出する
表を見やすくしたいので、5件おきに、セルの下罫線を変えたい場合、どのようにしたら、手早く設定することができるのでしょうか。
見出し行を除いたデータのA2:B13を範囲選択します。
ホームタブの条件付き書式にある、「新しいルール」をクリックします。
条件式のボックスに、
=mod(row(),5)=1
と設定します。
あとは罫線の書式を設定しますので、書式ボタンをクリックします。
下線に描きたいので、下線のボタンをクリックして、OKボタンをクリックします。
元のダイアログボックスが表示されますので、改めてOKボタンをクリックして完成です。
条件式を説明します。
=mod(row(),5)=1
MOD関数は、除算した余りを算出する関数です。
最初の引数にはROW関数をつかって、行番号を抽出します。
2番目の引数は、除数です。
「5件おき」なので、5で除算します。
除算した余りが、1の時が、5件おきなので、「=1」を追加します。
なお、ここの条件をアレンジすることで、様々なケースに対応することができます。
ただ、線種が少ないので、もっと色々対応した場合には、Excel VBAでプログラムをつくってみるのもいいかもしれませんね。
作業効率もUPする、知っていると便利なショートカットキー。
なお、Excelのバージョンによって多少変わります。
Ctrl+Shift+1
マイナスの数値を赤色にしない表示形式にする
Ctrl+Shift+2
アクティブなセルの 1 つ上のセルの値をコピーします。
Ctrl+Shift+3
日付形式を設定する
Ctrl+Shift+4
通貨スタイル (¥)を設定する
Ctrl+Shift+5
セルの値を % 表示にする
Ctrl+Shift+6
セルに外枠罫線を設定
Ctrl+Shift+7
1つ上のセルの数式をコピーする。数式の参照先は変更しない。
Ctrl+Shift+9
行選択した範囲内にある非表示の行を再表示する
Facebookページに書いた、Excelの豆知識(Trivia)です。
7月23日
Excel。
BINOM.DIST関数
読み方: バイノム・ディスト
読み方: バイノミアル・ディストリビューション
BINOM.DIST(成功数,試行回数,成功率,関数形式)
二項分布の確率を算出する
7月24日
Excel。
BINOM.DIST.RANGE関数
読み方: バイノム・ディスト・レンジ
読み方: バイノミアル・ディストリビューション・レンジ
BINOM.DIST.RANGE(試行回数,成功率,成功数,[成功数2])
二項分布を使用した試行結果の確率を算出する
7月25日
Excel。
BINOM.INV関数
読み方: バイノム・インバース
読み方: バイノミアル・インバース
BINOM.INV(試行回数,成功率,α)
累計二項分布が基準値以上になる最小値を算出します
7月26日
Excel。
BITAND関数
読み方: ビットアンド
BITAND(数値1,数値2)
論理積を算出する
7月27日
Excel。
BITLSHIFT関数
読み方: ビットレフトシフト
BITLSHIFT(数値,移動数)
ビットを左シフトする
7月28日
Excel。
BITOR関数
読み方: ビットオア
BITOR(数値1,数値2)
論理和を算出する
7月29日
Excel。
BITRSHIFT関数
読み方: ビットライトシフト
BITRSHIFT(数値,移動数)
ビットを右シフトする
演算フィールドをつかって、平均値から、どのぐらい乖離しているのかを知りたい場合、絶対値をつかいます。
そして、Accessにも、Abs関数という絶対値を算出する関数がありますので、クエリで絶対値を算出していきます。
つかうテーブルです。
クエリで演算フィールドをつくりますので、作成タブのクエリデザインをクリックします。
必要なフィールドを設定したら、絶対値の演算フィールドをつくります。
設定した演算フィールドは、
絶対値: Abs([数値]-DAvg("[数値]","T数値"))
と設定します。
「DAvg("[数値]","T数値"))」で平均値を算出したら、数値フィールドの値から減算した値をAbs関数で絶対値にします。
絶対値をきちんと算出しているのかの確認で、平均値差というフィールドもつくってみました。
F.INV.RT関数
読み方: エフ・インバース・ライトテール
分類: 統計
F.INV.RT(確率,自由度1,自由度2)
F分布の上側確率から確率変数を算出する
アルファベットや丸数字は、オートフィルで連続コピーをすることができません。
なぜかというと、「文字列」扱いだからですね。
ユーザー設定リストに登録してもいいのですが、面倒です。
そこで、関数をつかうことで、手早くアルファベットや丸数字を連続コピーすることができます。
C2に設定した数式は、
=CHAR(CODE("①")+SEQUENCE(5,,0))
SEQUENCE関数によるスピル機能によって、オートフィルをつかわないで、指示した件数の連続データをつくってくれます。
今回のポイントは、文字列には「+1」することはできませんが、文字コードならば「+1」することで、次の文字コードの文字を表示することが可能です。
そこで、一度、文字から文字コードを抽出するために、CODE関数で文字コードを算出します。
それが、CODE("①")
これで、「①」の文字コードを算出することができます。
その値に、以前はROW関数で行番号を和算させる数式をつくってオートフィルしていました。
今は、SEQUENCE関数があるので、事前に作成するデータ数がわかっているようならば、SEQUENCE関数をつかうことで、手早く連続データをつくることができます。
SEQUENCE(5,,0)を確認しておきましょう。
最初の引数は、「行」。
今回は「⑤」まで表示したいので、「5」とします。
2つ目の引数の「列」は不要なので、省略。
3つ目の引数は、「開始」文字コードに「+1」したいだけなので、省略してしまうと、1件目が「+1」されてしまうので、「0」にします。
これで、1~5の数値をつくることができます。
この数値を文字コードに和算します。
このままだと文字コードのままなので、CHAR関数をつかって、文字コードに基づく文字を表示してくれるという仕組みです。
このような方法を使うことで、アルファベットや丸数字を連続データをつくることができます。
整数の数値をランダムで表示したい。
しかも、重複しないようにしたい場合、Microsoft365やExcel2021で登場した3つの関数を使うことで、手早く算出することができます。
A1に次の数式を設定します。
=SORTBY(SEQUENCE(10),RANDARRAY(10))
これで、重複しないで1~10の数値をランダムで表示することができます。
今までは、RAND関数で一度、ランダムの数値を算出して、その数値の順位を算出する。
その後、RANK.EQ関数をつかって、重複しないランダムの数値をつくっていました。
手間が結構かかったわけですね。
ところが、一つの数式で、算出できるようになったというわけです。
SORTBY関数とSEQUENCE関数とRANDARRAY関数で、算出することができるようになりました。
では、
=SORTBY(SEQUENCE(10),RANDARRAY(10))
の仕組みを確認しておきましょう。
SORTBY関数は、範囲内にある値を並べ替えする関数です。
最初の引数は、「配列」です。SEQUENCE関数をつかって、1~10の値をつくります。
SEQUENCE(10)とすることで、行ごとに1から10の数値を算出してくれます。
これで、1~10の範囲を得ることができます。
2つ目の引数は、「基準配列1」です。並べ替えを行うための基準です。
ここに、RANDARRAY関数をつかって、ランダムの数値をつくり、基準とします。
SORTBY関数とSEQUENCE関数とRANDARRAY関数は、スピル機能に対応した関数なので、オートフィルで数式をコピーする必要はありません。
そのため、A1に数式を設定するだけで済みます。
今回紹介した、SORTBY関数とSEQUENCE関数とRANDARRAY関数をはじめとして、新しい関数が色々追加されています。
確認してみると、可読性の高い数式に修正することができるかもしれませんね。
今回は、UNICHAR関数~UPPER関数までをご紹介しております。
UNICHAR関数
読み方: ユニコードキャラクター
UNICHAR(数値)
数値で指定したUnicode番号の文字に変換します
UNICODE関数
読み方: ユニコード
UNICODE(文字列)
文字列の最初の文字のUnicode番号を返す
UNIQUE関数
読み方: ユニーク
UNIQUE(配列,[列の比較],[回数指定])
範囲または配列から一意の値を返す
UPPER関数
読み方: アッパー
UPPER(文字列)
英字を大文字に変換する
F.INV関数
読み方: エフ・インバース
分類: 統計
F.INV(確率,自由度1,自由度2)
F分布の下側確率から確率変数を算出する
インポートしたら、日付が8桁の数値になっていました。
これでは、日付としてつかえないので、「/(スラッシュ)」や年月日の日付にするには、どうしたらいいのでしょうか。
まして、大量のデータ。
そこで、Excel VBAでプログラムを作って対応することにしました。
Sub 数値を日付()
Dim i As Integer
Dim row_count As Integer
Dim nen As String
Dim tuki As String
Dim niti As String
row_count = Range("A1").End(xlDown).Row
For i = 2 To row_count
nen = Mid(Cells(i, "a"), 1, 4)
tuki = Mid(Cells(i, "a"), 5, 2)
niti = Mid(Cells(i, "a"), 7, 2)
Cells(i, "b") = nen & "/" & tuki & "/" & niti
Cells(i, "c") = nen & "/" & tuki & "/" & niti
Cells(i, "c").NumberFormatLocal = "yyyy年m月d日"
Next
End Sub
A列の8桁の数値が、B列は「/(スラッシュ)」でC列は「年月日」の日付にすることができました。
それでは、プログラム文を確認します。
変数の宣言ですね。
Dim nen As String
Dim tuki As String
Dim niti As String
これは、年・月・日を格納するための変数です。
row_count = Range("A1").End(xlDown).Row
For to Next文で繰り返し処理をしますので、その回数を得るためのrow_countという変数を用意しました。
nen = Mid(Cells(i, "a"), 1, 4)
tuki = Mid(Cells(i, "a"), 5, 2)
niti = Mid(Cells(i, "a"), 7, 2)
ここでは、Mid関数をつかって、A列のデータを抽出しています。
例えば、「nen = Mid(Cells(i, "a"), 1, 4)」だと、nenという変数に年を格納しますが、文字列の1文字目から4文字を抽出するという意味です。
同じように、月と日も抽出し格納します。
Cells(i, "b") = nen & "/" & tuki & "/" & niti
変数と「/(スラッシュ)」を「&(アンパサンド)」で結合することで、日付にすることができます。
これで、「/(スラッシュ)」の日付にすることができました。
では、年月日はというと、一発でできないので、最初「/(スラッシュ)」の日付を作ります。
Cells(i, "c") = nen & "/" & tuki & "/" & niti
そのあと、表示形式の「NumberFormatLocal」プロパティをつかって、年月日に表示形式を変更します。
Cells(i, "c").NumberFormatLocal = "yyyy年m月d日"
このようにすれば、手早く、8桁の数値を日付にすることができます。
Facebookページに書いた、Excelの豆知識(Trivia)です。
7月16日
Excel。
BETA.DIST関数
読み方: ベータ・ディスト
読み方: ベータ・ディストリビューション
BETA.DIST(x,α,β,関数形式,[A],[B])
ベータ分布の累積確率を算出します
7月17日
Excel。
BETAINV関数
読み方: ベータインバース
BETAINV(確率,α,β,[A],[B])
累積確率からベータ分布の値を逆算する
7月18日
Excel。
BETA.INV関数
読み方: ベータ・インバース
BETA.INV(確率,α,β,[A],[B])
累積確率からベータ分布の値を逆算する
7月19日
Excel。
BIN2DEC関数
読み方: ビントゥデック
読み方: バイナリ・トゥ・デジマル
BIN2DEC(数値)
2進数を10進数に変換する
7月20日
Excel。
BIN2HEX関数
読み方: ビントゥヘックス
読み方: バイナリ・トゥ・ヘキサデジマル
BIN2HEX(数値,[桁数])
2進数を16進数に変換する
7月21日
Excel。
BIN2OCT関数
読み方: ビントゥオクト
読み方: バイナリ・トゥ・オクタル
BIN2OCT(数値,[桁数])
2進数を8進数に変換する
7月22日
Excel。
BINOMDIST関数
読み方: バイノムディスト
読み方: バイノミアルディストリビューション
BINOMDIST(成功数,試行回数,成功率,関数形式)
二項分布の確率を算出する
予算などで、1000円単位で、切り捨てた数値を算出したい時に使用する関数に「FLOOR.MATH関数」があります。
このFLOOR.MATH関数は負数の時にモードを使い分けることで、算出する数値が異なってきます。
B2に設定した数式は、
=FLOOR.MATH(A2,100,0)
オートフィルで数式をコピーしています。
B6のみ、
=FLOOR.MATH(A6,100,1)
という数式にしています。
A2の120は、基準値を100としているので、101~199までは100へと切り捨てられます。
A3の190のように、200に近くても関係ありません。
A4の210ならば、200と算出されるといのが、FLOOR.MATH関数です。
ところが、負数では、変わってきます。
B5の数式は、
=FLOOR.MATH(A5,100,0)
としています。
3つ目の引数がモードなのですが、「0」とすると、数値の小さい側に切り捨てられます。
「1」とすると、「絶対値」の小さい側に切り捨てられるようになっています。
つまり、「0(ゼロ)」に近いように切り捨てられるというわけです。
今までは、INDEX関数とMATCH関数を組み合わせないと、算出することが難しかったことが、XLOOKUP+XLOOKUP関数というXLOOKUP関数のネストで、算出することができますので、その方法をご紹介します。
次の表を用意しました。
重さと地域が交わるところが、その運送料なわけです。
これを算出するのに、以前は、INDEX関数とMATCH関数をつかうことで、算出していましたが、少々わかりにくいところがありました。
ちなみに、B9の送料をINDEX関数とMATCH関数で数式を設定すると、
=INDEX(B2:G4,MATCH(B7,A2:A4,1),MATCH(B8,B1:G1,0))
行と列の座標をMATCH関数で算出させるわけですね。
これと同じように、XLOOKUP関数で、算出することができます。
B9にXLOOKUP関数をつかった数式を設定してみます。
=XLOOKUP(B8,B1:G1,XLOOKUP(B7,A2:A4,B2:G4,,-1,1))
これで、先程の、INDEX関数とMATCH関数と同じように算出することができます。
このXLOOKUP関数の数式のポイントは、
最初のXLOOKUP関数で、地域の「列」の座標軸になっています。
引数内の2つ目のXLOOKUP関数が、重さである、「行」の座標軸で使用しています。
XLOOKUP(B7,A2:A4,B2:G4,,-1,1)
重さが完全一致だけとは限りません。
そこで、一致モードを「-1」に設定することで、近似値で算出できます。
XLOOKUP関数は、アイディアによって、色々使える可能性がありますね。
小数点第一位を表示する四捨五入。
そして、「,(カンマ)」をつかった三桁区切りを設定したい場合、ROUND関数をつかって、四捨五入をして、表示形式の三桁区切りのボタンをクリックすると、小数点が消えてしまいます。
これは、三桁区切りのカンマが、通貨スタイルによる原因です。
となると、ROUND関数をつかったあとに、表示形式を再度設定するかTEXT関数で表示形式を設定する必要があります。
そのため、単純な作業であっても、面倒な処理になってしまいます。
そこで、「FIXED関数」をつかってみると、四捨五入と三桁区切りを同時に設定することができます。
この数値を、小数第二位を四捨五入して、小数点第一位を表示する。
そして、三桁区切りのカンマを整数に設定する。
この処理をしたいので、B3にFIXED関数をつかった数式を設定します。
=FIXED(B1,1,FALSE)
これで、完成しました。
それでは、FIXED関数の引数を確認します。
最初の引数は「数値」。
B1を設定します。
2つ目の引数は、「桁数」。
四捨五入後、何桁目までを表示するのかを指定します。
これは、ROUND関数と同じです。
今回は、小数第二位を四捨五入して、小数点第一位を表示するので、「1」としました。
小数点をカットするならば「0(ゼロ)」ですね。
最後の引数は、「桁区切り」です。
TRUEならば、三桁区切りのカンマは設定しない。
FALSEならば、三桁区切りのカンマを設定することができます。
なかなか、使えそうなFIXED関数ですが、数字文字列になってしまうので、左揃えになってしまいます。
なお、FIXED関数は、「フィックスト」と読みます。
F.DIST.RT関数
読み方: エフ・ディスト・ライトテール
読み方: エフ・ディストリビューション・ライトテール
分類: 統計
F.DIST.RT(x,自由度1,自由度2)
F分布の右側(上側)確率を算出する
条件によって、文字の色を変えるならば、条件付き書式をつかいます。
ただ、条件付き書式は、設定する条件数が増えれば増えるほど、面倒になってきます。
ゼロなら、文字の色を黒。
負数なら文字の色は赤。
というようにしたいなら、条件付き書式をつかうならば、3種類設定しなければなりません。
つまり、3回同じようなことをしないといけないというわけです。
ちょっと面倒ですね。
また、Excel VBAでプログラム文をつくるというほどのことでもない。
そこで、表示形式のユーザー定義をつかうことでも、文字の色を条件によって変更することも可能です。
今回は、誤差の値が、正数なら文字の色を「青」。ゼロならば、そのまま「黒」で、負数ならば、文字の色を「赤」にしたいわけです。
設定方法を確認していきます。
D2:D6を範囲選択します。
セルの書式設定ダイアログボックスを表示します。
表示形式の分類にある「ユーザー定義」をクリックします。
[赤][<0]-#,##0;[=0]0;[青]#,##0
と設定します。
これで、正数なら文字の色を「青」。
ゼロならば、そのまま「黒」で、負数ならば、文字の色を「赤」にすることができます。
設定した「[赤][<0]-#,##0;[=0]0;[青]#,##0」を確認しておきましょう。
[赤]や[青]ですが、これで文字の色を設定することができます。
あと、[<0]や[=0]とすると、[<0]はゼロより小さい場合、[=0]でゼロの場合の条件を設定することができます。
なので、[赤][<0]とすることで、「ゼロより小さい場合は文字の色を赤色」という条件をつくることができるというわけです。
作業効率もUPする、知っていると便利なショートカットキー。
なお、Excelのバージョンによって多少変わります。
Ctrl+Shift+O
メモが挿入されたすべてのセルを選択する
Ctrl+Shift+P
セルのフォント設定ダイアログ ボックスを開く
Ctrl+Shift+U
数式バーを展開する、または折りたたむ。
Ctrl+Shift+V
図形などオブジェクトの書式を貼り付ける