• ベストアンサー

エクセルでのシート転記について

現在、会社の倉庫住所の一覧表をエクセルで作っております。 SHEET1には各倉庫の住所を記載しています。 倉庫名、県、市、町、番地をそれぞれ列ごとに分けて一行に一つの倉庫の住所が納まるように入力しています。 例:A1に倉庫名、B1に県、C1に市、D1に町村、E1に番地、F1に電話番号。。。といった具合です。 そしてSHEET2には住所打ち出し用のフォーマットがあります。 A10に倉庫名(A10='SHEET1'!A1というふうに)、A11に県、A12に市、という具合に、セルごとに住所がそのまま入るようになっております。 例えばSHEET1/A1の倉庫名が入力されたセルをアクティブにすると、SHEET2に1行目の倉庫住所が、A2を選択する二行目の住所が反映する、というようなVBAを組むことができるでしょうか? 最初は単に住所をコピーしてシートを沢山作ろうと思っておりましたが、倉庫が30近くあるので、なんとか一覧の住所を利用して出来ないかと。。。 リストとVLOOKUP,IFを組み合わせた関数で対処してみましたが(SHEET2に倉庫名を選択するセルを作成・その値によってSHEET1から引用する内容を変える)出来れば、操作そのものはSHEET1のシートだけで完結させたいと思っております。 OS WINDOWS VISTA バージョン エクセル2003を使用していますが、ファイルそのものはエクセル2000、2002の人も使う可能性が高いです。 拙い説明で申し訳ございません。 どなたか、ご教示下さいませ。

質問者が選んだベストアンサー

  • ベストアンサー
  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.2

マクロを使うというよりもシート2のA列で倉庫の名前を選択できるようにして、選んだ名前の倉庫のシート1のデータが表示できるようにすればよいでしょう。 どちらのシートでも1行目は項目名があり、2行目から各データがあるとします。 初めにシート2でA2セルから例えばA100セルまでを選択し、「データ」メニューから「入力規則」をクリックします。 設定のタブで入力値の種類の窓では「リスト」を選択し、元の値の窓には Sheet1!A$2:A$40 と入力してOKします。 これでA列では倉庫の名前を選択することができます。 次にその選択された倉庫についてのデータをシート1から引き出し表示させるわけですが、B2セルには次の式を入力し右横方向にオートフィルドラッグしたのちに下方向にもオートフィルドラッグします。 =IF(OR($B1="",$A2=""),"",INDEX(Sheet1!$A:$K,MATCH($A2,Sheet1!$A:$A,0),COLUMN(B1))) この式の場合には1行目にシート1にある項目名が入力されていることが必要です。1行目が空の状態ですと表示がされません。

Kashiro
質問者

お礼

KURUMITO様 ご丁寧にありがとうございます。 私の理解不足のため、上記にて更に質問をしてしましましたが、その後無事解決し、ご教示頂いた関数の意味を理解できました。 おかげさまで助かりました。本当にありがとうございました。

その他の回答 (2)

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.3

回答No2です。ドロップダウンリストを作成するときに入力する式ですが次のように訂正してください。 元の値の窓には =INDIRECT("Sheet1!A$2:A$40") 大変失礼をいたしました。

Kashiro
質問者

お礼

ありがとうございます。 ご教示頂いたとおりにやったら無事転記できました。 ただ、作成中に関数の意味が少々理解できない点があり。。。 sheet1の情報をsheet2に転記する関数で IF(OR($B1="",$A2=""),"",INDEX(Sheet1!$A:$K,MATCH($A2,Sheet1!$A:$A,0),COLUMN(B1))) 上記の関数の中でまず、IF(OR($B1="",$A2=""),"",の関数であえて空欄を指定する必要があるのでしょうか? またINDEX(Sheet1!$A:$K,MATCH($A2,Sheet1!$A:$A,0),COLUMN(B1))) の関数が理解できませんでした。転記自体は綺麗にいったのですが、私の知識・理解度不足のせいでちょっと理屈が分からず。。。 後学のため、出来ましたらこの関数の意味を教えていただけると幸甚です。レイアウト変更指示などが出た際(例えばsheet1のデータをsheet2の同行に転記ではなく、A1,A2,A3と縦に分けて転記する場合、など)に対処できるようにしたいのです。 自分でチャレンジもしてみましたが、理解が及びませんでした。すみません。お願いします。

  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.1

できるだけシンプルに応用しやすい方法をひとつ。 シート1のシート名タブを右クリックしてコードの表示を選ぶ 現れたシートに下記をコピー貼り付ける private sub worksheet_selectionchange(byVal Target as excel.range) worksheets("Sheet2").range("G1") = Target.cells(1).row end sub ファイルメニューから終了してエクセルに戻る。 シート2のG1セルに、シート1で選んでいたセルの行番号が常に自動で更新されて出ているので、 =INDEX(Sheet1!A:A,G1) =INDEX(Sheet1!B:B,G1) などの式を所定のセルに配置して参照させる。

Kashiro
質問者

お礼

keithin様 早々にご回答を頂きまして、ありがとうございました。 keithin様にご教示いただきました方法にても無事転記が出来ましたが、このたびは今後の加工などに備え、私が技能的に追いつきそうな方法をセレクトさせていただきました。 本当にありがとうございました。

関連するQ&A

  • 2つのエクセルのシート間でこのようなことは出来ますか?

    こんにちは 1つのエクセルファイルに2つのシートがあり(シートA、シートBとします。両シートはともに300行100列ほどの大きさで、各セルに値、数式、第3のシートセルの参照等が入っています。また、両者とも結合されたセルが散らばっていますが、結合セルの番地は同じです。)両者のシートは非常に似ているのですが、セルの中身、行列の高さ・幅が微妙に違います。 ここで2つのシートを使い、次のような新たなシートを作りたいのです。 ・セルの中身はシートAとまったく同じ。 ・行の高さと列の幅はシートBとまったく同じ。 新たなシートの中身はシートAとまったく同じなので、シートAを元にして行の高さと列の幅がシートBと同じになるようにすればよいと思うのですがやり方が分かりません。かといって1行、1列ごとにシートAの高さ、幅を変更するのも大変です。 何方か簡単に出来る方法が分かる方はいらっしゃらないでしょうか? よろしくお願いします。

  • 膨大なデータ一行おきに二行分のコピーしたセルを挿入

    エクセルが苦手で困っています。 エクセル、マクロに詳しい方教えて下さい。 10000件ある住所の一覧データに1行おきにコピーした2行分のセルを挿入したいのですが、 10000件を1件づつコピーしたセルの挿入を繰り返すのは気が遠くなりそうです。 一気にコピーした2行分のセルを1件おきに挿入する良い方法はありませんでしょうか? マクロやエクセルでの方法を教えて下さい! 【例】 番号 郵便番号 住所 名前 1 123-4567 ○○県○○市○○町 春本 春子 2 111-1111 △△県△△市△町       夏野 夏美 3 222-2222 □□県□□市□□町 秋田 秋夫 4 333-3333 ××県××市××町 冬川 冬彦 〃       〃               〃              〃 〃       〃               〃              〃 10000   〃               〃              〃 ↓ 番号 郵便番号 住所 名前 1 123-4567 ○○県○○市○○町 春本 春子 2013 5000 250 5250 0101 7000 350 7350 2 111-1111 △△県△△市△町 夏野 夏美 2013 5000 250 5250 0101 7000 350 7350 3 222-2222 □□県□□市□□町 秋田 秋夫 2013 5000 250 5250 0101 7000 350 7350 4 333-3333 ××県××市××町 冬川 冬彦 2013 5000 250 5250 0101 7000 350 7350 5  〃 〃 〃 20130101 5000 250 5250 0101 7000 350 7350 10000   〃 〃 〃 20130101 5000 250 5250 0101 7000 350 7350 10000件分コピーして挿入する内容は同じです。 ただ、コピーしたセルの1行目と2行目の並びは変えたくありません。 わかりづらい説明かもしれませんが、宜しくお願いします。

  • エクセルの複数セルを一つに集約させる方法

    どなたかエクセルの得意な方に伺います。 セルをまたいだ住所を一つのセルに移動させるやり方をご存知でしょうか? 〇〇県〇〇市が入っているセルと〇〇町〇ー〇番地が入っているセルを一つにさせたいのですが、困っています。 手作業でもできますが、数万件の情報ですのでとても無理です。 どなたかお教え頂けないでしょうか? 宜しくお願い致します。

  • 別シートのセルを絶対参照にする

    office2007、Excelで別シートのセルを絶対参照する方法を教えて下さい。 セルに「=シート名セル番地」を力した場合は、 セル番地を$で絶対参照にしても 参照先シートのその上に行を挿入すると $A$5を指定していても行を挿入した場合は 自動的に$A$6になってしまいます。 別シートに行を挿入しても参照先のセルを固定する方法を教えて下さい。

  • エクセルでひとつのセル内の内容を分離するには

    エクセルで住所管理をしているのですが、例えばC2のセルに ●●●-×××× ■■■県◆◆◆市○○○町~番地というデータがあった場合に、 前部の●●●-××××(郵便番号)と後部の■■■県◆◆◆市○○○町~番地(住所)を 同じ列に関数などを使って分離することはできますでしょうか? 郵便番号のあとの住所の前には半角スペースが入ります。 できましたら、D2に郵便番号、E2に住所を分離したいと思っております。 素人質問で申し訳ございませんが、ご回答頂ければ幸いです。 何卒よろしくお願い致します。

  • エクセルで・・・。

        (1) A県B市D町2-15-3     (2) A県B郡1-2-3     (3) A県C市F町4-3-5 という住所のデータがあったとき(1)ならA県B市D町 と 2-15-3 (2)ならA県B郡 と 1-2-3 の間で分けたいんですけどどうすればいいでしょう? ※県郡市などに含まれる数字は漢数字、番地町名は必ず英数字になってます。 ※住所の長さはもちろんバラバラです。

  • excelで○○と入力されているセル番地を返す方法

    excelについて質問です。 シートAに下記の記述をします。    A    B 1 項目名 セル番地 2 ○○  B7 のような形で、シートBからセル番地を引っ張ってくる方法はありますでしょうか。 セル番地が難しいようであれば、行、列を返す形でもよいです。 上手く質問ができず、申し訳ありません。 できればVBAは使わず、関数で処理できるとベターです。 宜しくお願いいたします。

  • マクロで「別シートを検索・元シートへ転記」したいのですが・・・

    昨夜から20時間くらい悩んでおります・・・。どなたかよろしくお願いします。 (概要) エクセルで 「オーダー受付」と「顧客データ」の2つのシートがあります。 ●「オーダー受付」のセルには、K3電話番号 K4お名前 K5住所1 K6住所2 と縦に表示用セルを設けています。 ●「顧客データ」のセルには、A1 A2 A3 A4 と横に上記データを記録してあり、すでに1万行を超えています。 (やりたい事) ●お客様から電話があったときに「オーダー受付」シートの K3に電話番号をいれマクロを実行すると、「顧客データ」から残りの項目である 名前・住所1・住所2 が転記されるようにしたいです。 ●もし新規のお客様で、検索結果なしの場合は引き続きお名前・住所1・住所2 とお尋ねし、後からコピペでデータ一覧へ足しています。この辺の操作は検索・転記が解決してから挑戦しようと思っています。 是非、ご回答ください。

  • エクセル シート内のハイパーリンクについて

    エクセル2003のハイパーリンクを初めて使いました。 シートのセルにハイパーリンクを設定しましたが、 これは、セル番地に飛ぶものなのですね。 行の並び替えを行うと意図していたセルとは別のセルに飛んでしまいます。 行の並び替えをしても設定したセルに飛んでいくようにはできますか? 例えば、 A列   B列 りんご  次は牛肉  ・    ・ 牛肉   次はたまご  ・    ・  ・    ・ たまご  次はりんご となっているとして、B列にA列の指定の文字へのハイパーリンクをつけたいのです。 例えば、B列の「次はりんご」をクリックすると、「りんご」に飛ぶようにしたいのです。 「りんご」のあるセルをクリックし、コピーして、「次はりんご」のセルに「ハイパーリンクとして貼り付け」をしたところ、行の並び替えをしなければ上手く飛ぶのですが、行を並び替えると、「りんご」がもともとあったセル番地(例えばセルA1)に飛ぶだけで、「りんご」の文字があるセルには行かないのです。 どうにかして、簡単に目的の場所に飛ぶ設定はできるでしょうか? よろしくお願いします。

  • エクセル 数式のコピー・貼付について

    エクセルの数式のコピー・貼付について教えてください。 シート1にデータが1000行くらい入っているとします。    A   B   1 100  5 2 200  3 3 350  9 :  :   : :  :   : シート2のセルA1、A2に =A1*B1 シート2のセルA3、A4に =A2*B2 シート2のセルA5、A6に =A3*B3 と、2行ずつ数式を入れたいのですが、 普通にコピー貼付をするとセル番地が自動的に 増えていってしまいます。 2行ずつ、同じセル番地の数式を入れる方法がありますでしょうか。 どうぞよろしくお願いいたします。

専門家に質問してみよう