- ベストアンサー
エクセルでセルに数字を入力すると他のセルのデータから文字が入力される方法
- エクセルで特定のセルに数字を入力すると、他のセルのデータから該当する番号の文字が自動的に入力される方法について教えてください。
- 具体的な例として、Sheet1のA列に1を入力すると、Sheet2のA列から該当する番号の文字が自動的にSheet1のC列に入力されるようにしたいです。
- また、Sheet1のC列が増えた場合には、マクロをどのように変更すれば良いでしょうか?
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
質問の理解が一番難しいですね。 A、C列に入力した場合、それぞれで検索する場所を変えています。 Private Sub Worksheet_Change(ByVal Target As Excel.Range) Dim rg As Range 'セル Dim rgfnd As Range '見つけたセル On Error GoTo ErrorHandler Application.EnableEvents = False For Each rg In Target 'Sheet1のA列なら If rg.Column = 1 Or rg.Column = 3 Then 'Sheet2を検索 If rg.Column = 1 Then 'A列に入力した場合 Set rgfnd = Worksheets("Sheet2").Range("A:A").Find(rg.Text) Else 'C列に入力した場合 Set rgfnd = Worksheets("Sheet2").Range("C:C").Find(rg.Text) End If If Not rgfnd Is Nothing Then '見つかったら書き換える rg = rgfnd.Offset(0, 1).Text Set rgfnd = Nothing Else rg = rg.Text & ":nothing" End If End If Next Application.EnableEvents = True Exit Sub ErrorHandler: 'エラー対応 Application.EnableEvents = True End Sub
その他の回答 (3)
- nishi6
- ベストアンサー率67% (869/1280)
この回答では、Offsetがキーワードで、 VBAを使ったり勉強するには、オブジェクトブラウザは必須と思い追加しましたが、 >以後のヘルプ内容に回答内容が出ません? ●ヘルプ自体が表示されない(使えない)のであれば、 コントロールパネル→アプリケーションの追加と削除でセットアップする必要があります。 マニュアルに載っていると思います。 ●ヘルプは表示されるが、回答した内容が表示されない・・・ Offset プロパティのRangeを選択すると Offset プロパティ (Range オブジェクト) が表示されます。余分な部分を少しカットしています。
補足
いつも何も分かっていない質問で申し訳ありません いつもの丁寧な回答で助かります、私の理解不足でヘルプ回答内容は表示されていました マクロのことになりますが、私の説明内容が悪くて申し訳ないのですが ANo.#2の回答では、sheet1のA列に入力するとsheet2のB・D列の該当内容が、sheet1のA・C列に同時に表示出来るようになっています、これも便利なことに思います ただ、こうではなく再質問の意図は 操作(1):sheet1のA列に入力するとsheet2のB列の該当内容が、sheet1のA列に表示 操作(2):sheet1のC列に入力するとsheet2のD列の該当内容が、sheet1のC列に表示 のように別々の列に入力しても該当内容が表示出来たらいいなと思っています こんなことも出来るでしょうか いつもご無理の補足ばかりして申し訳ありません よろしくお願いします
- nishi6
- ベストアンサー率67% (869/1280)
最初の回答に1行追加します。 If Not rgfnd Is Nothing Then '見つかったら書き換える rg = rgfnd.Offset(0, 1).Text '*** 最初の回答にこの行を追加 *** rg.Offset(0, 2) = rgfnd.Offset(0, 3).Text Set rgfnd = Nothing Else rg = rg.Text & ":nothing" End If VBE画面で、表示→オブジェクトブラウザで双眼鏡のアイコンの左の窓に OFFSET と入力して、 双眼鏡のアイコンを押すと検索結果が出てきます。 ライブラリ=Excel、クラス=Range、メンバ=Offset を選択して右クリック→ヘルプ expression.Offset(RowOffset, ColumnOffset) RowOffset オフセットする範囲の行数 (正、負、または 0) を指定します。 正の値は下方向、負の値は上方向のオフセットを表します。既定値は 0 です。 ColumnOffset オフセットする範囲の列数 (正、負、または 0) を指定します。 正の値は右方向、負の値は左方向のオフセットを表します。既定値は 0 です。 (ヘルプをセットアップしてあれば表示されます)
補足
回答ありがとうございました もう少しわからないところを教えてください 最後のところの >右クリック→ヘルプ 以後のヘルプ内容に回答内容が出ません? >(ヘルプをセットアップしてあれば表示されます) のことが? いつもご無理の補足ばかりして申し訳ありません よろしくお願いします
- nishi6
- ベストアンサー率67% (869/1280)
質問のように表示するなら下のようにします。 この場合は当然、VLOOLUPでできますが・・・。 C1: =VLOOKUP(A1,Sheet2!$A$1:$D$3,4,FALSE) のように。算式を使いたくない? 途中のIfの箇所 If Not rgfnd Is Nothing Then '見つかったら書き換える rg.Offset(0, 2) = rgfnd.Offset(0, 3).Text Set rgfnd = Nothing Else rg.Offset(0, 2) = "nothing" End If
補足
nishi6さんからの回答大変感謝しております ありがとうございます 質問例の表示がくずれたままで送付して申し訳ありません でした、下がくずれを直したものです 例 sheet1 A B C 1 1 A1→A1を入力するとsheet2に入力されている データーC列から、該当する番号を判断 ↑ して、「ああ」とセル内に表示する 1を入力するとsheet2に入力されているデーターA列 から、該当する番号を判断して、「東京」とセル内に 表示する sheet1 の変換後 A B C 1 東京 ああ に変換したいのですが、いつもお手数ばかりおかけして申し訳ありませんが ご教授おねがいします
お礼
お休みの中の回答、大変ありがとうございました いつも何回もの補足の回答にも大変感謝しております 出来ました、ほんとにいろんなことが出来ることにいつも 驚きです、ありがとうございます 今後ともよろしくお願いします