ラベル or関数 の投稿を表示しています。 すべての投稿を表示
ラベル or関数 の投稿を表示しています。 すべての投稿を表示

7/16/2025

Excel。OR関数の引数がたくさんあるので、数式がわかりにくい【many】

Excel。OR関数の引数がたくさんあるので、数式がわかりにくい

<IF+OR関数>

遠方の事務所は会議に参加するのにオンラインで参加OKという表をつくりました。

OR関数の引数がたくさんあるので、数式がわかりにくい

C列に地域というフィールドがあります。


D列のオンラインというフィールドには、C列の地域が、東北・四国・九州だったらば、オンラインで会議に参加。

それ以外は、リアルで参加するという表です。


D列のオンラインには、東北・四国・九州ならば、○と判断する数式を設定したいわけです。


C2が東北だったら、四国だったら、九州だったらと判断したいわけです。


判断となれば、IF関数をつかうわけですが、IF関数だけだと、ネストだらけになってしまいま

す。

そこで、OR関数をつかうことで、可読しやすい数式にすることができます。


D2に設定した数式は、

=IF(OR(C2="東北",C2="四国",C2="九州"),"○","")


この数式でも可読性はいいのですが、OR関数の引数を「C2=」が多く繰り返される傾向にあります。

今回は、3つで済んでいますが、10あれば、「C2=」が10も作る必要があります。


これでは、可読性が悪化してしまいます。


そこで、OR関数の引数に、配列定数をつかうことで、改善することができます。


D2の数式を修正します。


=IF(OR(C2={"東北","四国","九州"}),"○","")


配列定数をつかうことで、OR関数は、

C2={"東北","四国","九州"}

と、とてもわかりやすくなりました。


これならば、10件だったとしても、「C2=」は一つだけですみます。

11/01/2023

Excel。OR条件で行単位の塗りつぶしを手早く条件付き書式で設定したい【conditional formatting】

Excel。OR条件で行単位の塗りつぶしを手早く条件付き書式で設定したい

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

OR条件だからといって、条件付き書式の条件を複数設定すれば、問題なく設定することができますが、同じような条件付き書式の設定を繰り返すのは面倒です。


例えば、次のような表

OR条件で行単位の塗りつぶし

地区が「東京」と「関東」の場合、行単位で塗りつぶしをしたいとします。


そこで、条件式にOR関数をつかって条件式をつくれば、手早くOR条件に対応した条件付き書式を設定することができます。


今回は、行単位で設定したので、条件式を設定する必要があります。


A2:C7を範囲選択します。


ホームタブの条件付き書式にある「新しいルール」をクリックします。


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


「数式を使用して、書式設定するセルを決定」を選択します。


条件式を設定します。

=or($B2="東京",$B2="関東")

と入力したら、書式ボタンをクリックします。


塗りつぶしの色を設定したら、OKボタンをクリックして完成です。


では、設定した条件式を確認しておきましょう。


=or($B2="東京",$B2="関東")


OR関数をつかっていますが、IF関数はつかっておりません。


なんで、IF関数をつかっていないのかというと、OR関数の引数内の条件が満たされていれば「TRUE」。

満たされていなければ「FALSE」と判断されます。

TRUEというのは、条件が合致したということなので、塗りつぶされるというわけです。


そのため、OR関数単独の条件式で十分というわけです。

9/02/2022

Excel。OR関数で数値条件に文字列が含まれると、結果が異なるのでどうしたらいい【numerical condition】

Excel。OR関数で数値条件に文字列が含まれると、結果が異なるのでどうしたらいい

<IF+OR+ ISNUMBER関数>

次の表をご覧ください。

E列には、OR関数をつかった数式が設定されています。


E2の数式、

=IF(OR(B2>70,C2>70),"○","")


をオートフィルで数式をコピーしていますが、結果を見ると、E3やE5の結果がおかしいことがわかります。

 

ちなみに、D2には、AND関数をつかった、数式を設定しています。

=IF(AND(B2>70,C2>70),"○","")


AND関数は、問題なく算出できていることがわかります。


ですが、OR関数は、算出できないようです。


なぜこのようなことが起こるのかというと、原因は、数値を対象にした条件なのに、その対象範囲内に、文字型データや空白があると、ダメということです。


データベースの考え方からすれば、当然というか、数値型の列に文字型のデータが入力されていることが問題な訳です。


しかしながら、Excelの帳票ではよくあるケースです。


そこで、どのようにしたらいいのかというと、データが数値型なのかを判断させてあげればいいわけです。


数値型でなければ、対応しないようにすればいいわけです。


E2の数式を次のようにアレンジしました。

=IF(OR(IF(ISNUMBER(B2),B2,0)>70,IF(ISNUMBER(C2),C2,0)>70),"○","")


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


算出結果は、うまくいっています。


ただし、数式が複雑になってしまいましたので、確認しておきましょう。


たぶん馴染みのない関数が使われています。

「ISNUMBER関数」は数値なのかどうかを判断するための関数です。


数値じゃないから、ちゃんと算出してくれないので、数値じゃなければ「0(ゼロ)」にするようにIF関数と組み合わせてつかっています。

それが、この引数の部分です。


IF(ISNUMBER(B2),B2,0)

数値ならば、そのまま。そうでなければ、「0(ゼロ)」とする処理をしています。


本来、「0(ゼロ)」と空白は意味が違うわけですが、空白にしてしまうと、うまくいきません。

条件が合致しないようにするため、「0(ゼロ)」にしています。

条件によっては「0(ゼロ)」というわけではないので、注意が必要です。


今回のように、算出結果がおかしいということも、稀にあるようです。

その場合、どのように対応したらいいのかを考える必要がありますね。

12/18/2021

Excel関数辞典 VOL.57。ODDFPRICE関数~OR関数【dictionary】

Excel関数辞典 VOL.57。ODDFPRICE関数~OR関数

<Excel関数>

今回は、ODDFPRICE関数~OR関数までをご紹介しております。

ODDFPRICE関数

オッドエフプライス:オッド・ファースト・プライス

最初の利払期間が半端な利付債の現在価格を算出します。

ODDFPRICE(受渡日,満期日,発行日,初回利払日,利率,利周り,償還価額,頻度,[基準])



ODDFYIELD関数

オッドエフイールド:オッド・ファースト・イールド

最初の利払期間が半端な利付債の利回りを算出します。

ODDFYIELD(受渡日,満期日,発行日,初回利払日,利率,現在価値,償還価額,頻度,[基準])



ODDLPRICE関数

オッドエルプライス:オッド・ラスト・プライス

最後の利払期間が半端な利付債の現在価格を算出します。

ODDLPRICE(受渡日,満期日,最終利払日,利率,利回り,償還価額,頻度,[基準])



ODDLYIELD関数

オッドエルイールド:オッド・ラスト・イールド

最後の利払期間が半端な利付債の利回りを算出します。

ODDLYIELD(受渡日,満期日,最終利払日,利率,現在価値,償還価額,頻度,[基準])



OFFSET関数

オフセット

基準のセルからの相対位置を指定する

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



OR関数

オア

複数の条件のいずれか1つを満たすかどうかを調べる

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

6/07/2021

Excel。ファイル添付時用に強固なパスワードを使って作りたいけどどうしたらいい?【Strong password】

Excel。ファイル添付時用に強固なパスワードを使って作りたいけどどうしたらいい?

<RANDBETWEEN関数・IF+OR+AND+CHAR関数・CONCAT関数>

ファイルを添付してメールなどで送信する場合、パスワードを付けて送信することが多々あります。


その場合のパスワードを同じにするのも、ちょっとどうかと思いますし、かといって、「Squt!kYmx9」のようなパスワードを、その都度、自分で考えるというのも、大変です。


そこで、Excelをつかって、パスワードを生成するシートをつくっていきます。


Excel VBAでマクロをつくってもいいのですが、作ることまでもなく、関数で対応できます。


考え方として、適当な文字を10個組み合わせたいわけですね。

なお、今回は重複OKとします。


直接ランダムな文字を表示させる方法はExcelにはありません。


まずは、使えそうな関数を考えみることにします。


文字は、文字コードという数値をもっていますから、数値から文字に変換する関数が、CHAR関数です。


その数値をランダムで表示することができるのが、RANDBETWEEN関数です。


この2つの関数があれば、どうにかなりそうですね。

ただし、注意しないといけないのが、文字が文字コードに綺麗に割り振られていない点です。


文字コードの48が「0」で57が「9」

文字コードの65が「A」で90が「Z」

文字コードの97が「a」で122が「z」


というように割り振られています。

そのため、ランダムの数値を48~122という単純な条件で算出するだけではダメということになるわけです。


58~64を除くなど、除外する必要があるわけです。


それを踏まえたうえで、次のようなランダムパスワードを作成するためのシートを作りました。


E1のパスワードは、4行目に算出したランダムな文字を結合させています。

E1に設定した数式は、

=CONCAT(A4:J4)

CONCAT関数は、文字結合することが出来る関数です。


CONCATENATE関数だと、範囲選択では文字結合することができません。

セルごとに「,(カンマ)」で区切る必要があるので、新しく登場したCONCAT関数を使うほうが便利です。


A3には、ランダムで数値を算出する関数。RANDBETWEEN関数をつかって、48~122の間の乱数を算出しています。


=RANDBETWEEN(48,122)

本当ならば、文字コードがない数値を算出させないようにしたいのですが、一筋縄ではいきませんので、単純に48~122の間の数値を表示させるようにしています。


逆にA4の数式は、文字コードに該当するようにしてあげる必要があります。


A4の数式は、

=IF(OR(AND(A3>=48,A3<=57),AND(A3>=65,A3<=90),AND(A3>=97,A3<=122)),CHAR(A3),"!")

数式が長くなっていますが、

文字コードの48が「0」で57が「9」

文字コードの65が「A」で90が「Z」

文字コードの97が「a」で122が「z」

に対応させるために、OR関数とAND関数をミックスしてつかっています。別にAND関数のみでも大丈夫です。


文字コード以外の数値だったら、「!」(感嘆符:エクスクラメーション)を表示するようにしております。


あとは、A3:A4を範囲選択して、まとめて、オートフィルで数式をコピーしていきます。

パスワードの文字数が10文字なので、それにあわせて数式をコピーします。


これで、ランダムパスワードを作成することができます。

あとは、運用上の注意で、RANDBETWEEN関数は、セルに文字を入力するなど、アクションをしてしまうと、値が変わってしまうので、ランダムパスワードを作成したら、すぐに、値のコピーをつかって、管理する必要があります。

5/05/2021

Excel。東京と神奈川のようなOR条件で行全体を塗りつぶしたいけどどうしたらいいの?【Conditional formatting】

Excel。東京と神奈川のようなOR条件で行全体を塗りつぶしたいけどどうしたらいいの?

<条件付き書式とOR関数>

条件付き書式はとても簡単に、条件に合致するものに対して、塗りつぶしなどの書式を設定することが出来ます。

ただし、アレンジをしようとすると、どうしたらいいのか、考えてしまうことがあります。


例えば、次の表。

 

C列の地区が、「東京」と「神奈川」のデータに塗りつぶして、見やすくしたいとします。

また、データ全体。

つまり、行全体に書式対象として、塗りつぶしを設定するとしたらどのようにしたら、効率よく設定することができるのでしょうか?


基本的に、C列にある、「東京」と「神奈川」という文字があるセルだけが対象とするならば、ホームタブの「条件付き書式」にある「セルの強調表示ルール」の「文字列」をつかって、「東京」と「神奈川」と2度繰り返すことで、設定することができます。


この「文字列」では、対象の行全体を塗りつぶすことは出来ません。


何よりも、条件が増えた場合、設定する回数も増えてしまいます。

そこで、数式を使用して条件付き書式を設定する必要があります。


A2:D10を範囲選択します。

ホームタブの条件付き書式にある「新しいルール」をクリックします。


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


ルールの種類は「数式を使用して、書式設定するセルを決定」を選択します。


次の数式を満たす場合に値を書式設定のボックスに、数式を設定します。

今回は、「東京」または「神奈川」という文字だったらということなので、OR条件を使うことで、設定を複数回する必要がなくなります。


設定する数式は、

=or($C2="東京",$C2="神奈川")

あとは、条件に合致した時の書式を設定してOKボタンをクリックします。


ご覧のように、該当するデータの行全体に塗りつぶすの書式が反映することができました。


ポイントは、数式にOR関数をつかうというところですね。


それと、IF+OR関数のネストなのではと思われるかもしれませんが、条件が合致すれば「TRUE」と判定されます。


「TRUE」と判定されれば、その条件が成立しているわけですから、設定した書式が反映されますので、IF関数とのネストにする必要はありません。


セル番地を「$C2」と列固定の複合参照にすることで、行全体が反映対象になるので、条件が満たされれば、行全体を塗りつぶすことができたというわけです。


あと、今回は、「東京」と「神奈川」のように2つの条件でしたが、増えた場合は、引数を増やせばいいだけです。


条件付き書式をつかうことで、わかりやすい資料を作ることができます。

そして、アレンジをしたい場合には、「数式」をつかってみると、意外と上手くいくかもしれませんので、色々試してみるといいかもしれませんね。

1/21/2019

Excel。元年表示。昭和も平成も新元号の元年が存在する場合は条件付き書式で対応【GENGOU】

Excel。元年表示。昭和も平成も新元号の元年が存在する場合は条件付き書式で対応

<条件付き書式+表示形式とAND+OR関数>

平成の次の元号は、2019年4月1日に発表と決まったようで、5月1日から「新元号元年」がスタートするわけですね。

単純に、新元号元年を表示するには、表示形式で、
[<43586]ggge"年"m"月"d"日";[<43831]"新元号元年"m"月"d"日";ggge"年"m"月"d"日"
と設定するだけで、よかったのですが、顧客名簿や社員名簿などで、平成元年と新元号元年が混ざっているリストだったりすると、この方法では、対応しきれません。
新元号元年

そこで、今回は、上記のように昭和・平成・新元号の元年が混ざっている場合の対応方法を紹介していきます。

【条件付き書式と表示形式で対応】

3回同じことを繰り返すことになりますが、条件付き書式を使うことで比較的簡単に設定できます。

まず、次のような表を用意します。

C列は、B列と同じ日付を表示形式で和暦に変換しています。

C2:C4を範囲選択して、ホームタブの条件付き書式から、「新しいルール」をクリックします。

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

「指定の値を含むセルだけを書式設定」を選択して、次のセルのみを書式設定には、セルの値・次の値の間・1926/12/25・1926/12/31 と設定したら、書式ボタンをクリックします。

セルの書式設定ダイアログボックスが表示されますので、分類の「ユーザー定義」を選択して、種類には、ggg"元年"m"月"d"日" と入力してOKボタンをクリックします。

新しいルールダイアログボックスに戻りますので、OKボタンをクリックします。

和暦を確認すると、昭和1年が昭和元年に変わったのが確認できますね。

同じように、平成と新元号も設定してあげればいいわけです。

Microsoftさんのアップデートで新元号は対応すると思いますが、上手くアップデートできない場合などは、表示形式を次のようにすると、対応可能です。

"新元号元年"m"月"d"日"

この新元号の文字を、発表があり次第、新しい元号名に変えてあげればOKですが、アップデートで変わると思います。

省略していますが、大正元年も同じように対応可能です。

【AND関数とOR関数】

しかし、先程の方法ですと、同じような処理を3回繰り返さないといけないわけですね。

そこで、次のようなAND関数とOR関数を使った方法もありますので、合わせてご紹介しておきましょう。

先程設定した条件付き書式を解除しておきましょう。

参考までにD列は、元年のスタート日のシリアル値を表示してあります。

E列には、同年12月31日のシリアル値を表示してあります。

C2:C4を範囲選択して、条件付き書式の新しいルールをクリックします。

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

「数式を使用して、書式設定するセルを決定」を選択して、ボックスには、次の数式を入力します。

=OR(AND(C2>=9856,C2<=9862),AND(C2>=32516,C2<=32873),AND(C2>=43586,C2<=43830))

そして、書式ボタンをクリックして、ユーザー定義で、ggg"元年"m"月"d"日"と設定します。

OKボタンをクリックして完成です。

新元号が、平成元年と表示されていますが、アップデートされて新元号に対応すれば、新元号元年と表示されます。

4/07/2016

Excel。Conditional Formatting。複数条件の条件付き書式の設定方法をご紹介。


Excel。複数条件の条件付き書式の設定方法をご紹介。

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


職業訓練でも、企業研修でも、必ずご紹介する

「条件付き書式」。

自分で判断することをしなくても、設定すれば、Excelが判断して、
書式を反映してくれる便利な機能なのですが、この条件付き書式に関しても、
いろいろ、ご質問をいただくことがありますので、今回はその中から、
複数条件での条件付き書式の設定方法をご紹介していきます。

下記のような表があります。

条件付き書式としてやりたいことは、店舗が梅田店か、または、売上金額が50万以上だったら、
そのレコード。
つまりその行ごと、塗りつぶしを設定したいとします。

そのセルだけならば、いいのですが、レコードごとで、さらに、
複数の列にまたがった条件ということになります。

まずは、確認として、複数条件を確認しておきましょう。

D2が梅田店であるのか? E2が50万円以上なのか?という数式を作る必要があります。

この2つの条件を満たすようにするには、OR関数を使うといいようですので、
OR関数を使って条件付き書式の数式を作っていきましょう。

では、A1:E12までを範囲選択します。

ホームタブの条件付き書式から新しいルールをクリックしましょう。

新しい書式ルールダイアログボックスが表示されますので、
「数式を使用して、書式設定するセルを決定」を選択して、
ルールの内容を編集してくださいのボックスをクリックします。

次の数式を満たす場合に値を書式設定のボックスをクリックしておきます。

数式は、

=OR($D2="梅田店",$E2>=500000)

と入力をします。
これは、D列が梅田店なのか?
または、E列が50万円以上のどちらかの条件をみたしていれば…という意味になります。

書式ボタンをクリックして、任意の塗りつぶしを設定していきます。

OKボタンをクリックして、新しい書式ルールダイアログボックスに戻りますので、
OKボタンをクリックして、完成ですね。

ポイントになるのは、数式を設定するところですね。
関数のダイアログボックスを表示することができませんので、手で設定する必要があります。

また、せっかくなので、同じ列内での複数条件の場合もご紹介しておきましょう。

今度は、店舗名が、梅田店、または、横浜店の場合、
そのレコードを塗りつぶす場合はどう設定したらいいのでしょうか?

条件付き書式の数式は、こうなります。

=OR($D2="梅田店",$D2="横浜店")

これで、書式を設定すると、

このように反映されますね。
では、AND条件も確認しておきましょう。

D2が梅田店でE2が50万円以上だったらという条件の場合をやってみましょう。

条件付き書式の数式には、

=AND($D2="梅田店",$E2>=500000)

これで、書式を設定してあげると、

このような結果になり、きちんと反映されていることが確認できますね。

条件付き書式の設定も、関数をうまくコラボレーションすることによって、
より一層わかりやすい表を作ることができるので、機会があれば是非挑戦してみてください。

3/25/2014

Excel。どっちかの条件が合致した場合。IF関数だけじゃ面倒です。IF+OR関数


Excel。どっちかの条件が合致した場合。
IF関数だけじゃ面倒です。

IF+OR関数


Excelのネスト。関数の入れ子。関数の組み合わせの中でも、
初心者の方が、難しいとおっしゃるものの一つに、このIF+OR関数があります。
仕事でつかえるExcel講座でも、おなじみの内容を今回は紹介してみましょう。

OR関数は、AとBという条件のどちらか一方を満たしていればOKと判定する関数です。

下記の表があります。

やりたいことは、I列の判定に、
「前期中間と前期期末のどちらか一方が80点以上ならば優秀。そうでなければ空白」
という判定をしたいわけです。

そこで、あえてというか、OR関数を知らない場合、
IF関数だけを使って、求めたらどうなるのかを、やってみましょう。

I5をクリックして、まずは、IF関数のダイアログボックスを表示しましょう。

まずは、
論理式は、G5>=80
真の場合には、すでに条件を満たしましたので、”優秀”と入力します。
偽の場合は、もう一方が満たしているかどうかを判断しますので、
IF関数を再び挿入していきます。
IFのネストをしていきます。

名前ボックスの▼をクリックして、IF関数を選択しましょう。

そうすると、IFの中のIF関数ダイアログボックスが表示されてきます。

論理式は、H5>=80。
真の場合は、”優秀”
偽の場合は、””
ですね。
これでOKボタンをクリックして、完成ですね。

IF+IFのネストでも、算出は出来ますが、ちょっとイメージしてみましょう。
2つの条件ではなくて、これが4つ5つとなったとしたら、
それだけIF関数を使用した煩雑なネスト構造をもつ、数式が出来上がってしまいます。

確かに、算出されますので、かまわないといえば、かまわないのですが、
さらに条件が増えるという場合。
そして、ネスト構造は、Excel2003までのバージョンでは、6階層しかできません。

それに、数式自体も、たった2つの条件だけなのに、
=IF(G5>=80,"優秀",IF(H5>=80,"優秀",""))
と、ひと目には、分かりにくい構造になっています。
これでは、修正が発生した場合は大変ですね。

そこで、今回のテーマであります。IF関数とOR関数のコンビを使ってみましょう。
このOR関数は単独で使用することは、まず無いと考えられます。というのも、
TUREかFALSEを返す。
つまり、その条件が成立するか?しないか?ということだけを判定する関数なのです。

OR関数を使ったことが無い方も多くいらっしゃいますので、
講座の際には、一度使い方もかねて、まずはOR関数だけで作ってみたいと思います。

では、先ほど、算出したI列のデータは削除しておきましょう。
そして、I5をクリックして、OR関数のダイアログボックスを表示させましょう。

論理式のボックスに、条件を入力していくことになりますので、
論理式1には、G5>=80。
論理式2には、H5>=80。
という様に入力していくわけです。それでは、OKボタンをクリックしてみましょう。

算出した結果は、合致しないので、FALSEと表示されました。
これでは、なんだかわからないので、
IF関数と組み合わせて、分かりやすいようにするわけです。

それでは、やっと本題である、IF+OR関数を作成していくことにしましょう。
では、先ほど、算出したI列のデータは削除しておきましょう。

I5をクリックして、IF関数のダイアログボックスを表示させましょう。

では、早速、論理式を、と展開していくところなのですが、
ココにノウハウがありまして、論理式を作り始める。
すなわち、OR関数を入れていくわけなのですが、
そうすると、このダイアログボックスの真の場合と偽の場合が空欄のまま、進んでしまい、
OR関数のダイアログボックスのOKをクリックしてしまうと、
真と偽の場合が空欄のままため、エラーが出てしまいます。

IF関数のダイアログボックスに、戻ってくることを忘れてしまう危険性を下げたいわけですね。

そこで、今回は、先に、真の場合が”優秀”。偽の場合は””。と入力しておきましょう。
こうしておけば、OR関数のOKボタンをクリックしても、エラーを防止することができます。

では、論理式のボックスをクリックしてOR関数のダイアログボックスを表示しましょう。

OR関数は、名前ボックスの▼をクリックしてその一覧の中にあればクリックしましょう。

なんで、ネストにすると、論理式4が飛び出しちゃうんだか??
論理式には、それぞれ、先ほどもやりましたように、
論理式1には、G5>=80。
論理式2には、H5>=80。
と入力をして、OKボタンをクリックすると完成します。

条件数が増えれば増えるほど、IF関数だけでは煩雑になるので、
OR関数の有効性を確認することが出来ますね。

機会があれば是非、使ってみましょう。