• ベストアンサー

複数のセルを判定して、入力値を決めるマクロ

エクセルで下記の様なマクロを組みたいのですが、どのようにすればよいでしょうか。 まず、下記のようにセルが4つあります。  ----------------------- |  1  |  2  |  3  |  4  |  ----------------------- セル1,2,3にはA,B,Cの文字が手動で入力されます。 (全てAという場合もあり、重複可です) セル1,2,3に入力された文字を判定してセル4にs,a,b,cという文字を自動的に表示させたいのです。 セル4に表示させる為の条件は、 セル1がAの場合 セC bbb ルB abb ←ここがセル4に表示される文字です 2A sab    ABC    セル3 セル1がBの場合  ・  ・  ・ といった感じです。

質問者が選んだベストアンサー

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.5

E1:F22に表を作る H列は評価記号(s,a,b,cのどれか)をセットする。 ルールが質問から割り出せなかったので、済みません便宜的に数字にした。 (E列)(F列) AAA 1 BBB 2 CCC 3 ABA 4 BAA 5 AAB 6 ACA 7 CAA 8 AAC 9 BAB 10 ABB 11 BBA 12 BCB 13 CBB 14 BBC 15 CAC 16 ACC 17 CCA 18 CBC 19 BCC 20 CCB 21 ABC   22 組み合わせはこれ以外はないと思いますがチェックよろしく。 (関数式) D1に=IF(OR(A1="",B1="",C1=""),"",VLOOKUP(A1&B1&C1,$E$1:$F$22,2,FALSE)) といれ、入力予定行まで複写する。

その他の回答 (7)

  • papayuka
  • ベストアンサー率45% (1388/3066)
回答No.8

ご質問がマクロって事で、ユーザー定義関数で考えてみました。 セルD1 に =Hantei(A1,B1,C1) って感じで使います。 既に回答が出ているように、シートに対比テーブルを作れば既存の VLOOKUP関数で問題なく出来ますので、自分で書いておいて何ですが はっきり言ってお薦めしません。、、、(^^; Function Hantei(r1 As Range, r2 As Range, r3 As Range) As String Dim s, list(2, 2), i As Integer, j As Integer, cnt As Integer 'Application.Volatile '自動再計算をするか On Error GoTo ER:  Select Case UCase(r1.Value)  Case "A"   s = Array("S", "A", "B", "A", "B", "B", "B", "B", "B")  Case "B"   s = Array("A", "B", "B", "A", "B", "C", "B", "C", "C")  Case "C"   s = Array("B", "C", "C", "B", "C", "C", "C", "C", "C")  End Select  cnt = 0  For i = 0 To 2    For j = 0 To 2      list(i, j) = s(cnt)      cnt = cnt + 1    Next j  Next i  i = Asc(UCase(r2.Value)) - 65  j = Asc(UCase(r3.Value)) - 65  Hantei = list(i, j)  Exit Function ER: End Function

  • snoopy64
  • ベストアンサー率42% (337/793)
回答No.7

補足ありがとうございます。 Sheet2に以下のテーブルを作成します。 A列 B列 AAA S AAB A AAC B ABA A ABB B ABC B ACA B ACB B ACC B BAA A BAB B BAC B BBA A BBB B BBC C BCA B BCB C BCC C CAA B CAB C CAC C CBA B CBB C CBC C CCA C CCB C CCC C で、セル4(Sheet1のD1とします)に、 =VLOOKUP(A1&B1&C1,Sheet2!$A:$B,2,0) こんな感じでイケるのではないでしょうか。 頑張ってくださいヽ(^。^)ノ

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.6

例えば、セル1,2,3,4がA1,B1,C1,D1の時で セル1がAの場合 =INDEX({"B","B","B";"A","B","B";"S","A","B"},FIND(B1,"CBA"),FIND(C1,"ABC")) の様にそのままに近い感じで書けます。 あとは、セル1を使って =CHOOSE(FIND(A1,"ABC"),Aの場合,Bの場合,Cの場合) と組み合わせて書けばいいですね。 見苦しくなるのでわけて書きました。

  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.4

こんにちは。maruru01です。 やはり、数式で出来ますが、規則性がないなら、どこかに一覧表を作成して、それを参照するのがいいと思います。 何か規則性、例えば、 Aが3つ→"s" Aが2つ、Bが1つ→"a" ・・・ という風にあれば、それを元に数式を組み立てられます。 その場合は、全部の組み合わせを提示して下さい。

回答No.3

#1さんが書いておられるとおり、マクロじゃなくて、関数でできます。 条件がわかりませんので、ご希望のものかどうかわかりません。 =IF(AND(A1="A",B1="A",C1="A"), "s", IF(OR(AND(A1="A",B1="A",C1="B"), AND(A1="A",B1="B",C1="A"),AND(A1="B",B1="A",C1="A")),"a",IF(OR(A1="A",B1="A",C1="A"),"b","c"))

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.2

条件がよくわからないんですけど

  • snoopy64
  • ベストアンサー率42% (337/793)
回答No.1

法則が見えないんですけど・・・ 要するに、場合分けの式をセル4に書きたいんですよね? 場合分けに使える関数の一つに「IF」があります。 =IF(条件,真の場合,負の場合) って感じです。例えば =IF(A1="A","Aです","Aじゃないです") というふうに使います。 頑張ってくださいヽ(^。^)ノ

smilepick
質問者

補足

条件はマトリックスで書いたつもりだったんですが、 分かりにくかったようですね。スイマセン。 条件の所だけもう一度書くと セル1がAの場合     -----   C|B|B|B| セ  |-----| ル B|A|B|B| 2  |-----|   A|S|A|B|     -----     A B C      セル3 セル1がBの場合     -----   C|B|C|C| セ  |-----| ル B|A|B|C| 2  |-----|   A|A|B|B|     -----     A B C      セル3 セル1がCの場合     -----   C|C|C|C| セ  |-----| ル B|B|C|C| 2  |-----|   A|B|C|C|     -----     A B C      セル3 となります。 例を出すと、セル1にA,2にB,3にAが入力されると 上記マトリックスから、セル4にはAが自動で入力されることになります。

関連するQ&A

  • Excelマクロ 入力の有無を判定するマクロを組みたい

    はじめまして。 マクロの初心者です。 エクセルマクロを利用して、セルに何か入力(文字でも数値でも)がある場合の判定をしたいのですが、うまくいきません。 具体的には、 ・(A1セルが空白で)B1からC10セル(10個のセル)のいずれかのセルに何か入力された場合 → D1セルに"○"を出力。 ・(A1セルが空白で)B1からC10セル(10個のセル)のいずれかのセルに何も入力がない場合 → D1セルは"(空白)"。 ・但し、大前提として、A1セルに"×"が入力されている場合 → D1セルに"×"を出力。 (B1からC10セル(10個のセル)のいずれかのセルに何か入力されている場合でも、A1セルが"×"ならばD1セルは"×"とする) としたうえで、同様の判定を ・A11セルおよびB11からC20を判定しD11セルに結果を出力、 ・A21セルおよびB21からC30を判定しD21セルに結果を出力、 … と繰り返して、A100セルまで実行させたいと考えています。 (D1、D11、D21、D31、D41、D51、D61、D71、D81、D91の10個のセルに"○"、"×"、"(空白)"の結果を出力したいです) 過去の投稿や解説書などを参照にしているのですが、なにぶん本当に初心者のためうまくいきません、、、 どなたかお力添えをお願いします。

  • セルに入力されている文字をくっつけたい。

    エクセル2010です。 よろしくおねがいします。 セルE15~E23に入力されている文字を ひとつにくっつけて 表示したいんですが・・・ 全部文字が入力されているときも あるのですが 入力がないときまあります。 その場合は D1には 何も表示しないようにしたいのです。 例えば E15にA       E16にB      E17にC  E18~E23は入力なしとして D1に ※文字です。→A・B・C と 一つのセルに表示させるには どういう関数になりますでしょうか? よろしくお願いします。

  • エクセルで複数セルの同時入力?

    タイトルが適切かどうかわかりませんが、このような場合どうしたらよろしいでしょうか? A1に2、A2に3という数値が入力されていて B1に ="=A1+A2" と入力されています。 B1には当然 =A1+B1 と表示されますが、 このB1をコピーしてC1に「形式を選択して貼り付け」で「値」を貼り付けたとき、貼り付け直後C1は =A1+B1 と表示してますが、一度入力状態にすると計算して 5 と表示します。 C1のようなセルがひとつなら簡単ですが 複数のセルの場合ひとつひとつ入力状態にするのが 大変です。いちどに複数のセルを入力状態にするにはどうしたらいいのでしょうか? よろしくお願いします。

  • 入力規則について(複数セルへの反映)

    EXCELの入力規則について教えてください。 まず下記のような表を作成しました…      A   B      1  AAA  111    2  BBB  222    3  CCC  333   この表のA列を利用して、入力規則によるリスト作成を行いました。 プルダウンリストには「AAA・BBB・CCC」が表示されます。 この際、「AAA」を選択すると、その横のセルにB列の「111」 「BBB」を選択すると、その横に「222」が自動入力されるような 設定は可能なのでしょうか。 お分かりになる方がいらっしゃいましたらぜひご指導下さい。 宜しくお願い致します!

  • セルの指定方法

    セルに入力されている値で、セルを指定したいのです。 たとえば セルA1に"ABC"、A2には"DEF"という文字列が入ってるとします。 B1のセルは手動で入力します。 セルC1に何か式を入れて、セルB1にA1と入力したら"ABC"、A2と入力したら"DEF"と表示するようにしたいのです。 説明がうまくできなくて住みませんがよろしくお願いします。

  • エクセルでセルに入力されている特定の文字を数える関数はありませんか

    エクセルでセルに入力されている特定の文字を数える関数を探しています。 例えばセルに AAABCC ABC AA と入力されていたら別のセルの表に A B C 3 1 2 1 1 1 2 0 0 と表示させたいのですが。 何か方法はありますでしょうか。

  • (2つのセルに入力されている文字を、ひとつのセルに表示したい

     A1のセルに「あいうえお」B2のセルに「かきくけこ」と入力されているとします。  A1とB2、別々のセルに書かれている文字を、C1のセルに「あいうえおかきくけこ」と、まとめて表示させたいのですが、何かいい方法はありますでしょうか?

  • ひとつのセルに対して

    複数の書式設定がうまくできません。たとえば、A1がB1を参照しているとしたとき、B1に「abc」という文字列が入るとすればA1のセルには「abcこれは文字列です」と表示し、B1に「1」という数字が入るときには「1これは数字です」と表示したいのです。ついでにB1に何も入力されていないときにはA1に「未入力」と表示しておきたいのですが・・・IF関数とユーザー定義だけで対処できますでしょうか?自分なりにやってみたら、B1に文字を入力しようとするとエラーメッセージが出てしまって困っております。。。。

  • 複数セルの入力内容で異なる値を返すマクロ

    次のようなマクロってどのように組めばいいのでしょうか。 例えば,A1のセルに「あ」B1に「1」C1に「2」が入力されているときにはD1に500を返す。A1に「い」B1に「2」C1がブランクのときにはD1に250を返す,のように複数のセルの入力内容によって異なる値を返したいのですが,このようなマクロってどのようにすれば組めますか。 マクロの初心者です。

  • EXCEL 指定範囲内の空白セルに特定数だけ文字を入力するマクロ教えてください。 

    マクロ初心者です。 指定範囲内の空白セルに特定数だけ文字を入力するマクロを考えていますが、まったくわかりません。どなたか教えていただけますか? 詳細内容 (1)下記のような空白セルを含む範囲内        A B C D       1  A君       2       3A君  B君       4  C君  (2)別セルでA君に1追加するとA君が表示上追加される        A B C D       1  A君  A君←どこでも空白セルならいい       2       3A君  B君       4  C君 

専門家に質問してみよう