質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
参照

参照は、プログラミングにおいて変数や関数といったメモリ空間上での所在を指示するデータのことを指します。その中にはデータ自体は含まれず、他の場所にある情報を間接的に指示するプログラムです。

関数

関数(ファンクション・メソッド・サブルーチンとも呼ばれる)は、はプログラムのコードの一部であり、ある特定のタスクを処理するように設計されたものです。

Q&A

解決済

2回答

636閲覧

エクセルでほかのシートを参照して対応する値を表示させたい

k-teratail

総合スコア17

参照

参照は、プログラミングにおいて変数や関数といったメモリ空間上での所在を指示するデータのことを指します。その中にはデータ自体は含まれず、他の場所にある情報を間接的に指示するプログラムです。

関数

関数(ファンクション・メソッド・サブルーチンとも呼ばれる)は、はプログラムのコードの一部であり、ある特定のタスクを処理するように設計されたものです。

0グッド

1クリップ

投稿2020/08/02 07:43

エクセルで【シート1】の〇のところに、A1だったらaa、B1だったらbb、C1だったらccを表示させたいのですがやり方がわからず困っています。
よろしくお願いいたします。

【シート1】
001 A1 〇
002 B1 〇
003 A1 〇
004 B1 〇
005 C1 〇
006 A1 〇
007 A1 〇
008 B1 〇
009 A1 〇
010 C1 〇

【シート2】
A1 aa
B1 bb
C1 cc

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

vlookup関数は不要論がでてますね。最近ですと列番号(表の作りに)に左右されない、index+match関数の組み合わせ
が推奨されています。

C1セルに下記をコピーすると=INDEX(シート2!$A$1:$B$3,MATCH(B1,シート2!$A$1:$A$3,0),2)
今回のVlookupのような結果が得られます。

今回の事例では、Vlookupでいいのですが、その理由についてはネットで調べると
情報が得られると思います。

質問は関数だと思うので無視してください。

マクロで記述するとMatch関数を使ってこんな感じですかね(質問を勘違いして作成しただけなのですがUPしておきます)。

VBA

1Sub test() 2Dim data_maxrow As Double 3Dim master_maxrow As Double 4Dim mydata As Worksheet 5Dim mymaster As Worksheet 6 7Set mydata = Sheets("シート1") 8Set mymaster = Sheets("シート2") 9 10data_maxrow = mydata.Range("A1").End(xlDown).Row 'A列の最終列を取得 11master_maxrow = mymaster.Range("A1").End(xlDown).Row 'A列の最終列を取得 12 13For i = 1 To data_maxrow 14 15 mycellno = WorksheetFunction.Match(mydata.Range("B" & i).Value, mymaster.Range("A1:A" & master_maxrow), 0) 16 mydata.Range("C" & i).Value = mymaster.Range("B" & mycellno).Value 17 18Next 19 20Set mydata = Nothing 21Set mymaster = Nothing 22End Sub 23

投稿2020/08/02 08:38

編集2020/08/02 09:09
mako1972

総合スコア383

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

TanakaHiroaki

2020/08/02 08:59

マクロで実現する場合、WorksheetFunction.Match関数が高速なので参考になりました。
mako1972

2020/08/02 09:05

いえ、いつも拝見していますよ。ありがとうございます。
k-teratail

2020/08/02 12:50

ご回答ありがとうございます! エクセルがあまり得意ではなく、vlookup関数もほとんど初耳なくらいですが色々な方法で実現することができるのですね。とても勉強になりました!書いていただいたソースを参考にマクロでも実装させてみたいと思います!
mattuwan

2020/08/03 02:30

http://officetanaka.net/excel/excel2016/07.htm 解決済ですが、参考までに。 Option Explicit Sub test() Dim myData As Range: Set myData = Sheets("シート1").CurrentRegion Dim myMaster As Range: Set myMaster = Sheets("シート2").CurrentRegion Dim c As Range With WorksheetFunction For Each c In myData.Columns(1).Cells On Error Resume Next c(1, 2).Value = myMaster(.Match(c.Value, myMaster, 0), 2).Value On Error GoTo 0 Next End With End Sub mako1972さんへ>> Option Explicit が、記述される設定にしておきましょう。 変数iの宣言が漏れているように思えます。
mako1972

2020/08/03 02:35 編集

ありがとうございます。 少し我流になっていますので参考にさせていただきます。
guest

0

ベストアンサー

VLOOKUP関数を用いて実現できます。

【シート1】セルC1のVLOOKUP関数式は以下のようになります。
=VLOOKUP(B1,【シート2】!A:B,2,FALSE)

投稿2020/08/02 08:04

編集2020/08/02 08:15
TanakaHiroaki

総合スコア1063

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

mako1972

2020/08/02 08:38 編集

数式をコピーすることを考えると、こうでしょうか・・。C1に下記を記述してコピー = VLOOKUP(B1,master!$A:$B,2,FALSE)
TanakaHiroaki

2020/08/02 08:41 編集

コピーした場合に想定通りに値を取得できれば、それが正解です。
mako1972

2020/08/02 08:42

横から申し訳ありませんでした。余計なコメントでした。
k-teratail

2020/08/02 12:55

ご回答ありがとうございます! VLOOKUP関数というものを自分なりに調べてみたのですが、ご回答いただいた【シート2】!A:Bの部分が参照する票の範囲になると思うのですが、『A:B』は『A1:B3』と書かなくても参照されるのでしょうか?数字の部分は省略可能なところなのかわからず、教えていただけると幸いです。
TanakaHiroaki

2020/08/02 13:02

数字を省略すると、列を全て参照します。
k-teratail

2020/08/02 13:13

そうなんですね!勉強になります!ありがとうございます!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問