- ベストアンサー
ExcelのIF関数について
A1 A=1 B2 B=2 C3 C=3 と設定してA2以降のA列のセルにそれぞれAかBかCを入力すると、B2以降のB列に最初に設定した数値を返すようにしたいのですが、いい方法はありませんか? 最初のB2に書き込む関数の書き方を教えていただけたら幸いです。
- みんなの回答 (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
その他の回答 (3)
- yohsshi
- ベストアンサー率55% (369/665)
A1には(B2、C3も)『A=1』という文字列が入っているのでしょうか? それとも1という数字なのでしょうか? A2に入れた場合、B2以降の列に数値を返すとありますが、これは別のシートでしょうか。それとも同一シートでしょうか?(同一だとB=2が上書きされる) IF関数の使い方が判らないのでということですが、 もう少しきちんとお書きにならないと、回答も曖昧なものとなるのではないでしょうか?
- Exceler
- ベストアンサー率30% (8/26)
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列に 指定した値が出ると思います。
- a-kuma
- ベストアンサー率50% (1122/2211)
質問の最初の三行が何を表しているのか良く分からないんですが、A列にAかBかCを 入力すると、その行のB列に、それぞれに対応して1、2、3が表示されれば良いのですね。 であれば、B2 のセルに、以下のように書きます。 =IF(A2="A",1,IF(A2="B",2,IF(A2="C",3,""))) で、このセルをコピーして、自動的に表示させたい行までのB列にコピーします。 式はあくまでも、そのセルに表示するものをどう加工するかを書くだけなので、 一つのセルに式を書いて、複数のセルの動作を決めるものではありません。 もし、記述を一個所にしたいのであれば、VBA でマクロを書くことになります。