プロが教える店舗&オフィスのセキュリティ対策術

Excel2007について教えてください。
A列のある値を検索し、B列にその値に対応した数値を自動で入れることはできますでしょうか?

画像のA列のみ記入したシートに、自動でA列に対応した数値をB列に入れるようにしたいです。
画像の場合、「○○」→100、「△△」→200、「××」→250

宜しくお願いします。

「Excel2007 マクロ A列のある値」の質問画像

A 回答 (5件)

前回の方のコードをそのまま利用させていただきました。


 myAry = Array("◯◯", "××", "△△")
 myAry2 = Array(100, 250, 200)
このように、順序をあわせます。

もう一つは、数式を利用したものです。

'//
Sub Sample2()
'No. 9031611+a
 Dim c As Range, i As Long
 Dim myAry As Variant, myAry2 As Variant
 Dim FirstAddress As String
 myAry = Array("◯◯", "××", "△△")
 myAry2 = Array(100, 250, 200)
 For i = 0 To UBound(myAry)
  Set c = Range("A:A").Find(What:=myAry(i), _
      LookIn:=xlValues, _
      lookat:=xlWhole)
  If Not c Is Nothing Then
   FirstAddress = c.Address
   Do
   c.Offset(, 1) = myAry2(i)
   Set c = Range("A:A").FindNext(c)
   Loop Until FirstAddress = c.Address
  End If
 Next i
End Sub

'//(予めインデックスのシートが必要です)
Sub Sample3()
Dim Rng As Range
Set Rng = Range("E1:F3")
Range("A1").Select
With Range("A1", Cells(Rows.Count, 1).End(xlUp))
 .Offset(, 1).FormulaLocal = _
 "=VLOOKUP(A1," & Rng.Address & ",2,0)"
 .Offset(, 1).Value = .Offset(, 1).Value
End With
End Sub

'///
「Excel2007 マクロ A列のある値」の回答画像1
    • good
    • 1
この回答へのお礼

ご回答ありがとうございます。
作業効率がUPし、感動しております。

Excel初心者で、また、色々と質問することがあるかもしれませんが、その時もどうぞ宜しくお願い致します。

お礼日時:2015/07/30 13:23

VBAは今練習中ですけど、その程度でしたら何とか・・・ (; ̄ー ̄A アセアセ・・・



「Alt」+「F11」でVBAを起動し、「挿入」タブの「標準モジュール」をクリック。
Option Explicit と書いてある下より次のコードを入れます。
_____↓_______↓______________________________
Sub sanple()
Dim i As Long
For i = 1 To Cells(Rows.Count, 1).End(xlUp).Row
If Cells(i, 1) = "○○" Then
Cells(i, 2) = "100"
ElseIf Cells(i, 1) = "△△" Then
Cells(i, 2) = "200"
ElseIf Cells(i, 1) = "××" Then
Cells(i, 2) = "250"
End If
Next i
End Sub   '←ここまで
_____________________________

コードを入力し終わったら、上の『実行」タブをクリックし、「Sub/ユーザーフォームの実行」をクリックすると添付画像の様になります。
「Excel2007 マクロ A列のある値」の回答画像2
    • good
    • 1
この回答へのお礼

ご回答ありがとうございます。
たくさん方法があり、ベストアンサーを決めるのは悩みました。
皆様のおかげで、作業効率がUPし、感動しております。

Excel初心者で、また、色々と質問することがあるかもしれませんが、その時もどうぞ宜しくお願い致します。

お礼日時:2015/07/30 13:26

ほとんど数式案です(^_^;


Sub B列の値を求める()
 With Range("B1:B" & Range("a" & Rows.Count).End(xlUp).Row)
    .FormulaR1C1 = "=HLOOKUP(RC[-1],{""○○"",""△△"",""××"";100,200,250},2,FALSE)"
    .Value = .Value
 End With
End Sub
    • good
    • 1
この回答へのお礼

ご回答ありがとうございます。
たくさん方法があり、ベストアンサーを決めるのは悩みました。
皆様のおかげで、作業効率がUPし、感動しております。

Excel初心者で、また、色々と質問することがあるかもしれませんが、その時もどうぞ宜しくお願い致します。

お礼日時:2015/07/30 13:27

VBA苦手のNo.3です。


No.3での回答を踏まえて

シートタブを右クリックして コードの表示

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 1 Then
With Range(Target.Address).Offset(, 1)
.FormulaR1C1 = "=HLOOKUP(RC[-1],{""○○"",""△△"",""××"";100,200,250},2,FALSE)"
.Value = .Value
End With
End If
End Sub

上記貼り付けでいいのかな
A○○:B○○セルを選択して[Ctrl]+[D]や行のコピペなどちょっとイマイチな面もあるけど
    • good
    • 1

こんばんは!


横からお邪魔します。

色々な方法での回答が出ていますので、敢えて関数でやってみました。
画像の配置だとB1セルに
=INDEX({100,200,250},MATCH(A1,{"○○","△△","××"},0))
としてフィルハンドルでダブルクリック!
これで大丈夫だと思います。
(エラー処理はしていません)

※ 敢えてVBAでやるとなると、No.1さん後者の方法が良いように思います。
理由としてはデータ変更する場合インデックスのデータ変更だけで
コードに手を加える手間が省けると思います。m(_ _)m
    • good
    • 1
この回答へのお礼

ご回答ありがとうございます。
たくさん方法があり、ベストアンサーを決めるのは悩みました。
関数でもできるのですね。驚きました。
皆様のおかげで、作業効率がUPし、感動しております。

Excel初心者で、また、色々と質問することがあるかもしれませんが、その時もどうぞ宜しくお願い致します。

お礼日時:2015/07/30 13:33

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