• ベストアンサー

2つの数字の組み合わせに対応する文字を返すコードを教えてください。

yk3291の回答

  • yk3291
  • ベストアンサー率66% (2/3)
回答No.5

B列の値を入力するセルがB1、C列の値を入力する セルがB2とします。 A5からC14の範囲に名前及び数字のデータが入力 されているとします。 該当のシート名は"Sheet1"とします。 この内容において、Sheet1のモジュールに以下の コードを入力してみてください。 Private Sub Worksheet_Change(ByVal Target As Range) Dim a As Integer, b As Integer, c As Integer If Target.Column <> 2 Or Target.Row > 2 Then Exit Sub b = Sheets("Sheet1").Range("B1").Value c = Sheets("Sheet1").Range("B2").Value For a = 5 To Sheets("Sheet1").Range("A65536").End(xlUp).Row If Sheets("Sheet1").Range("B" & a).Value = b And Sheets("Sheet1").Range("C" & a).Value = c Then Exit For Next a If Sheets("Sheet1").Range("B1").Value <> "" And Sheets("Sheet1").Range("B2").Value <> "" Then Sheets("Sheet1").Range("C1").Value = Sheets("Sheet1").Range("A" & a).Value End If If Sheets("Sheet1").Range("B1").Value = "" Or Sheets("Sheet1").Range("B2").Value = "" Then Sheets("Sheet1").Range("C1").Value = "" End If End Sub 文字数の関係で改行されてしまっている部分は 手直ししてください。 あとは状況(シート名や、入力の位置、データが 入力されている範囲等)に応じて部分的に変更して みてください。

papparamasao
質問者

お礼

yk3291様  お知恵を拝借して恐縮です。本当にすごいというか,感心することしきりです。あと,コマンドボタンで操作したいときは, Private Sub Worksheet_Change(ByVal Target As Range)を, Private Sub CommandButton1_Click() にかえて, If Target.Column <> 2 Or Target.Row > 2 Then Exit Sub を削除すればよろしいですよね? 本当にありがとうございました。

関連するQ&A

  • エクセルVBA 変数Aと変数Bの組み合わせに対応する値を返すコード

    ワークシート上に次の表があり,この表をもとにして,変数A(0~4)と変数B(0~4)の組み合わせに対応するC列の値を返すコードは,どう書いたらよいでしょうか。  例えば,変数Aのセルに●(4),変数Bのセルに▲(0)と入力したら,値のセルに■(5)と表示させたいのです。  どなたか教えていただけませんか。 A列  B列  C列  4   0   5  3   1   4  3   0   5  2   2   3  2   1   4  2   0   4  1   3   2  1   2   2  1   1   3  1   0   3  0   4   1  0   3   1  0   2   2  0   1   3  0   0   3 変数A:● 変数B:▲ 値:■

  • エクセルで256通りの組み合わせ

    たとえば、A,B,C,Dという箱にそれぞれ1~4の数字を入れると 1111 1112 1113 ・ ・ ・ 4444 と全部で256通りの組み合わせができると思います。 このようにいくつもの値の組み合わせをエクセルで全て作製するにはどのようにしたらよいのでしょうか。 実際には、Aに(10,20,30,40)、Bに(0.5,1.0,1.5,2.0)、Cに(500,600,700,800)、Dに(1.1,1.2,1.3,1.4)という感じの値の組み合わせを全通り作りたいです。 簡単なことかもしれませんが、あまり詳しくないので困っています。 よろしくお願いいたします。

  • 組合せVBA

    環境はExcel2002です A列に連番数字1から100が入力されていて B列の100行には数字のデータがあるとします ある目的の数値Xに一番近くなるB列の組合せをC列に表示したいのです…VBAで B列に表示するのはA列の連番です 『一番近くなる』の意味は2通りあって、両方の算出方法をご教示願います (1)目的の数値Xを絶対超えないで目的の数値Xに一番近くなる組合せ (2)目的の数値Xを必ず超えて目的の数値Xに一番近くなる組合せ

  • Excelの組み合わせをカウントしたいです。

    こんにちは。 Excelの組み合わせをカウントしようと試行錯誤したのですが 未だに完成出来ないので質問させて頂きます。 A列に1から10までの数字がランダムで500行ほどあり、 A列の中で1と言う数字があった場合、 その下のセルに2があればその組み合わせを1とカウントし、 B列に合計を表示したいのですが、これは可能でしょうか? どうかご教授下さいますよう、宜しくお願い致します。

  • 組み合わせの数え上げで困っています。

    組み合わせの数え上げが難しいので、計算のお伺いをいたします。 ビンゴゲームで、1から75の数字を用いたカードを作成します。 通常は、B/I/N/G/Oの縦列にそれぞれ5個(ただしNは4個)の数字を出して N以外は15C5の60倍、Nは15C4の24倍という計算が成り立つと思いますが、 海外において実際に存在するビンゴカードに以下のようなものがあります。 (1)1つのマスに数字が2個入っている。 (2)マスを構成する2個の数字、どちらが選ばれてもそのマスは塗られたものとする。 なので、48個の数字が印刷されたビンゴカードがありますが、2個のワンセットが逆になっても良いが、配列上は別となるため、実質的な組み合わせの計算が難しくなってしまいました(完全バラなら15C10の720倍&15C8の336倍をベースに求められる)。 どのように計算して、トータル何通りあるのでしょうか。 ご教示いただければと存じますので、よろしくお願いいたします。 (当然の前提ですが、B列は1から15、I列は16から30、N列は31から45、G列は46から60、O列は61から75の数字が使われます)

  • Rを.にして文字列を数字として取り出す

    関数を教えてください A列に品番が入っています 例)ABC075C75 ABC035C6R5 AAA285D7 文字列は左から7文字が品番をあらわして残りが長さをあらわしています。例)ABC075C75は75 ABC035C6R5は6.5 AAA285D7は7です。 Rが小数点を意味しています。 このような場合にB列のみを使って長さの情報を取り出す関数の組み合わせを教えてください。列を複数行使えば、私にも長さを数字として取り出せますが、表が大変大きいのでなるべく列を増やしたくないので、 1列に関数を収めてしまいたいと思っています。よろしくお願いいたします。

  • 順列の組み合わせを表示させる方法

    B~Cの3列のそれぞれの2つの数字からできる順列の組み合わせを図のように表示させる方法をご教示願います。

  • エクセル、B列に入力した数字と対になった数字をC列に表示させたい

    B列に21600~21699までの数字を入力したらC列に300プラスされた数字21900~21999を表示させる。同じようにB列に1100~1199までの数字を入力したらC列に800プラスされた数字1800~1899を表示させる。同じくB列に3500~3599までの数字を入力したら、今度は500マイナスの数字3000~3099が表示されるようにしたいのですが、過去の質問の中から探し出せません。下に例を書きました宜しくお願いします。 (例)     B列      C列 1   21610     21910(B列+300) 2   21685     21985(B列+300) 3    1106      1806(B列+800) 4    1131      1813(B列+800)  

  • 文字だけ残して数字だけ消す

    Excel2003 VBAで文字だけを残して数字だけを消す方法を色々と考えたのですが 上手くマクロが作れずにおります。 例として、 A列    B列  C列 7月1日  東京  ABCDEF123456GHIJK のような、C列の部分のみ、文字と文字の間にある数字の部分だけを消したいのです。 理想的な結果としては 7月1日 東京 ABCDEFGHIJK という状態にしたいのですが可能でしょうか? ctrl+Gでは、全部消えてしまって困っています。 以上、宜しくお願いします。

  • エクセルで数字の下1桁を見て並び替える

    エクセルで下記の様な数字が並んでいます。 A列の下1桁の数字は上から順に増えていて、ある数字で1に戻りまた増えています。 その数字は毎回同じではなく、6までの場合もあれば10までの場合もあります。 下記の例では上から6行、次は4行、次は7行と下1桁の数字によってグループ分け出来ますよね? それで上から6行目までのB列の値(462~530)をコピーしてSheet2のA1から横方向に並べます。 その次は7行目から10行目までのB列の値(356~487)をコピーしてSheet2のA2から横方向に並べます。 その次も同じように並べます。 B列が空欄の場合もありますが、その場合はそのままSheet2にも空欄のセルを作ります。 1グループ全部のB列が空欄でもそのままSheet2に空欄の行を作ります。 この動作をマクロで出来る式を教えて頂けないでしょうか? A列          B列 0213240101     462 0213240102    387 0213240103    556 0213240104    585 0213240105    536 0213240106    530 0213240201    356 0213240202    632 0213240203    486 0213240204    487 0213240301    586 0213240302    670 0213240303    619 0213240304 0213240305    645 0213240306    487 0213240307    651 0213240401 0213240402 0213240403 0213240501    455 0213240502    623 0213240503    411 Sheet2 A列   B列    C列   D列    E列    F列   G列 462    387    556    585    536    530 356    632    486    487 586    670    619            645    487    651    455    623    411