- 締切済み
2010エクセルでマクロを使い別シ-トの参照
オフィス2010エクセルでマクロを使い別シ-トの参照をしたいのですが方法がわかりません。 シ-ト1のデ-タをシ-ト2で行ごとに表示させたいです シ-ト1 1 佐藤 電話番号 住所 2 鈴木 電話番号 住所 3 斉藤 電話番号 住所 シ-ト2 1 佐藤 電話番号 住所 行ボタン シ-ト2では行ボタンで次のボタンで2の鈴木さんが表示するようにしたいです マクロを使わなくても可能であれば助かります よろしくお願いします
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- keithin
- ベストアンサー率66% (5278/7941)
単にバリエーションでしかありません。 コントロールのリンクするセルをA2に設定し、 名前を表示したいセルに =IFERROR(VLOOKUP(A2,Sheet1!A:D,2,FALSE),"") 電話を表示したいセルに =IFERROR(VLOOKUP(A2,Sheet1!A:D,3,FALSE),"") 住所を表示したいセルに =IFERROR(VLOOKUP(A2,Sheet1!A:D,4,FALSE),"") 元のご相談のレイアウトに従い「答えを右に並べる」という目的でもう一つ関数を追加して回答しましたが、そうじゃないなら最初からこのように回答しました。 #コピーするだけで使える関数を教わって喜ぶ回答者さんの方が多いというのもありますが。 #VLOOKUP関数はエクセル初級のごく基本的な関数(=とても頻繁に使われるという意味です)なので、これを機に是非自力で使えるように勉強しておいてください。
- keithin
- ベストアンサー率66% (5278/7941)
ん? ボタンじゃなきゃ絶対ヤダってことですか。 手順: シート2のB2に =IFERROR(VLOOKUP($A2,Sheet1!$A:$D,COLUMN(),FALSE),"") と記入し、D2までコピー貼り付ける ファイルメニューのオプションからリボンのユーザー設定で「メインタブ」を選んで「開発」にチェックを入れてOKする 開発タブの挿入▼から「フォームコントロール」の「スピンボタン」を選んでシート2に描画する スピンボタンを右クリックしてコントロールの書式設定からリンクするセルをA2セルにする。 #いちおー、回答した方策でも入力規則の▼ボタンをクリックするんですけどね。でも回答しておいたように、次の番号をA2セルに直接記入したほうが簡単だと思いますが。
お礼
出来ました。 ありがとうございます。 ▼ボタンをクリックだと1000行以上あるのでボタンでスクロ-ルを 考えていました。 何度も申し訳けございません。 例えば シ-ト1 1 佐藤 電話番号 住所 2 鈴木 電話番号 住所 3 斉藤 電話番号 住所 シ-ト2 1 佐藤 電話番号 住所 行ボタン 上記のようにセルを違う所に表示させる場合は どの様にすれば良いですか? 本当に何度も申し訳けございません。
- keithin
- ベストアンサー率66% (5278/7941)
添付図: シート1はA列に番号、B列以降にデータです。 A2セルに =IF(B2="","",ROW()-1) と記入、以下コピーして埋めておきます。 名前を記入すると、勝手に番号が現れます。 言わずもがなですが、データは2行目から上から順に記入します。 シート2のA2を選んで、データタブの「データの入力規則」を開始 種類 リスト 元の値 =OFFSET(Sheet1!$A$2,0,0,MAX(Sheet1!$A:$A),1) としてOK B2に =IF($A2="","",VLOOKUP($A2,Sheet1!$A:$D,COLUMN())) と記入、D2までコピー。 「行ボタン」の代わりにA2を選んで番号を選択すると、データが表示されます。 「選んで選択」する代わりに、A2に今表示されている次の番号を直接打ち込んでも勿論構いません。
お礼
ありがとうございます。 マクロを使わずに「行ボタン」で次には不可能なんでしょうか? 何度も申し訳けございません。
- tom04
- ベストアンサー率49% (2537/5117)
こんにちは! Sheet2にはコマンドボタンを押すたびに表示されている行の下に表示するのではなく 単に同じ行に順に表示したい!というコトですかね? そういうコトだとしての一例です。 ↓の画像で左側がSheet1でSheet2にコマンドボタンを配置しているとします。 コマンドボタンのコードを Private Sub CommandButton1_Click() Dim c As Range, wS As Worksheet Set wS = Worksheets("Sheet1") Set c = wS.Range("A:A").Find(what:=Range("A2"), LookIn:=xlValues, lookat:=xlWhole) If Range("A2") = "" Then wS.Cells(2, 1).Resize(1, 4).Copy Range("A2") ElseIf c Is Nothing Or c.Row = wS.Cells(Rows.Count, 1).End(xlUp).Row Then wS.Cells(2, 1).Resize(1, 4).Copy Range("A2") Else c.Offset(1).Resize(1, 4).Copy Range("A2") End If End Sub のようにしてコマンドボタンをクリックしてみてください。 的外れならごめんなさいね。m(_ _)m
お礼
とても助かりました。 ありがとうございます。
お礼
いろいろご指導ありがとうございました。 今後は勉強してからお聞きしたいと思います。 ありがとうございました。