激凹みから立ち直る方法

A1 A=1
B2 B=2
C3 C=3
と設定してA2以降のA列のセルにそれぞれAかBかCを入力すると、B2以降のB列に最初に設定した数値を返すようにしたいのですが、いい方法はありませんか?
最初のB2に書き込む関数の書き方を教えていただけたら幸いです。

A 回答 (4件)

質問では変換パターンが3個ですが、実際はまだたくさんあるかもしれない?


また、入力範囲が分からず、個人的にはたくさんの算式を登録するのが嫌いなので、関数でない方法を回答します。

Sheet1を使うとして、ツール→マクロ→Visual Basic Editor でVBE画面に移り、
VBE画面で、表示→プロジェクトエクスプローラ でプロジェクトエクスプローラを表示し、その中のSheet1をダブルクリックします。
出てきたコードウインドウに下記マクロを貼り付けます。
変換パターンがたくさんある場合は『'』をはずしたり、追加してみて下さい。

終わったら、ワークシートに移りA列に入力してみます。シートには関数とかは何もセットしません。

こんな方法もあるということで参考にして下さい。

Private Sub Worksheet_Change(ByVal Target As Range)
  Dim rg As Range '操作したセルのひとつ
  Dim rgStr As String '操作したひとつのセルの値

  On Error GoTo ErrorHandler

  For Each rg In Target
    If rg.Column = 1 And rg.Row >= 2 Then 'A2以下に入力
      rgStr = rg.Value
      Select Case StrConv(rgStr, vbUpperCase + vbNarrow)
        Case "A": rg.Offset(0, 1) = 1
        Case "B": rg.Offset(0, 1) = 2
        Case "C": rg.Offset(0, 1) = 3
        'Case "D": rg.Offset(0, 1) = 4
        ' :
        ' :
        'Case "Y": rg.Offset(0, 1) = 25
        'Case "Z": rg.Offset(0, 1) = 26
        Case Else: rg.Offset(0, 1) = ""
      End Select
    End If
  Next

  Exit Sub

ErrorHandler:

End Sub
    • good
    • 0

A1には(B2、C3も)『A=1』という文字列が入っているのでしょうか?


それとも1という数字なのでしょうか?

A2に入れた場合、B2以降の列に数値を返すとありますが、これは別のシートでしょうか。それとも同一シートでしょうか?(同一だとB=2が上書きされる)

IF関数の使い方が判らないのでということですが、
もう少しきちんとお書きにならないと、回答も曖昧なものとなるのではないでしょうか?
    • good
    • 0

A,B,Cそれぞれの数値の設定を斜めではなく、


同じ列に設定すれば
VLOOKUP関数が使えます。

例えば

行/列  A B C
 1   A 1
 2   B 2
 3   C 3
 4
 5   A

と入力して、B5の列に
=VLOOKUP(B4,$A$1:$B$3,2)
と入力して下の行へコピーしてください。
A列に入力した文字によってB列に
指定した値が出ると思います。
    • good
    • 0

質問の最初の三行が何を表しているのか良く分からないんですが、A列にAかBかCを


入力すると、その行のB列に、それぞれに対応して1、2、3が表示されれば良いのですね。

であれば、B2 のセルに、以下のように書きます。

=IF(A2="A",1,IF(A2="B",2,IF(A2="C",3,"")))

で、このセルをコピーして、自動的に表示させたい行までのB列にコピーします。

式はあくまでも、そのセルに表示するものをどう加工するかを書くだけなので、
一つのセルに式を書いて、複数のセルの動作を決めるものではありません。

もし、記述を一個所にしたいのであれば、VBA でマクロを書くことになります。
    • good
    • 0

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