エクセルで、例えばA列にたくさんの品物の品番が入力されているとします。

B列に、A列の品番が「V」で始まっていたら「1」、「Z」で始まっていたら「2」・・・というように条件をつけてIF関数を設定したいのですが、IF関数は、「○○で始まったら□□」という設定はできないのでしたか?

できないとしたら、他に方法はないでしょうか。
パソコンは苦手な人から聞かれているので、難しくない方法がいいのですが・・・。

よろしくお願いします。

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

A 回答 (5件)

>A列の品番が「V」で始まっていたら「1」、「Z」で始まっていたら「2」・・・



この条件はいくつぐらいあるのでしょう?
そんなに多くないならIFでもいいですが。
方法としては
IF(LEFT(A1)="V",1,…)
という感じになります。
    • good
    • 0
この回答へのお礼

なるほど!これなら簡単ですね。
ありがとうございました。

お礼日時:2003/11/01 09:55

VLOOKUP関数でもできますよ



B2のセルの式
=VLOOKUP(A2,$D$2:$E$5,2,TRUE)
D列にV,Z.....
E列に1,2.....
ともに2行目からデータを入れて
後はB2の式を下にコピーで可能かと思います。
    • good
    • 0
この回答へのお礼

ありがとうございます。
みなさん素早いご回答で、本当に助かりました。早速、実践してみたいと思います。

お礼日時:2003/11/01 10:05

条件が多数(数個なら#1の回答が一番いいと思います)の場合と想定して考えました。



シートのどこかに、
たとえば、
E列に条件(VとかZ)
F列に結果(1とか2)
の一覧リストを作り、
B1には
=vlookup(left(a1,1),$e$1:$F$20,2,0)
(条件が20種類の場合)
以下にコピペ

でできると思います。
    • good
    • 0
この回答へのお礼

ありがとうございます。
今回は条件が少ないので、簡単に行こうと思います。
教えていただいた方法は、条件が多いときに役立てたいと思います。
ありがとうございました。

お礼日時:2003/11/01 10:03

=IF(LEFT(A1,1)="V",1,IF(LEFT(A1,1)="Z",2,""))


とIF関数を入れ子にします。
LEFT関数の2番目の1は省略可能です。
C列にA列の1文字目(=LEFT(A1))を入れて、別シートに1文字目と数値との対応表を作って、VLOOKUPで拾ってくると言う方法もあります。
ヘルプでVLOOKUPを検索してみてください。
    • good
    • 0
この回答へのお礼

みなさんLEFT関数とのネストするというご意見が大半ですね。VLOOKUPはたぶんやりやすいと思うのですが、ちょっとこの場合、会社で使う文書のため、勝手にシートを増やしたりはできないらしく、悩んでいました(^_-)。
LEFT関数で行きたいと思います♪ありがとうございました。

お礼日時:2003/11/01 10:01

こんにちは。



条件が少数ならば、IF分をネストすれば簡単です。

=IF(LEFT(品番,1)="V",1,IF(LEFT(品番,1)="Z",2,""))

条件が多数あり、□□が1から順番どおりなら、FIND関数が簡単です。
(例ですと、Vが1、Zが2、Aが3、Bが4となります。)

=FIND(LEFT(品番,1),"VZAB")
    • good
    • 0
この回答へのお礼

FIND関数は使ったことがなかったのですが、こういう使い方ができるのですね。
勉強になりました、ありがとうございました。

お礼日時:2003/11/01 09:57

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

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

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

QエクセルではIF関数なのにアクセスではIIF関数?

なぜエクセルではIF関数なのにアクセスではIIF関数?

IF関数はアクセスではIIF関数になりますが、
なぜ「I」が増えるのでしょうか?

またIF関数はイフ関数と読みますが
IIF関数は「イイフ」関数と読めばいいのでしょうか?

よろしくお願い致します。

Aベストアンサー

>エクセルではIF関数なのにアクセスではIIF
アクセスでも、形だけについて言えば(関数とステートメントの違いはあるが形だけで言うと)
・クエリのグリッドで使う場合と
・VBAのモジュールで使う場合と
・アクセスのSQL文でどうか
あります。
アクセスでもVBAではIFは使えます。
クエリのグリッドではIFは使えないようだ(「式に未定義関数Ifがあります」、のエラー)。
SQLではIF,IIFは使えません。
http://bbs.wankuma.com/index.cgi?mode=al2&namber=14014&KLOG=29
エクセル関数にも、IIF関数が増えたかと思ったが、まだ増えてないようだ。
エクセルでもVBAではIifが使えます。
伝統的にIIFがアクセスの方で設けられている。理由は聞いても誰にもわからないのではないか。
ーー
読み方は、ここに質問するより、Googleなどで照会するのが良い。
(こういう一般的な質問は、ここよりGoogleなどの照会のほうが良い。)
「iif 読み方」で照会。
「アイイフ」が多いようだ。
http://barbwire.blog49.fc2.com/blog-entry-43.html ほか

>エクセルではIF関数なのにアクセスではIIF
アクセスでも、形だけについて言えば(関数とステートメントの違いはあるが形だけで言うと)
・クエリのグリッドで使う場合と
・VBAのモジュールで使う場合と
・アクセスのSQL文でどうか
あります。
アクセスでもVBAではIFは使えます。
クエリのグリッドではIFは使えないようだ(「式に未定義関数Ifがあります」、のエラー)。
SQLではIF,IIFは使えません。
http://bbs.wankuma.com/index.cgi?mode=al2&namber=14014&KLOG=29
エクセル関数に...続きを読む

QExcel2013 VBA A列とB列の文字をA列とB列とC列に移動させる方法

A列とB列に文字が入っているのですが、下記のようにA列とB列とC列に文字を移動させたいです。
(A列の数字は必ず奇数のA列に入っています。)
VBAのコードを教えて下さい。

例えば
A1 1  B1 cat
A2 空白 B2 猫
A3 空白 B3 dog
A4 空白 B4 犬
A5 2  B5 whale
A6 空白 B6 クジラ
A7 3  B7 rabbit
A8 空白 B8 ウサギ

とデータがある場合

A1 1  B1 cat  C1 猫
A2 空白 B2 dog  C2 犬
A3 2  B3 whale  C3 クジラ
A4 3  B4 rabbit C4 ウサギ

としたいです。

実際、データは、A5196まであります。

Aベストアンサー

No.1です。

>実際、データは、A5196まであります。

前回のコードは一つずつカット&ペーストしていますので
かなりの時間を要すると思います。
↓のコードに変更してみてください。

Sub Sample2()
Dim lastRow As Long
lastRow = Cells(Rows.Count, "B").End(xlUp).Row
Application.ScreenUpdating = False
With Range(Cells(1, "C"), Cells(lastRow, "C"))
.Formula = "=IF(MOD(ROW(),2)=1,B2,"""")"
.Value = .Value
.SpecialCells(xlCellTypeBlanks).EntireRow.Delete
End With
Application.ScreenUpdating = True
MsgBox "完了"
End Sub

少しは短縮できると思います。m(_ _)m

No.1です。

>実際、データは、A5196まであります。

前回のコードは一つずつカット&ペーストしていますので
かなりの時間を要すると思います。
↓のコードに変更してみてください。

Sub Sample2()
Dim lastRow As Long
lastRow = Cells(Rows.Count, "B").End(xlUp).Row
Application.ScreenUpdating = False
With Range(Cells(1, "C"), Cells(lastRow, "C"))
.Formula = "=IF(MOD(ROW(),2)=1,B2,"""")"
.Value = .Value
.SpecialCells(xlCellTypeB...続きを読む

QエクセルIF関数について

エクセルIF関数について

お世話になっております。エクセルのIF関数について教えてください。

例えばA1に任意で入力する数字があるとします。
このA1の数字が4以下なら○、10以上なら×、5-9の間なら何も表示しないというような関数を組みたいのですが、どなたか教えていただけないでしょうか?

たぶん、IF関数だと思いますが、もし違うならその関数を教えてください。
よろしくお願いします。

Aベストアンサー

=IF(A1<=4,"○",IF(A1>=10,"×",""))

QExcel関数  A列の値とC列の値の間であればD列の値が抽出される関数

いつもお世話になっております。
F1にある数値を入れ、その数値が一覧表の中の範囲にマッチすればその数値を集計表シートのセルG1に反映したいのです。
例えば
A B C D E F G
1    1 ~ 1000  70 1200 ?
2  1001 ~ 1500  85
3  1501 ~ 2000  92
というような表があるとします。
F1に「1200」と入力するとG1には「85」と出るようにするにはG1にどのような関数を入れたらいいでしょうか。
必要があれば左の数値と~、右の数値は便宜上3列に分けて入力しています。
宜しくお願い致します。

Aベストアンサー

VLOOKUP関数でできます。

求める数値がD列にあるとします。
F1の値を $A$1:$D$3の範囲の左端の列から検索して、D列(検索範囲の4列目)の値を求めます。
セルG1に
=VLOOKUP(F1,$A$1:$D$3,4,TRUE)

一覧表を分かりやすくするために3列に分けているのだと思いますが、
値を求めるだけなら、B列、C列の「~1000」などは不要です。
B列、C列を削除して、「70,85,92・・・」をB列にしておけば
=VLOOKUP(F1,$A$1:$B$3,2,TRUE)
で求められます。

VLOOKUP関数をヘルプで参照していただくとわかると思いますが、
>TRUE を指定するか省略すると、検索値 が見つからない場合に、検索値 未満で最も大きい値が使用されます。
検索値が1200の場合、1200はA列にありませんが、1200未満でもっとも大きい値「1001」に対応する「85」が得られます。

QエクセルのIF関数について

エクセルのIF関数について

お世話になっております。
エクセルのIF関数について教えてください。
あるセルの値がエラーなら0、数値が入っているなら、その数値をそのまま表示するという
関数を作りたいのですが、どのようにすればよろしいでしょうか?

Aベストアンサー

A1セルが空の場合には空で、エラーや数値でなければ0、数値であればその値を表示するとのことでしたら次のような式にないますね。

=IF(A1="","",IF(ISNUMBER(A1),A1,0))

QA列とB列の重複を抽出したいのですがA列とB列の値は一部だけ同じ文字です。ご教示お願いします。

エクセル初心者です。重複を見つけるのが仕事です。いろいろやってみたのですがうまくできません。
お知恵をお貸しください。

A列には企業名が入力されています。
B列にも企業名が入力されていますが全く同じ文字ではないのです。

たとえばこういうことです。
A1 (有)雪見酒      B1  雪見
A2 株式会社豪雪地帯   B2 (株)豪雪地帯
A3 ゆきかき本舗     B3 (有)ゆきかき本舗

A列にある企業名とB列にある企業名が同じであればセルを塗りつぶすか○を表示させるように
したいのです。
重複を見つけるのが目的なので、ほかの方法でもかまいません。
すみません、A列のセルとB列のセルが全く同じ名前ならば重複が見つけられたのですが
ここから先がどうしてもわからないのです。。。
申し訳ありませんがどうか教えてください。。。

Aベストアンサー

No4です。以下のマクロを標準モジュールへ登録してください。
--------------------------------------------------
Option Explicit
Public Sub 重複チェック()
Dim maxrow1 As Long
Dim maxrow2 As Long
Dim row1 As Long
Dim row2 As Long
Dim nameT1() As String
Dim nameT2() As String
Dim t1, t2 As Variant
t1 = Time
maxrow1 = Cells(Rows.Count, "A").End(xlUp).row '最大行取得
maxrow2 = Cells(Rows.Count, "B").End(xlUp).row '最大行取得
ReDim nameT1(maxrow1)
ReDim nameT2(maxrow2)
Range("C1:" & "D" & maxrow2).Value = ""
Call makeTable(nameT1, "A", maxrow1)
Call makeTable(nameT2, "B", maxrow2)
For row1 = 1 To maxrow1
For row2 = 1 To maxrow2
If Cells(row2, "C") = "" Then
If Mymatch(nameT1(row1), nameT2(row2)) = True Then
Cells(row2, "C").Value = "○"
Cells(row2, "D").Value = row1
End If
End If
Next
Next
t2 = Time
MsgBox ("チェック完了 処理時間=" & Minute(t2 - t1) & "分" & Second(t2 - t1) & "秒")
End Sub
'余分な文字を削除した結果をテーブルに格納する
Private Sub makeTable(ByRef nameT() As String, ByVal col As String, ByVal maxrow As Long)
Dim row As Long
Dim ary As Variant
Dim name As String
Dim i As Long
ary = Array("㈱", "(株)", "株式", "(有)", "有限", "会社")
For row = 1 To maxrow
name = Cells(row, col).Value
For i = 0 To UBound(ary)
name = Replace(name, ary(i), "")
Next
nameT(row) = name
Next
End Sub
'企業名が一致かどうか判定する
Private Function Mymatch(ByVal name1 As String, ByVal name2 As String) As Boolean
Mymatch = False
Dim pos As Variant
pos = InStr(1, name1, name2, vbTextCompare)
If pos > 0 Then Mymatch = True
End Function
-----------------------------------------------------
一致の精度が悪ければその旨補足してください。
(一致すべきものが一致しない、一致してはいけないものが一致している)
100%解決できる保証はありませんが、多少のチューニングは行います。

No4です。以下のマクロを標準モジュールへ登録してください。
--------------------------------------------------
Option Explicit
Public Sub 重複チェック()
Dim maxrow1 As Long
Dim maxrow2 As Long
Dim row1 As Long
Dim row2 As Long
Dim nameT1() As String
Dim nameT2() As String
Dim t1, t2 As Variant
t1 = Time
maxrow1 = Cells(Rows.Count, "A").End(xlUp).row '最大行取得
maxrow2 = Cells(Rows.Count, "B").End(xlUp).row '最大行取得
ReDim ...続きを読む

QエクセルIF関数について

エクセルIF関数について

A2セルにA1セルが空白なら空白。8:00ならば、8:00。8:00>ならA3セルに(そのままの値を)表示せよ。
という関数を入れたいのですが、どの関数をどのように定義すれば良いのかわかりません。

IF関数かな?と思ったのですが、IF関数で偽のときは、「別のセルに入力せよ」などというような定義って出来るのでしょうか?

どなたか教えてください。

Aベストアンサー

関数では別のセルに値を代入する事はできませんので以下の方法になりますが如何でしょうか。
A2に=IF(A1="8:00"*1,A1,"")
A3に=IF(A1>"8:00"*1,A1,"")
因みにA2:A3は、セルの書式設定→表示形式で「時刻」から選択して下さい。

QA列とB列で文字数が少ない方をC列に表示する関数

エクセル2007を使用しています。

A列とB列に下記のように入力されている時、C列に文字数の少ない方を関数で表示させるにはどうしたらよいでしょうか?
なおかつ、A列とB列の文字数が同じ場合はA列の文字を表示させたいです。

A列       B列       C列
リンゴ     オレンジ     リンゴ
あいうえお   ABC       ABC
時計       帽子      時計

よろしくお願いいたします。

Aベストアンサー

別解を添付図に
E1: {=INDEX(A1:D1,MATCH(MIN(LEN(A1:D1)),LEN(A1:D1),0))}
  (配列数式)

Qエクセル IF関数で質問です。

エクセル IF関数で質問です。

教えてください。下記の式はどういう意味ですか?
=IF(I38=0,"",SUM(C38:I38)/$B$38)

なかなかIF関数が覚えられません。簡単に理解できる方法はありませんか?

IFを入力するときにみなさんはどうイメージしてますか?

アドバイスください。

Aベストアンサー

>なかなかIF関数が覚えられません。

恐らく、IF 関数だけの問題ではありません。一つひとつの基礎知識の積み重ねです。この回答文を最後まで読んでみてください。

>簡単に理解できる方法はありませんか?

簡単な数式から超難解なものまで、様々なレベルがあります。お示しの数式は 2 つの関数を入れ子にしているので、最も単純な IF の使い方と比べれば、少しだけ難しくなっています。

>IFを入力するときにみなさんはどうイメージしてますか?

パソコンに最初に触れた頃は、どうだったでしょうね。今となっては、無意識です。

たまに複雑な数式を入力するときは、括弧の数が分かりづらいとかで、迷うというか時間がかかることもなくはないですが。難しくしようと思えば、幾らでも難しくなります。

基本的に私の場合は、Excel の「数式パレット」(fx ボタン)は使わずに数式をタイプすることを人にお勧めしています。数式パレットでは、数式が複雑になるほど入力しづらく、数式そのものに関する理解も進みにくいと考えているからです。「数式バー」などに直接タイプして入力していても、ヒントが適当にポップアップしてきたりします。インターネット上には、関数についての無数の情報もあります。いきなり難しい数式はムリでしょうが、だんだん色々なものを覚えていけばよいでしょう。


1.
セルに「数式」を入力するとき、先頭の「=」(今回の場合は IF の直前の「=」)は、「これから数式を記述しますよ」という Excel へのお知らせをしているのですが、それより後ろに「=」が出てくると、別な意味になります。「I38=0」のような等式あるいは不等式を「論理式」と呼んでいます。条件によっては、「I38>0」、「I38>=0」、「I38<0」、「I38<=0」、「I38<>0」が出てくることもあります。「>=」は「≧」の意味、「<>」は「≠」の意味です。

2.
論理式は、「論理値」を返します。Excel では「TRUE」、「FALSE」という 2 種類の論理値があります。I38 セルに 0 が入力されているか空白のとき、「I38=0」は TRUE に変化します。それ以外の場合は、FALSE になります。

3.
「"エクセル"」は、「エクセル」という「文字列」を数式中に混ぜるときの記述の仕方です。「""」は、「長さ 0 の文字列」です。これがセルに入力されていると、何も表示されないので見かけが空白のように見えます。私は空文字列と呼んでいることが多いのですが、最善の短い呼称は未だに分かりません。空白の文字列と言う人もいますが、厳密には空白ではないので、各種分析において「""」の存在がデメリットになるケースもあります。

4.
「C38:I38」は、「C38 セルを左上の頂点とし、I38 を右下の頂点とする長方形の『セル範囲』への『参照』」を意味する記号です。つまり C38~I38 という 1 行 7 列の範囲を参照します。

5.
SUM は、合計する関数です。その「引数」(ひきすう)にセル参照を書くと、範囲内にある「数値」を全て合計します。上の範囲であれば、「C38 の値 + D38 の値 + … + I38 の値」という計算結果の値を返します。なお、(参照で登場する場合の)文字列は「0」として合計します。SUM に限ったことではありませんが、関数が返す値(SUM であれば合計)を数式の途中に引用する場合は、その直前に「=」を付けません。しかし IF などを絡めず単にセルに合計を表示させたい場合は、「=sum(c38:i38)」と入力します。大文字/小文字の別は、多くの場合、混ぜこぜに書いても大丈夫。

6.
「/」は、数学における分数であり、「÷」でもあります。Excel ではいつも「/」と書きます。「*」は、「×」(掛け算)の意味です。「10^6」は、「10 の 6 乗」の意味です。

7.
「$B$38」は「絶対参照」、「B38」だと「相対参照」です。この違いは、参照が使われている数式(ご質問の IF の数式など)が入力されているセルを別の場所にコピペしてみるとよく分かります。貼り付けたセルの数式を見ると、相対参照では、「B」という「列番号」と「38」という「行番号」が別のものに書き換わっています。別のものというのは、参照元と参照先の相対的な位置関係を保持した番号になるということ。つまり、2 行下で 3 列右などといった、元の位置関係のことです。絶対参照では番号が書き換わらず、「$B$38」のまま固定されています。「B$38」とすると「$38」の部分のみ固定、「$B38」とすると「$B」の部分のみ固定となり、残りは書き換わります。ですから「$」は、数式をコピーするときに必要となる記号と考えればよいでしょう。コピーの中には、「オートフィル」も含まれますね。ドラッグやダブルクリックで多数のセルを埋める、あの機能です。

8.
IF は、二者択一の場合分けをする関数。第 1 引数が TRUE または非ゼロの数値であれば、第 2 引数を返します。第 1 引数が FALSE またはゼロという数値であれば、第 3 引数を返します。第 1 引数が文字列であれば、「#VALUE!」という「エラー値」を返します。

以下は、例を示します。各数式を Excel の数式バーに貼り付けるか、セルをダブルクリックして貼り付けて、結果を確かめてみてください。二つに一つの結果を選んでいるだけのことなので、実は簡単ですね?

=if(false,"エクセル","ワード")
=if(-1.2,"エクセル","ワード")
=if(0,"エクセル","ワード")
=if(,"エクセル","ワード")  ……「0」の省略

A1、B1 セルに入力されている値によって結果が変わる
=if(a1-b1,"エクセル","ワード")
=if(a1-b1>0,"エクセル","ワード")
=if(a1-b1>0,12,-0.3)
=if(a1-b1>0,a1-b1,a1)
=if(a1-b1>0,sum(a1:b1),sum(a1:b1)^2)
=a1+if(b1>0,b1,0)

>なかなかIF関数が覚えられません。

恐らく、IF 関数だけの問題ではありません。一つひとつの基礎知識の積み重ねです。この回答文を最後まで読んでみてください。

>簡単に理解できる方法はありませんか?

簡単な数式から超難解なものまで、様々なレベルがあります。お示しの数式は 2 つの関数を入れ子にしているので、最も単純な IF の使い方と比べれば、少しだけ難しくなっています。

>IFを入力するときにみなさんはどうイメージしてますか?

パソコンに最初に触れた頃は、どうだったでしょうね。今となっ...続きを読む

Qエクセルの関数を教えて下さい。 例 シート3 11月の売上集計 A 列 B列 C列 D列 1行 い

エクセルの関数を教えて下さい。

例 シート3 11月の売上集計
A 列 B列 C列 D列
1行 い ろ は
2行 りんご 3 2 4‥
3行 累計 15 12 13‥
4行 みかん 2 5 6‥
5行 累計 12 14 16‥
と売上の集計が続いています。
この時、2行目と4行目は手入力してます。
B3は=B2+10月シートB3となります。
C3はC2+10月シートC3となります。
5行目も同様です。
このシートをコピーして12月分を作った時、
B3は=B2+10月シートB3の10月を11月に
変更してます。
自動的に変更できる方法はないですか❓

Aベストアンサー

11月の
>シートをコピーして12月分を作った時、
>B3は=B2+10月シートB3の10月を11月に
>変更してます。
>自動的に変更できる方法はないですか❓
…と言う事ですか?
ならば月の数字をいじれば良いだけですので、CELL関数でシート名を取得して、それを加工しましょう。

 =CELL("filename",A1)
これで、このCELL関数が使われたシート名を含んだ文字列を取得できます。
 C:\Users\あさご\Documents\Excel_file\[売り上げとか.xlsx]12月の売上集計
のような値が返ってきますので、ファイル名の後ろにある「 ] 」の位置をFIND関数で見つけて、その次の文字から最後の文字までをシート名としてMID関数などで切り出し、
”月の売上集計”をSUBSTITUTE関数で削除する(空欄に置き換える)か、得られたシート名の先頭から「月」の文字の前の文字までを別途切り出す。
これで月の数字の部分を得ることができます。
あとはこの数字を足したり引いたりしてINDIRECT関数に入れて参照したいシート名にすればよいです。
1月には12月のシートを参照したいという事になるでしょうから、そのあたりも考慮して作りましょう。
(MOD関数を使うと良いかもしれない)

11月の
>シートをコピーして12月分を作った時、
>B3は=B2+10月シートB3の10月を11月に
>変更してます。
>自動的に変更できる方法はないですか❓
…と言う事ですか?
ならば月の数字をいじれば良いだけですので、CELL関数でシート名を取得して、それを加工しましょう。

 =CELL("filename",A1)
これで、このCELL関数が使われたシート名を含んだ文字列を取得できます。
 C:\Users\あさご\Documents\Excel_file\[売り上げとか.xlsx]12月の売上集計
のような値が返ってきますので、ファイル名の後ろ...続きを読む


人気Q&Aランキング

おすすめ情報