エクセルのVBAについて質問です。


IF文を使ってセルに書いてある情報によって出力を4通りに分けたいと考えています。

まずデータが入力されているセル(データ判定のセル)に S という文字が含まれていた場合 IF文が書いてあるセルにはSと出力されます。
次にデータが入力されているセル(データ判定のセル)に M という文字が含まれていた場合 IF文が書いてあるセルにはMと出力されます。
次にデータが入力されているセル(データ判定のセル)に L という文字が含まれていた場合 IF文が書いてあるセルにはLと出力されます。
それ以外の場合 IF文が書いてあるところに-(横線)と出力されます。

上記のように出力されるIF文を書いていただいてよろしいでしょうか。

お手数をおかけしますがよろしくお願いします。

回答の条件
  • 1人2回まで
  • 登録:2009/06/09 20:01:36
  • 終了:2009/06/16 20:05:02

ベストアンサー

id:pahoo No.1

pahoo回答回数5960ベストアンサー獲得回数6332009/06/09 20:14:46

ポイント23pt

VBA ではなく、Excel関数を使った方法をお求めではないでしょうか?


だとすると、目的のセルに下記のような関数を書けばいいでしょう。

=IF(ISERROR(FIND("S",データ判定セル))=FALSE,"S",IF(ISERROR(FIND("M",データ判定セル))=FALSE,"M",IF(ISERROR(FIND("L",データ判定セル))=FALSE,"L","-")))

なお、データ判定セルに S, M, L が混在していた場合、S>M>L の優先順位で表示します。

id:aiomock

ご回答ありがとうございます。

2009/06/13 20:02:52

その他の回答(3件)

id:pahoo No.1

pahoo回答回数5960ベストアンサー獲得回数6332009/06/09 20:14:46ここでベストアンサー

ポイント23pt

VBA ではなく、Excel関数を使った方法をお求めではないでしょうか?


だとすると、目的のセルに下記のような関数を書けばいいでしょう。

=IF(ISERROR(FIND("S",データ判定セル))=FALSE,"S",IF(ISERROR(FIND("M",データ判定セル))=FALSE,"M",IF(ISERROR(FIND("L",データ判定セル))=FALSE,"L","-")))

なお、データ判定セルに S, M, L が混在していた場合、S>M>L の優先順位で表示します。

id:aiomock

ご回答ありがとうございます。

2009/06/13 20:02:52
id:van-dine No.2

van-dine回答回数108ベストアンサー獲得回数112009/06/09 22:51:30

ポイント23pt
Function Judge(R As Range) As String 'R:判定用セル
  If InStr(1, R.Value, "L") <> 0 Then
    Judge = "L"
  ElseIf InStr(1, R.Value, "M") <> 0 Then
    Judge = "M"
  ElseIf InStr(1, R.Value, "S") <> 0 Then
    Judge = "S"
  Else
    Judge = "-"
  End If
End Function

これでいけると思います。

id:aiomock

ご回答ありがとうございます。

2009/06/13 20:02:55
id:lowstar No.3

lowstar回答回数11ベストアンサー獲得回数12009/06/09 22:52:07

ポイント22pt

VBAを使った方法ですと、標準モジュールにユーザ関数を作成する方法が簡単かと思います。

ユーザ関数とは、sumなどの関数ようにシートで使える関数を自作できる機能です。

ユーザ関数は、ALT+F11で表示されるVBAエディタにコードを追加します。

ユーザ関数がエクセルブック内のどこでも使用できるようにするには、標準モジュール内にコードを書けばいいです。

VBAエディタの標準モジュールを右クリックして、挿入→標準モジュールと操作すると、Module1が作成されます。

そこに下記のコードをコピー&ペーストで書き込んでみてください。

■標準モジュール(Module1)のVBAコード

Function SML(セル As Range)

SML = "-"

If InStr(セル, "S") Then SML = "S"

If InStr(セル, "M") Then SML = "M"

If InStr(セル, "L") Then SML = "L"

End Function

■シート側での使い方

データが入力されているセル(データ判定のセル)を"B1"、IF文が書いてあるセルを"C1"とした場合、

C1セルに

=SML(B1)

と書けば、B1の内容に応じて、"S"か"L"か"M"か"-"の結果が表示されます。

エクセルの標準関数のように扱えるので便利かと思います。

id:aiomock

ご回答ありがとうございます。

2009/06/13 20:02:58
id:HALSPECIAL No.4

HALSPECIAL回答回数407ベストアンサー獲得回数862009/06/10 23:28:30

ポイント22pt

A1にデータ

B1に数式(IF文)

の場合


=IF(ISERROR(FIND("S",A1)),
 IF(ISERROR(FIND("M",A1)),
 IF(ISERROR(FIND("L",A1)),"-","L"),"M"),"S")

になります。

id:aiomock

ご回答ありがとうございます。

2009/06/13 20:03:01
  • id:taknt
    たとえば

    sdwdS
    という内容のときは
    -S
    となればいいんだよね?

    SMLaだったら
    SML-
    かな。
  • id:aiomock
    ご回答ありがとうございます。

    sdwdS のときはS

    SMLaだったら

    SML

    で大丈夫です。

    しかしもし可能であれば最後のLだけ表示していただきたいです。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません