ついに夏本番!さぁ、家族でキャンプに行くぞ! >>

恐れ入ります。
仕事でエクセルを用いて文書を作成しているのですが、
知識が低い為、思う様にIF関数を使いこなせません。

具体的に申し上げますと、
A1、B1、C1の3つのセルがあります。A1には常に何らかの情報が
入っているけれど、B1に情報が入ったら、B1の情報が優先され、
C1に情報が入ったら、C1が優先される。つまり、B1とC1に情報が
無い時は、A1が優先される事になります。
また、A1には必ず何か情報が入りますが、B1・C1共に情報が入る
事はありません。

ですので考えられる組み合わせは・・・
A1のみ情報あり →A1を優先
A1とB1に情報あり→B1を優先
A1とC1に情報あり→C1を優先
となりますが、この場合はどの様な数式を入れたら良いのでしょうか?

急を要する事態の為、大変困っています。
解りづらい説明で大変申し訳ないのですが、
どなたかご教授下さいます様、お願い致します。

このQ&Aに関連する最新のQ&A

A 回答 (5件)

一例です。


=CHOOSE(1+(B1<>"")*1+(C1<>"")*2,A1,B1,C1)
    • good
    • 6

アルゴリズムの作り方がちょっと下手ですね。



A1のみ情報あり →A1を優先
A1とB1に情報あり→B1を優先
A1とC1に情報あり→C1を優先

とのことですが、最優先の条件は何ですか?
C1に情報があるかどうか、ですよね。
A1に情報があっても無くても、B1に情報があっても無くても、C1に情報があったら、C1を優先するんですよね。

であれば、
C1に情報あり→C1を優先
C1に情報なし→B1に情報あり→B1を優先
C1に情報なし→B1に情報なし→A1を優先
ということですよね。

文章混じりの式を作ると
IF(C1に情報があるかどうか,あったらC1を優先,なかったら別の条件:IF(B1に情報があるかどうか,あったらB1を優先,なかったらA1を優先))
となります。

これを計算式にすると、
IF(C1<>"",C1,IF(B1<>"",B1,A1))
となります。
    • good
    • 7

=IF(C1="",IF(B1="",A1,B1),C1)



で良いと思います。
 尚、データーが入るセルが、A1、B1、C1、D1、E1、F1、G1、H1、I1、という様に数が増えた場合でも成り立つ関数としては、

>B1・C1共に情報が入る事はありません。

という条件が必ず守られている場合であれば、次の様な関数でも良いと思います。
【入っているデーターが文字列データーの場合】
=IF(AND(B1="",C1="",D1="",E1="",F1="",G1="",H1="",I1=""),A1,B1&C1&D1&E1&F1&G1&H1&I1)

【入っているデーターが数値データーの場合】
=IF(AND(B1="",C1="",D1="",E1="",F1="",G1="",H1="",I1=""),A1,SUM(B1:I1))

 又、共にデーターが入っているセルが3個以上ある場合でも、データーが入るセルが1列に並んでいて、必ず右端に近い方のセルのデーターが優先される場合には、次の様な関数でも良いと思います。
【入っているデーターが文字列データーの場合】
=IF(A1&B1&C1&D1&E1&F1&G1&H1&I1="","",INDEX(A1:I1,MATCH("゛゜",A1:I1,-1)))

【入っているデーターが数値データーの場合】
=IF(A1&B1&C1&D1&E1&F1&G1&H1&I1="","",HLOOKUP(99^9,A1:I1,1))

【入っているデーターが数値データーと文字列データーの両方が混在している場合】
=IF(A1&B1&C1&D1&E1&F1&G1&H1&I1="","",INDEX(A1:I1,INT(LOG(1+(B1<>"")*2^1+(C1<>"")*2^2+(D1<>"")*2^3+(E1<>"")*2^4+(F1<>"")*2^5+(G1<>"")*2^6+(H1<>"")*2^7+(I1<>"")*2^8,2))+1))
    • good
    • 1

IF関数ほど素直でわかりやすいものはない。


ただネストという仕組み(書き方、考え方)があるので
Googleででも、「IF関数 ネスト」で照会して読んで考えれば済むこと。
沢山記事があるが。
http://excel.onushi.com/function/if.htm
などがよいかな。
優先順位の高いものから記述していく(考えていく)のが基本。
この質問ではB1,C1,A1、3セル何もなし(この質問ではないそうな)の順。
該当すると該当しないのツリー図を描いて、または少ない場合は2次元図を描いて頭を整理すれば良い。
例 2次元図 +入力あり -入力なし
A-+--++-+
B--+-+-++
C---+-+++
結果    ?      A      B      C      B      C      B      B
    • good
    • 1

=IF(C1<>"",C1,IF(B1<>"",B1,IF(A1<>"",A1,"")))


などのようで良いかと思います。

もし,A1などに入る「情報」の具体的な中身が「言葉の情報」で,「数値」ではない場合は,
=IF(C1<>"",C1,IF(B1<>"",B1,A1))&""
などのようにしても構いません。



なお
>A1には必ず

これが本当に本当なら
=IF(C1<>"",C1,IF(B1<>"",B1,A1))
のように一段縮小できます。
しかし通常こういった関数は,「先にずらりとコピーして並べておいて」使います。
つまり「これからA1に入れる予定のまだA1が空の行」にも,先行して数式をコピーして入れて備えておく使い方をするのが,一般的なエクセルの利用方法です。
    • good
    • 2

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qエクセルである表から優先順位をつけて値を別のセルに表示させるにはどうしたらいいですか?

エクセルで下のような表から

  |1月 |2月 |3月 |4月 |
------------------------------
A | ○ | ○ | ○ | ○ |
------------------------------
B |  |  |  |  |
------------------------------
C |  |  |  |  |
------------------------------ Aだけ○であれば
   表とは離れたセル| A | ←Aと別のセルに反映


  |1月 |2月 |3月 |4月 |
------------------------------
A | ○ |   | ○ | ○ |
------------------------------
B |  | ○ |  |  |
------------------------------
C |  |  |  |  |
------------------------------ ひとつでもBに○があれば
   表とは離れたセル| B | ←Bと別のセルに反映


  |1月 |2月 |3月 |4月 |
------------------------------
A | ○ |   | ○ |   |
------------------------------
B |  | ○ |  |  |
------------------------------
C |  |  |  | ○ |
------------------------------ ひとつでもCに○があれば
   表とは離れたセル| C | ←Cと別のセルに反映

優先順位 C>B>A

このように反映させるためには
どのような関数で設定すればよろしいでしょうか?

分かる方是非教えていただけますでしょうか?
宜しくお願い致します。

エクセルで下のような表から

  |1月 |2月 |3月 |4月 |
------------------------------
A | ○ | ○ | ○ | ○ |
------------------------------
B |  |  |  |  |
------------------------------
C |  |  |  |  |
------------------------------ Aだけ○であれば
   表とは離れたセル| A | ←Aと別のセルに反映


  |1月 |2月 |3月 |4月 |
------------------------------
A | ○ |   | ○ | ○ |
------------------------------...続きを読む

Aベストアンサー

No2.です。
ごめんなさい、余計なゴミが入っていました。正しくは↓です。

=IF(MAX(A2:A4)=0,"なし",INDIRECT("B"&MAX(A2:A4)))

QエクセルのIF関数で、文字が入力されていたならば~

エクセルのIF関数で文字が入力されていたならば~、という論理式を組み立てたいと思っています。

=IF(A1="『どんな文字でも』","",+B1-C1)

A1セルに『どんな文字でも』入っていたならば、空白に。
文字が入っていなければB1セルからC1セルを引く、という状態です。

この『どんな文字でも』の部分に何を入れればいいのか教えてください。

またIF関数以外でも同様のことができれば構いません。

宜しくお願いします。

Aベストアンサー

=IF(ISTEXT(A1),"",B1-C1)

でどうでしょうか?

QExcel関数(通常はA列優先で、0の時はB列)

A列とB列に任意の数値が並んでいます。C列にはA列の数値を優先で表示したい。しかし、A列の数値が0(ゼロ)の場合はB列の数値を表示したいと思っています。どうしたらよいか、何方か教えください。よろしくお願いいたします。

Aベストアンサー

こんにちは。maruru01です。

A1~とB1~に数値がある場合、C1に、

=IF(A1=0,B1,A1)

と入力して、下の行へコピーします。
この場合、A列が未入力の場合は、B列の値が表示されます。
A列が未入力の場合、A列を優先(つまりC列は空白)するなら、

=IF(LEN(A1),IF(A1=0,B1,A1),"")

です。

Qエクセルで、条件に一致した行を別のセルに抜き出す方法

エクセルで、指定した条件に一致するセルを含む行をすべて抜き出す方法が知りたいです。

たとえば、

<A列> <B列> <C列>
7/1 りんご 100円
7/2 ぶどう 200円
7/2 すいか 300円
7/3 みかん 100円

このような表があって、100円を含む行をそのままの形で、
別のセル(同じシート内)に抜き出したいのですが。

7/1 りんご 100円
7/3 みかん 100円

抽出するだけならオートフィルターでもできますが、
抽出結果を自動的に、別の場所に、常に表示させておきたいのです。

初歩的な質問だと思いますが、検索しても分からなかったので、よろしくお願いします。

Aベストアンサー

同じ質問が結構よく出てますが、そんなに初歩的でもありません
別シートのA1セルに「100円」と入力し、そのシートの任意のセルに以下の式を貼り付けて下さい。後は、下方向、右方向にコピー。
日付のセル書式は「日付」形式に再設定してください

=IF(COUNTIF(Sheet1!$C:$C,$A$1)>=ROW(A1),INDEX(Sheet1!A:A,LARGE(INDEX((Sheet1!$C$1:$C$500=$A$1)*ROW(Sheet1!$C$1:$C$500),),COUNTIF(Sheet1!$C:$C,$A$1)-ROW(A1)+1)),"")

データ範囲は500行までとしていますが、必要に応じて変更して下さい

QIF関数を使って3つ以上のある範囲内の条件を満たす場合「A」などと入力

IF関数を使って3つ以上のある範囲内の条件を満たす場合「A」などと入力したいです。

たとえば
100以上110以下はA
110以上120以下はB
120以上ならC

=IF(F3=100<110,"A",IF(F3=110<120,"B",IF(F3=120<???,"C")))

こんな感じでしょうか?
よろしく教えてください。

Aベストアンサー

参考までに。

大きい数値あるいは小さい数値から絞り込む方法ではなく、F3が100以上110未満という限定条件の数式にする場合は(これ数式ならIF関数の順に関係されない)、以下のようにAND関数を利用します。

=IF(AND(F3>=100,F3<110),"A",IF(AND(F3>=110,F3<120),"B",IF(F3>120,"C","100未満")))

Qエクセルで条件に一致したセルの隣のセルを取得したい

下のような「得点」という名前のシートがあります。
(「田中」のセルがA1です。)

 [ 田中 ][ 10 ][ 200 ]
 [ 山田 ][ 21 ][ 150 ]
 [ 佐藤 ][ 76 ][ 250 ]
 [ 鈴木 ][ 53 ][ 350 ]

別のシートのA1セルに、「佐藤」と入力すると、

 [ 佐藤 ]

「得点」シートから「佐藤」の列を見つけて、B1、C1に

 [ 佐藤 ][ 76 ][ 250 ]

のように表示させたいのですが、B1、C1にはどのような式を書けば良いのでしょうか。
「得点」シートでは氏名が重複する事はありません。
IF文を使うと思うのですが、いまいち良く分かりませんでした。

よろしくおねがい致します。

Aベストアンサー

こんにちは!
VLOOKUP関数で対応できます。
IF関数と併用すればエラー処理が可能です。

Excel2007以降のバージョンであれば
B1セルに
=IFERROR(VLOOKUP($A1,得点!$A:$C,COLUMN(B1),0),"")
としてC1セルまでオートフィルでコピー!
そのまま下へコピーすると行が2行目以降でも対応できます。

Excel2003までの場合は
=IF($A1="","",VLOOKUP($A1,得点!$A:$C,COLUMN(B1),0))

としてみてください、m(_ _)m

Qある範囲のセルから任意の値を検索して、その隣のセルの値を取得するという関数はありますか?

Excelの関数について質問します。
ある範囲のせるを検索して、その隣のセルの値を取得するという関数を探しています。
なければユーザー定義で作りたいと思っています。
VLOOKUP関数では一番左端が検索されますが、
それをある範囲まで拡張して、
その右隣の値を取得できるようにしたいのです。
どうかお知恵をお貸しください。

Aベストアンサー

●X1セルの値を範囲A1:F200の中から探して、その右隣のセルの値を返す

 =OFFSET(A1,SUMPRODUCT(ROW(A1:F200)*(A1:F200=X1))-1,SUMPRODUCT(COLUMN(A1:F200)*(A1:F200=X1)))

※最初のA1はワークシートの左上隅を示すものなので、検索範囲に関わらずA1固定
※SUMPRODUCT(ROW(A1:F200)*(A1:F200=X1)) ⇒ A1:F200で値がX1と一致するセルの行番号

>その「ある範囲」の中には検索したい値が入っているセルは1つしかありません。
というのが前提です。複数のセルがHITすると関係ないセルの値が返るので、
場合によっては、IFをかぶせてCOUNTIFで確認した方が良いかもしれません。
 ex. =IF(COUNTIF(A1:F200,X1)=1,【上記数式】,"えらー")

ちなみに、VBAでやるならこんな感じになるかと。

動作の概要
 【検査範囲】から【検査値】を探し、
 最初にHITしたセルについて、右隣のセルの値を返す。
 ex. =Sample(X1,A1:F200)

'--------------------------↓ココカラ↓--------------------------
Function Sample(ByVal 検査値 As Variant,ByVal 検査範囲 As Range)
 For Each セル In 検査範囲
  If セル = 検査値 Then Exit For
 Next セル
 Sample = セル.Offset(0, 1)
End Function
'--------------------------↑ココマデ↑--------------------------

いずれもExcel2003で動作確認済。
以上ご参考まで。

●X1セルの値を範囲A1:F200の中から探して、その右隣のセルの値を返す

 =OFFSET(A1,SUMPRODUCT(ROW(A1:F200)*(A1:F200=X1))-1,SUMPRODUCT(COLUMN(A1:F200)*(A1:F200=X1)))

※最初のA1はワークシートの左上隅を示すものなので、検索範囲に関わらずA1固定
※SUMPRODUCT(ROW(A1:F200)*(A1:F200=X1)) ⇒ A1:F200で値がX1と一致するセルの行番号

>その「ある範囲」の中には検索したい値が入っているセルは1つしかありません。
というのが前提です。複数のセルがHITすると関係ないセルの値が返るので、
場...続きを読む

Qエクセルで打ち込んだ数字を自動で別シートに表示したい

エクセルでセルに打ち込んだ数字を自動で別シートに表示できる方法があれば、教えてください。

例えば、シート1のC1に5を打ち込んだら、シート2のD2にシート1で打ち込んだ5が自動で表示される。

また1列すべてを自動で表示させる場合、一つのセルの時と違いがありましたら教えてください。よろしくお願いします。

Aベストアンサー

こんばんは。
入力したセルの値を合計とかでなくて、
純粋に別のシートに自動的に表示したいのであれば、
以下の方法があります。

1.1つのセルだけの場合
例)シート1のC1に5を打ち込んだら、
  シート2のD2にシート1で打ち込んだ5が自動で表示される

⇒シート2のD2のセルをアクティブにして「=」を入力
 した後、シート1のC1をクリックする。
 そうするとD2のセルに「=Sheet1!C1」と表示され、値が自動的に
 表示されるようになります。

2.1列全てコピーしたい場合。
  コピー&リンク貼り付けを使うと便利です。

例)例)シート1のC1~C5に何かを入力したら、
  シート2のD2~D7にシート1で打ち込んだものが自動で表示される

  シート1にあるコピー元のセルを範囲選択して、
  シート2のD2の上で「右クリック」⇒「形式を選択して貼り付け」
  をクリックします。

  そして出てきた小さな画面の左下にある「リンク貼り付け」という
  ボタンをクリックすると完成です。
  試してみてください。。

  念のためにリンク貼り付けを図解しているURLを載せておきます。
  参考にしてみてくださいね。。
  http://www.geocities.jp/office_inoue/excel/eq21.htm

こんばんは。
入力したセルの値を合計とかでなくて、
純粋に別のシートに自動的に表示したいのであれば、
以下の方法があります。

1.1つのセルだけの場合
例)シート1のC1に5を打ち込んだら、
  シート2のD2にシート1で打ち込んだ5が自動で表示される

⇒シート2のD2のセルをアクティブにして「=」を入力
 した後、シート1のC1をクリックする。
 そうするとD2のセルに「=Sheet1!C1」と表示され、値が自動的に
 表示されるようになります。

2.1列全てコピーしたい場合。
  コ...続きを読む

Q【エクセル】指定したセルに入力することで、別の特定のセルに決まった文字を表示させるには?

社用データを作る際の手間を省こうとしたのに、かえって難しくなってしまいました(-"-;)
分かりにくい質問で恐縮ですが、よろしくお願いします。

現在Excel2003を使っています。
「指定したセルに文字・数字問わず入力があった場合、特定のセルに特定の文字を表示させる数式(または方法)」は無いでしょうか。
(できれば指定したセルに入力が無い限り、特定文字を表示させるセルは非表示のままにしたいと思っています)

例えば、「A1のセルに『○田×男(人名など)』と入力した時、B1のセルに『様』と表記させる」と言った具合です。
(このとき、A1に入力が無ければB1も空白のままにしておきたいのです)

手動で入力した方が早そうな気もしますが、応用次第で他の表や作業もスッキリしそうなので、手があれば是非ご教授下さい。

Aベストアンサー

間違えました。

B1 に
=IF(A1="","","様")

でした。

Q【エクセル】IF関数  AまたはBならばCと表示

引き続き、お世話になります。

IF関数の使い方について教えてください。

A1セルが「1」ならば B1セルに「●」を表示 ←これは出来ます。

A1せるが「1」または「6」ならば B1セルに「●」を表示←これができません。

ANDを組み合わせるのですよね???
どのようにすればいいか、ご存じの方教えてください。

Aベストアンサー

B1のセルに、以下の数式を入力します。

=IF(OR(A1=1,A1=6),"●","")


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング