Excel。複素数の平方根を算出できるIMSQRT関数
<関数辞典:IMSQRT関数>
IMSQRT関数
読み方: アイエムスクエアルート
読み方: イマジナリースクエアルート
分類: エンジニアリング
IMSQRT(複素数)
複素数の平方根を算出する
Excel・Word・PowerPoint・Accessのテクニックや研修ネタ・テキストを紹介しております。主に、講義先や現場レベルで質問があったものを中心に書いております。
IMSQRT関数
読み方: アイエムスクエアルート
読み方: イマジナリースクエアルート
分類: エンジニアリング
IMSQRT(複素数)
複素数の平方根を算出する
3行おきの等間隔のデータや数式を、抽出し、コピーしたい場合どのようにしたら、手早く処理をすることができるのでしょうか。
実はコレ、INDEX関数とROW関数を組み合わせた数式で、対応することができます。
そのポイントを動画で紹介しております。
数値を除算して、整数部分を抽出したい場合、Excelでは、INT関数をつかったりします。
では、Accessでは、どのようにしたらいいのでしょうか。
Accessの場合、関数を使う必要はありません。
次のテーブルを用意しました。
作成タブのクエリデザインをつかいます。
千円: [売上高]¥1000
「/(スラッシュ)」などの四則演算をつかっていませんが、とりあえず、実行してみましょう。
Accessでは、「¥」という演算子が用意されていて、この「¥」をつかうことで、除算した結果の整数商を求めることができるようになっています。
Excelには、このような演算子はありません。
なお、余りについても、ExcelではMOD関数を使用しますが、AccessにはMod演算子というのが用意されています。
四則演算のように演算フィールドをつくることで、余りも手早く求めることができます。
Facebookページに書いた、Excelの豆知識(Trivia)です。
9月1日
Excel。
T.DIST.RT関数
読み方: ティー・ディスト・ライトテール
読み方: ティー・ディストリビューション・ライトテール
分類: 統計
T.DIST.RT(x,自由度)
t分布の右側(上側)確率を算出します
9月2日
Excel。
T.DIST.2T関数
読み方: ティー・ディスト・ツーテール
読み方: ティー・ディストリビューション・ツーテール
分類: 統計
T.DIST.2T(x,自由度)
t分布の両側確率を算出します
9月3日
Excel。
TEXT関数
読み方: テキスト
分類: 文字列操作
TEXT(値,表示形式)
数値を書式設定した文字列に変換する
9月4日
Excel。
TEXTJOIN関数
読み方: テキストジョイン
分類: 文字列操作
TEXTJOIN(区切り文字,空のセルは無視,テキスト1,…)
複数の範囲や文字列からテキストを結合する
9月5日
Excel。
TIME関数
読み方: タイム
分類: 日付時刻
TIME(時,分,秒)
指定した時刻を算出します
9月6日
Excel。
TIMEVALUE関数
読み方: タイムヴァリュー
分類: 日付時刻
TIMEVALUE(時刻文字列)
時刻を表す文字列をシリアル値に変換する
9月7日
Excel。
TINV関数
読み方: ティーインバース
分類: 互換性
TINV(確率,自由度)
t分布の両側確率から上側の確率変数を算出します
IMSINH関数
読み方: アイエムサインハイパーポリック
読み方: イマジナリーハイパーポリックサイン
分類: エンジニアリング
IMSINH(複素数)
複素数の双曲線正弦(ハイパーポリックサイン)を算出する
シートには、月別の売上表があります。
コピー&ペーストで対応するのは面倒ですし、セル参照で数式を作るのも面倒です。
そこで、HSTACK関数をつかうと、手早く、しかも簡単にデータを集めることができます。
B8にHSTACK関数をつかった数式を設定します。
これで、複数の表から必要なデータを集めることができました。
HSTACK関数は、水平方向のデータを左右に重ねて結合することができる関数なので、引数に範囲選択をするだけで、集めることができるというわけです。
コピー&ペーストだと、リンク貼り付けにならないので、元の数値が変わった場合、連動しませんが、HSTACK関数は、数式なので、元のデータが変われば、連動してかわります。
そして、スピル機能に対応した関数なので、絶対参照にする必要はありません。
Microsoft 365 Insider版のアップデート後、ビックリすることが、またまた発生したみたいです。
画面はWordですが、Excelも、PowerPointも同じように変わっています。
確かに、見やすいのですが、蛍光ペンよりも大きくしなくてもいいような気もしますが。
なお、Insider版は、通常のMicrosoft365に反映されることが多いので、日頃、Microsoft365を使用している人は、反映されるかもしれません。
ABC分岐などの多分岐処理をしたいときは、IF+IF関数のネストという数式を以前はつくっていました。
慣れないとわかりにくい。
しかし、IFS関数をつかうことで、ネストにしないて、数式をつくることができます。
つまり、わかりやすい数式をつくることができるというわけです。
ただ、注意するポイントがあって、「それ以外」はTRUEを使うということです。
CSVやテキストファイルなどのデータを読み込むと、Power Queryに読み込まれることで、自動的にテーブル化されます。
そこで、今回は、Excel VBAでプログラムを作ってみようと思います。
Sub テーブル挿入と合計行()
ActiveSheet.ListObjects.Add xlSrcRange, Range("a1").CurrentRegion
ActiveSheet.ListObjects(1).Name = "文房具売上表"
With ActiveSheet.ListObjects(1).ListColumns
.Add
.Item(.Count).Name = "合計"
End With
Range("文房具売上表[合計]").Value = "=[単価]*[販売数]"
Range("a1:e1").HorizontalAlignment = xlCenter
End Sub
では、実行して確認してみます。
さらに、見出しも中央揃えにするようにしてあります。
では、プログラム文を確認しておきましょう。
ActiveSheet.ListObjects.Add xlSrcRange, Range("a1").CurrentRegion
A1から連続するデータ範囲「Range("a1").CurrentRegion」を、テーブルにする範囲として設定しています。
「ListObjects.Add xlSrcRange」
ListObjects.Add で、テーブルに変換することができます。
テーブルに設定(挿入)するには、「ListObjectsコレクションのAddメソッド」で行います。
ActiveSheet.ListObjects(1).Name = "文房具売上表"
テーブルに、「文房具売上表」というテーブル名を設定しています。
With ActiveSheet.ListObjects(1).ListColumns
.Add
.Item(.Count).Name = "合計"
End With
With文をつかって、「ActiveSheet.ListObjects(1).ListColumns」を繰り返し入力しないようにしています。
「ListColumns.Add」で、テーブルに列を追加しています。
「ListColumns.Item(.Count).Name = "合計"」で、列見出しを入力しています。
Range("文房具売上表[合計]").Value = "=[単価]*[販売数]"
単価*販売数は、構造化参照にする必要がありますので、「[]」をフィールド名につけています。
それにより、「=[@単価]*[@販売数]」という構造化参照の数式を設定することができました。
Range("a1:e1").HorizontalAlignment = xlCenter
中央揃えに設定しています。
IMSIN関数
読み方: アイエムサイン
読み方: イマジナリーサイン
分類: エンジニアリング
IMSIN(複素数)
複素数のサイン(正弦)を算出する
Wordで、フリガナ(ルビ)を設定すると、なんと勝手に、行の高さ(行間)が広がってしまいます。
どのようにしたら、元の行間に戻すことができるのでしょうか。
ところで、そもそも、元の行の高さは、どこで確認したらいいの?など、対応方法をご紹介しております。
順位を求めるRANK.EQ関数ですが、スピル機能をつかった数式にすると、とてもわかりやすい数式になるので確認してみましょう。
まずは、通常のRANK.EQ関数の数式でつくってみましょう。
B列には、売上高が入力されています。
C2の数式は、
=RANK.EQ(B2,$B$2:$B$8)
最初の引数は、数値です。
秋葉原店の売上高が、全体で何位なのかということを知りたいわけですから、B2を設定します。
次の引数は、参照です。
範囲ですので、B2:B8。
オートフィルで数式をコピーしますので、絶対参照も忘れずに、設定する必要があります。
この絶対参照を忘れやすいので、注意が必要ですね。
さて、スピル機能の数式にしたら、どのようになるのでしょうか。
D2にスピル機能に対応したRANK.EQ関数を作ってみます。
=RANK.EQ(B2:B8,B2:B8)
最初の引数も、次の引数も、両方とも、B2:B8 と設定すれば大丈夫なんです。
しかも、スピル機能によって、オートフィルで数式をコピーすることはありませんので、絶対参照にする必要もありません。
このように、とてもわかりやすい数式に変えることができました。
今まで使っていた関数もスピル機能によって、数式の可読性をはじめ改善できるものがあるかもしれません。
IMSECH関数
読み方: アイエムセカントハイパーポリック
読み方: イマジナリーハイパーポリックセカント
分類: エンジニアリング
IMSECH(複素数)
複素数の双曲線正割を算出する
Facebookページに書いた、Excelの豆知識(Trivia)です。
8月25日
Excel。
TAN関数
読み方: タンジェント
分類: 数学/三角
TAN(数値)
角度の正接(タンジェント)算出します
8月26日
Excel。
TANH関数
読み方: ハイパーポリック タンジェント
分類: 数学/三角
TANH(数値)
数値の双曲線正接を算出します
8月27日
Excel。
TBILLEQ関数
読み方: ティービルイーキュー
分類: 財務
TBILLEQ(受渡日,満期日,割引率)
米国財務省短期証券の債権に相当する利回りを算出します
8月28日
Excel。
TBILLPRICE関数
読み方: ティービルプライス
分類: 財務
TBILLPRICE(受渡日,満期日,割引率)
米国財務省短期証券の額面100ドル当たりの価格を算出します
8月29日
Excel。
TBILLYIELD関数
読み方: ティービルイールド
分類: 財務
TBILLYIELD(受渡日,満期日,現在価値)
米国財務省短期証券の利回りを算出します
8月30日
Excel。
TDIST関数
読み方: ティーディスト
読み方: ティーディストリビューション
分類: 互換性
TDIST(x,自由度,分布の指定)
t分布の右側確率か両側確率を算出します
8月31日
Excel。
T.DIST関数
読み方: ティー・ディスト
読み方: ティー・ディストリビューション
分類: 統計
T.DIST(x,自由度,関数形式)
t分布の左側(下側)累積確率か確率密度を算出します
カタカナで入力されている文字列を、ひらがなに変更したい場合にはどのようにしたらいいのでしょうか。
Excelには、カタカナをひらがなに変更する関数は、残念ながらありません。
ということは、努力と根性で、ひらがなで入力し直さないといけないのでしょうか。
そこで、少々、力技ではありますが、ルビ(ふりがな)の関数。PHONETIC関数をつかうことで、対応することができます。
C2にPHONETIC関数の数式を設定します。
=PHONETIC(B2)
オートフィルで数式をコピーします。
ただ、現状全角カタカナです。
表示したいのは、ひらがな。
そこで、B2:B6を範囲選択します。
ホームタブの「ふりがなの表示/非表示」の▼をクリックして、「ふりがなの設定」をクリックします。
ただし、この方法、問題があって、B列の文字列にフリガナ情報がないと、PHONETIC関数をつかっても、フリガナが表示されませんので、注意が必要です。
IMSEC関数
読み方: アイエムセカント
読み方: イマジナリーセカント
分類: エンジニアリング
IMSEC(複素数)
複素数のセカント(正割)を算出する
Excel関数は色々あります。
ローマ数字にすることができるROMAN関数とアラビア数字にすることができるARABIC関数を紹介しております。
とてもわかりやすい関数ですが、VALUE!というエラーを表示してしまうので、注意が必要なんです。
判定に使う日付をセルに入力している場合には、いいのですが、直接日付を引数に入力した場合、きちんと算出してくれないことがあります。
次の表を用意しました。
C列には、2024/10/31以前ならば、○。
それ以降ならば、×と算出したいと考えています。
そこで、IF関数をつかって、C2に数式をつくります。
=IF(B2<=2024/10/31,"○","×")
オートフィルで数式をコピーします。
C2の数式を確認するために、数式タブの「数式の検証」を行ってみると原因がわかります。
つまり、B列の日付がシリアル値という数値で、C列は「/」を割り算と勘違いして、除算した結果の数値と比べているために、結果がおかしくなっています。
日付として扱ってくれていないわけです。
だったら、”2024/10/31”と「”(ダブルコーテーション)」で日付を囲ってみたらどうなるのでしょうか。
これは、”2024/10/31”が日付ではなくて、文字列として判断されています。
そのため、シリアル値という数値と文字を比べていますので、当然、シリアル値である日付のほうが小さくなります。
よって、結果は「○」となってしまったというわけです。
紹介した両方とも、「日付」として扱ってくれていません。
Excelには日付はシリアル値という数値です。
日付型ではありません。
そこで、日付型というか、日付とExcelにわからせる必要があります。
そこで、DATEVALUE関数をつかって、数式を修正します。
DATEVALUE関数は、日付文字列にしてくれる関数です。文字列を日付扱いにしてくれます。
これで、きちんと算出してくれました。
このように、日付を直接入力して使う場合には、日付文字列にする必要がある場合、DATEVALUE関数を組み合わせることで対応することができます。
IMREAL関数
読み方: アイエムリアル
読み方: イマジナリーリアル
分類: エンジニアリング
IMREAL(複素数)
複素数の実数部分を取り出す
セルの中に、「横棒グラフ」を表示する。
条件付き書式の「データバー」。
列内の数値の強弱を把握するのに便利なのですが、ハッキリいって、データバーの上に数値があると、読みにくい。
そこで、数値を非表示にしたいわけですね。
では、どのようにしたら、非表示にすることができるのでしょうか。
今回は、その方法をご紹介しております。
データが全体のA~Cのどこにあるのかがわかる、ABC分析。
C2の構成比は、B9のSUM関数で算出した、売上高合計をつかって、算出しています。
=B2/$B$9
B9の合計は、オートフィルで数式をコピーしますので、絶対参照を忘れずに設定します。
パーセント表示にして小数第一位まで表示することにします。
オートフィルで数式をコピーします。
D2の累計構成比は、C列に算出した構成比の累計値です。
D2の数式は、
=SUM($C$2:C2)
始点を絶対参照にして、終点は、そのまま相対参照のままにします。
これで累計が算出できます。オートフィルで数式をコピーします
E列のABCですが、今回は、累計構成比の70%以下がA。
90%以下がB。
それ以外がCとします。
それを踏まえて、E2の数式は、
=IFS(D2<=70%,"A",D2<=90%,"B",TRUE,"C")
IFS関数をつかっていますが、IF+IF関数のネストでもOKです。
この数式も、オートフィルで数式をコピーします。
これで、どの店舗の売上高が、ABCのどのカテゴリーにあるのかが、確認できました。
このデータを元に、パレート図をつくります。
A1:B8とD1:D8を範囲選択します。
挿入タブの「統計グラフの挿入」のヒストグラムにパレート図があります。
ただ、できれば、A・B・Cなのかがわかりにくいので、色分けをしたいのですが、色分けをするには、棒グラフを一つずつ選択して、色を変える必要があります。
今回のデータは、少ないので、対応できる数かもしれません。
しかし、本来は、Cランクのデータは非常に多いので、自力で、棒グラフを選択して、色を変更するというのは、ほぼ無理といえます。
グラフ専用のアプリなどでは出来るようですが、Excelでは出来ないのでしょうか。
そこで、自動的にA・B・Cで色分けできるパレート図を紹介いたします。
Excelのグラフは、そのグラフを作るための表が必要になりますので、次のように表を修正します。
F2に設定した数式は、
=IF(E2="A",B2,0)
G2の数式は、
=IF(E2="B",B2,0)
H2の数式は、
=IF(E2="C",B2,0)
すべて、オートフィルで数式をコピーします。
追加した3列は、色分けするための列です。
ランクAならば、売上高をそのまま転記します。それ以外ならば0とします。
これを、ランクB・ランクCとつくります。
この追加した列をつかって、改めてパレート図をつくります。
挿入タブのおすすめグラフをクリックします。
グラフの挿入ダイアログボックスが表示されます。
すべてのグラフタブの「組み合わせ」をクリックします。
累計構成比は、第2軸にチェックマークをいれて、折れ線グラフに変更します。
A・B・Cはすべて、積み上げ縦棒グラフに変更します。
そして、OKボタンをクリックします。
なぜ、棒グラフを、積み上げ縦棒にしたのかというと、棒グラフの太さを変更したい場合、積み上げ縦棒グラフにしておかないと、太さを変更することができないからです。
0という数字があるので、描かれていませんが、その0の縦棒グラフも太くなるのが原因です。
では、棒グラフを太くするのと、折れ線グラフの第2軸縦軸の上限を100%に変更していきます。
縦棒グラフを選択して、書式タブの「選択対象の書式設定」をクリックします。
データ系列の書式設定作業ウィンドウが表示されますので、系列のオプションにある「要素の間隔」を0にします。
作業ウィンドウが、軸の書式設定にかわります。
これで、100%までの縦軸にすることができます。
あとは、フォントサイズなどを整えたら完成です。
DETECTLANGUAGE関数
読み方: ディテクトランゲージ
分類: 文字列操作
DETECTLANGUAGE(text)
指定したテキストの言語を検出し、言語コードを返します
DETECT LANGUAGE の略
Facebookページに書いた、Excelの豆知識(Trivia)です。
8月18日
Excel。
SUMSQ関数
読み方: サムスクウェア
分類: 数学/三角
SUMSQ(数値1,[数値2],…)
数値の2乗の合計を算出します
8月19日
Excel。
SUMX2MY2関数
読み方: サム オブ エックススクエアエド マイナス ワイ スクエアエド
読み方: サムエックスジジョウマイナスワイジジョウ
分類: 数学/三角
SUMX2MY2(配列1,配列2)
Σ(x^2-Y^2)。対応する組の要素の平方差の合計します
8月20日
Excel。
SUMX2PY2関数
読み方: サム オブ エックス スクエアエド プラスワイ スクエアエド
読み方: サムエックスジジョウプラスワイジジョウ
分類: 数学/三角
SUMX2PY2(配列1,配列2)
Σ(x^2+Y^2)。対応する組の要素の平方和の合計します
8月21日
Excel。
SUMXMY2関数
読み方: サム オブ エックス マイナス ワイ スクエアエド
読み方: サムエックスマイナスワイジジョウ
分類: 数学/三角
SUMXMY2(配列1,配列2)
Σ(x-Y)^2。 対応する組の要素の差を2乗して合計します
8月22日
Excel。
SWITCH関数
読み方: スイッチ
分類: 論理
SWITCH(式,値1,結果1,[既定または値2,結果2],…)
式で指定した値を比較して最初に一致する値を返す
8月23日
Excel。
SYD関数
読み方: エスワイディー
読み方: サムオブイヤーズディジット
分類: 財務
SYD(取得価額,残存価額,耐用年数,期)
減価償却費を算術級数法で算出します(日本では利用が認められてない)
Sum of Year's Digit depreciationの略
8月24日
Excel。
T関数
読み方: ティー
分類: 文字列操作
T(値)
文字列を抽出する
入会日から何年所属しているのかを確認したいわけですが、ExcelのDATEDIF関数のようなDATEDIFF関数というのがAccessにもあります。
ただ、ExcelのようにDATEDIFF関数を使うだけでは、満年齢を算出するのが難しいようです。
次のテーブルがあります。
作成タブのクエリデザインをクリックします。
年数: DateDiff("yyyy",[入会日],#2024/02/01#)
ExcelはDATEDIF関数ですが、AccessではDateDiff関数を使います。
引数は、満年齢で表示したいので「”yyyy”」。
開始日は「入会日フィールド」をつかいます。
終了日は「#2024/2/1#」までとします。
日付は「#」で囲みます。
では、クエリを実行してみましょう。
入会年数が表示されましたが、何かおかしいです。
2024/2/1 なので、2023/2/2はまだ1年経っていないハズなのに、1年と算出されています。
2023/12/31も2024/2/1からみれば、たった、32日前なのに、1年と算出されています。
2024/1/1も2024/2/1からみれば、たった、31日前ですが、こちらは、0年と算出されています。
AccessのDateDiff関数は、その期間中にある、1月1日をカウントした結果を算出している、昔の満年齢のような算出をしているので、おかしな結果が表示されていたというわけです。
そこで、演算式を修正する必要があります。
修正年数: IIf(Format([入会日],"mm/dd")>Format(#2024/02/01#,"mm/dd"),DateDiff("yyyy",[入会日],#2024/02/01#)-1,DateDiff("yyyy",[入会日],#2024/02/01#))
すごく長くなりましたが、実行してみます
さて、この長い数式ですが、いったい何をしているのか、説明します。
ExcelのIF関数にあたる、AccessのIIf関数をつかって、条件分岐をしております。
入会日を「mm/dd」という表示にして、終了日の日付も「mm/dd」にします。
これで、日付で比較することができます。
仮に 3/1ならば2/1とくらべて大きいわけです。まだ入会日を迎えていないので、「-1」する仕組みです。
このような方法で、Accessでも満年齢を求めることができます。
ただ、Excelのように楽に設定はできないようです。
IMPRODUCT関数
読み方: アイエムプロダクト
読み方: イマジナリープロダクト
分類: エンジニアリング
IMPRODUCT(複素数1,[複素数2],…)
複素数の積を算出する
セル内の文字数を知るには、LEN関数をつかいますが、特定の文字となると、対応することができません。
では、どのようにしたらセル内の特定の文字を数えることができるのでしょうか。
カレンダーに第何週というように記載されていることがあります。
ところが、外資系の会社のスケジュール表をみると、1月1日を含む週を第1週としていないことがあります。
多くが、ISO国際標準化機構のISO週番号を採用しているようです。
このISO週番号は、最初の木曜日を含む週がその年の第1週と定められています。
例えば、2025/1/1は水曜日です。そうなると、最初の木曜日は2025/1/2なので、2025/1/2が含まれている週全体が、第1週ということになるわけです。
よって、2024/12/31は、前年ですが、週としては、第1週という扱いになるわけです。
これをどのようにしたら、求めることができるのでしょうか。
最初の木曜日が…と考えそうですが、ISO週番号を求めることができる関数があります。
それが、「ISOWEEKNUM関数」です。
通常の週番号を算出するのが、WEEKNUM関数です。
C2には、
=WEEKNUM(A2)
という関数が設定してあります。
そして、ISO週番号は、D2に数式を設定してあります。
=ISOWEEKNUM(A2)
あとは、オートフィルで数式をコピーします。
これで、ISO週番号に対応した週番号を算出することができました。
IMPOWER関数
読み方: アイエムパワー
読み方: イマジナリーパワー
分類: エンジニアリング
IMPOWER(複素数,数値)
複素数のべき乗を算出する