• 締切済み

エクセルでシートの文字データを別ブックに反映・・・

エクセルを使って顧客データを作っています。 伝票データ(BOOK1)に ・婚約指輪のお客様データ(SHEET1) ・結婚指輪のお客様データ(SHEET2) があり、それぞれこんな感じ↓のデータが並んでいます。  店舗  伝票NO  お客様名  売上合計  品番・・・ -------------------------------------------------  A店   1-2-2   東京一郎  ¥120000  SDD223  B店   3-5-5   神戸次郎  ¥953330  LP002-30 このデータを、顧客データ(BOOK2)として自動的に反映される様にしたいです。 (1)反映したい列を選びたい。 (2)同じ名前の項目(例:店舗、お客様名など)はまとめたい。 婚約指輪のお客様(Book1sheet1)と結婚指輪のお客様(Book1sheet2)、両方の名前の名前をBook2の「お客様名」列に反映させたい。 上記の作業を出来るだけ簡単に組みたいです。 エクセルは初級者なのでマクロなど難しい事は分かりません。。。 でも、今日中になんとかしたいです! よろしくお願いします!!!

みんなの回答

回答No.5

マクロを試していただきありがとうございます 使えないということが分かったのは良かったです。 以下、操作の詳細、新規ブックにて。 データ - 外部データの取り込み - 新しいデータベースクエリ Excel Files* [OK] ドライブ D: BOOK1.xls を選んで[OK] Sheet1$ の 店舗 [>] Sheet1$ の お客様名 [>] [次へ][次へ][次へ] ●Microsoft Queryでデータの表示またはクエリの編集を行う [完了] [SQL]コマンドボタン 下記を SELECT `Sheet1$`.店舗, `Sheet1$`.お客様名 FROM `D:\BOOK1`.`Sheet1$` `Sheet1$` 下記にする SELECT `Sheet1$`.店舗, `Sheet1$`.お客様名 FROM `D:\BOOK1`.`Sheet1$` `Sheet1$` union SELECT `Sheet2$`.店舗, `Sheet2$`.お客様名 FROM `D:\BOOK1`.`Sheet2$` `Sheet2$` [OK] すると注意メッセージ 無視して[OK] [データを返す]コマンドボタン で抜ける データを返す先を支持して 終了です

全文を見る
すると、全ての回答が全文表示されます。
回答No.4

SQLの作成をマクロの自動記録で記録してみた ただし、意味不明の部分もあるので動くかどうかはわからない。 ちなみに、前回の回答+「お客様名」で降順にしてみた。 不要ならOrder By~を削除、昇順なら DESC を消す ファイルの場所 D:\BOOK1.xls とする 新しいブックを作成し、 1. [Alt]+[F11]VBE 2. 挿入 - 標準モジュール 3. 下記貼り付け 4. [×]閉じる 5. [Alt]+[F8]macro1を実行してみる 6. 1回行えば不要なので VBEのmodule1を右クリック 削除 7. 編集したい場合は、「クエリの編集」ボタン クリックして MSQueryを起動させ「SQL」ボタンをクリック 8. 自動更新したい場合は「データ範囲のプロパティ」を使ってください '↓ここから Sub Macro2() With ActiveSheet.QueryTables.Add(Connection:= _      "ODBC;DSN=Excel Files;DBQ=D:\BOOK1.xls;DefaultDir=D:;DriverId=790;MaxBufferSize=2048;PageTimeout=5;" _      , Destination:=Range("A1"))      .CommandText = Array( _      "SELECT `Sheet1$`.店舗, `Sheet1$`.お客様名" & Chr(13) & "" & Chr(10) & _      "FROM `D:\BOOK1`.`Sheet1$` `Sheet1$`" & Chr(13) & "" & Chr(10) & _      "union" & Chr(13) & "" & Chr(10) & _      "SELECT `Sheet2$`.店舗, `Sheet2$`.お客様名" & Chr(13) & "" & Chr(10) & _      "FROM `D:\BOOK1`.`Sheet2$` `Sheet2$`" & Chr(13) & "" & Chr(10) & _      "ORDER BY `Sheet1$`.お客様名 DESC")      .Name = "Excel Files からのクエリ"      .FieldNames = True      .RowNumbers = False      .FillAdjacentFormulas = False      .PreserveFormatting = True      .RefreshOnFileOpen = False      .BackgroundQuery = True      .RefreshStyle = xlInsertDeleteCells      .SavePassword = False      .SaveData = True      .AdjustColumnWidth = True      .RefreshPeriod = 0      .PreserveColumnInfo = True      .Refresh BackgroundQuery:=False End With End Sub '↑ここまで

mmarotan
質問者

補足

間違えました!エラーが出たのは上のマクロです。 SQLを調べるととても使えそうだったので↓を試そうとしたんですが、そもそものサーバー名で「応答していません」エラーが出ました。 会社のパソコンなので複数のパソコンがつながっているためでしょうか・・・?

全文を見る
すると、全ての回答が全文表示されます。
回答No.3

No1です。試しにSQL文でつくってみた (クエリウィザードで注意メッセージが出るけど続行する) SELECT `Sheet1$`.店舗, `Sheet1$`.お客様名 FROM `D:\BOOK1`.`Sheet1$` `Sheet1$` union SELECT `Sheet2$`.店舗, `Sheet2$`.お客様名 FROM `D:\BOOK1`.`Sheet2$` `Sheet2$`

mmarotan
質問者

補足

エラーが出て動きませんでした。。。涙

全文を見る
すると、全ての回答が全文表示されます。
  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.2

例えばブック1のシート1にはA1セルに店舗、B1セルに伝票No、C1セルにお客様名、・・・などの項目名が並んでいるとして2行目からデータがそれぞれ入力されているとします。 シート2でもシート1と同じになっているとします。 そこでシート2には作業列を作って、シート1とシート2の店舗名とお客名を並べそれをもとに作業をすることにします。 シート2のG2セルには次の式を入力してH2セルまで横にドラッグコピーしたのちに下方にもドラッグコピーします。 =IF(ROW(A1)<=COUNTIF(Sheet1!$A:$A,"<>")-1,IF(COLUMN(A1)=1,INDEX(Sheet1!$A:$A,ROW(A1)+1),IF(COLUMN(A1)=2,INDEX(Sheet1!$C:$C,ROW(A1)+1),"")),IF(ROW(A1)>COUNTIF(Sheet1!$A:$A,"<>")+COUNTIF(Sheet2!$A:$A,"<>")-2,"",IF(COLUMN(A1)=1,INDEX(Sheet2!$A:$A,ROW(A1)-COUNTIF(Sheet1!$A:$A,"<>")+2),IF(COLUMN(A1)=2,INDEX(Sheet2!$C:$C,ROW(A1)-COUNTIF(Sheet1!$A:$A,"<>")+2),"")))) I2セルには次の式を入力して下方にドラッグコピーします。 =G2&H2 J2セルには次の式を入力して下方にドラッグコピーします。 =IF(G2="","",IF(COUNTIF(G$2:G2,G2)=1,ROUNDDOWN(MAX(J$1:J1),-4)+10000,IF(COUNTIF(I$1:I1,I2)>0,"",IF(COUNTIF(I$1:I1,I2)=0,IF(ROUNDDOWN(INDEX(J$1:J1,MATCH(G2,G$1:G1)),-4)=ROUNDDOWN(MAX(J$1:J1),-4),MAX(J$1:J1)+1,SMALL(J$1:J1,RANK(ROUNDDOWN(INDEX(J$1:J1,MATCH(G2,G$1:G1)),-4)+10000,J$1:J1,1)-1)+1))))) これでブック1での作業は終わります。 お求めのブック2での作業ですが例えばシート1のA1セルに店舗名、B1セルにお客名と文字を入力します。 A2セルには次の式を入力してB2セルまで横にドラッグコピーしたのちに下方にもドラッグコピーします。 =IF(ROW(A1)>COUNT([Book1]Sheet2!$J:$J),"",INDEX([Book1]Sheet2!G:G,MATCH(SMALL([Book1]Sheet2!$J:$J,ROW(A1)),[Book1]Sheet2!$J:$J,0))) これで店舗ごとにお客名が表示されます。 お客を優先しての表にするためにはA,B列を選択してコピーし、その後に例えばD1セルを選択してから「形式を選択して貼り付け」で「値」にチェックをして貼り付けます。 その後にD及びE列を選択してから「並び替えとフィルター」から「ユーザー設定の並び替え」で「先頭行をデータの見出しとして使用する」にチェックをし、最優先されるキーをお客名としてOKすればよいでしょう。

mmarotan
質問者

補足

セルの入力した所、エラーが出てしまいました。 BOOK1に複数枚のシートがあるからでしょうか? あと、作業列挿入なんですが、データが膨大なため作業列として店舗+お客様名がでるセルを作ると、行数がえらいことになります。。 なにか案がありましたら引き続きお助けください。orz

全文を見る
すると、全ての回答が全文表示されます。
回答No.1

質問があまりにも漠然としていて、、、 ※バージョン不明、当方XL2003 案1 SQL 外部データの取り込みで 新しいデータベース Excel Files でSheet1の欲しい列データを取り込み、SQLを編集して union でSheet2を追加すれば重複はしないと思います。 案2. マクロの自動記録で コピー&ペースト や フィルタオプションの設定 で重複を削除する操作を自動化する 顧客データは常に更新させるのか、その時点のものを保存しておくのかも不明 案1は常に更新(1分単位) 一工夫でその時点のものを保存も可能、案2はその時点のもので保存できる 案2のほうが分かりよいと思いますが、 >エクセルは初級者なのでマクロなど難しい事は分かりません。。。 となると難しいです

mmarotan
質問者

補足

失礼しました! バージョンは2003です。 顧客データは伝票データに追記するたびに更新したいです。 顧客データのBOOKはデータ保存用にしたいので、 伝票データBookのsheet1+sheet2=顧客データBook になるようにしたいと思います。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • Excelでのシート間データ反映について

    こんにちは。 仕事上でのエクセルファイル作成に行き詰ってしまったので、お知恵を拝借させて下さい。 今回作成しているファイルは、 Sheet1にはお客様に送付する宿泊確認書のフォームが、 Sheet2にはお客様の情報(名前、Tel番号など)が 入力されています。 理想としては、Sheet2に入力したデータを Sheet1のフォームに自動反映させたいのです。 単純にSheet2からSheet1にデータ反映する方法は 分るのですが、 この場合はSheet2に数百名のお客様データが入っている為、 「Sheet2の36行目のお客様分の確認書を作成したい」時の方法が分りません。 例えば、Sheet1確認書フォームの各セルに Sheet2の列を指定しておいて、 Sheet2のどの行から情報をひっぱってくるのかを Sheet1にてその都度設定する事は可能でしょうか? 何卒よろしくお願い致します。

  • エクセルのデータを 別のシートに反映したい

    エクセルのSheet 1 に 500程のデータ(商品名)が 2種類に色分けした状態(セルに色づけ)であります。Sheet 2 に 商品名を入力した場合、Sheet 1のデータを反映して、色分けした状態で出てくるようにしたいのですが、どのようにすればよいのか 教えてください。

  • エクセルで1つのシートから、対応する他のシートへデータを反映させるには

    シート1は A列に担当者、B列に店舗名、C列に商品名、D列に数量を入力する表になっています。 その他に担当者ごとにシートを作ってあります。 シート1にデータを入力すると自動的に担当者シートに反映される、ようなものを作りたいのですが、可能なのでしょうか。 (ちなみにmacを使用しています。) 説明不足でしたら申し訳ありません。

    • 締切済み
    • Mac
  • データを別BOOKの指定セルに流し込む方法

    エクセル2003のVBAを使用し、データを別BOOKの指定セルに流し込む方法を教えて下さい。 シート名「流し込み用」の中のデータは4行目から1000行目まで入っていて、列はAとBが結合、DEFが結合されていてGまで4つのデータが入っています。 このデータを10行ずつ、BOOK2のシート名(QW-1)~(QW-100)の指定セル(行は16~25の間、列の並びはBOOK1と同じ)に流し込みたいと思っています。BOOK1のデータもBOOK2のシートも今後増えていきます。 どなたか詳しい方、ご教示いただけないでしょうか?

  • エクセル 他のファイルにデータを飛ばしたい!

    BOOK1に顧客リスト(お客様情報)を随時更新しています。 これからBOOK2にデータを自動で飛ばしたいのですが、どうしたらいいか教えて下さい。 BOOK1にはお客様の住所や年齢など情報を入力してまして、担当が決まれば他のBOOKにお客様の名前だけでも飛ばしたいのです。 現在3人の営業がいまして、Aと入力するとBOOK2、BはBOOK3、CはBOOK4という形を取りたいのですが、関数でできますか? 《BOOK1》  A列       B列   C列    D列・・・・・・・・・・AB列 お客様名    住所   年齢   勤務先・・・・・・・・担当者 (600名程度のデータがあります) 担当者がAと決まったのでBOOK2に自動で飛ばしたい。 《BOOK2》  A列 お客様名 複数人を担当しているわけなので、VLOOKで引っ張れないですよね? こっちにも入力して、あっちにも入力するという手間を省きたいです。 どうかエクセル詳しい方、ご指導下さい。

  • excel 別シートから複数項目を取得

    こんばんは。エクセルについて質問があります。 今、エクセルで同じ構造で中身の違うデータベースの様なシートを数枚作り、 そこから参照して、別の入力シートにそのデータを引っ張って来るということをしたいです。 調べてみた感じVLOOKUP関数などを使うのかなと思うのですが、 どうもうまいこといきません。 DBのような扱いをしているデータシートの構造は 【データシート】 A1(クラス名)列| B1(番号) 列 | C1(名前:漢字) 列 | D1(名前:かな) 列 | ------------------------------------------------------------------- A2   1-1 |  B2 1番 | C2 鈴木 太郎   | D2 すずき たろう   | のようなデータの入れ方をしており、クラスは1-7まである感じで、 B1の列はA1列のクラスの人数分が連番になっています。 なので、番号は重複してる部分が多いです。 これが複数枚シートあるといった具合です。 データを反映させたいシートも前4列は同じ様な構造をしています。 これにあと複数列足した感じになってます。 【反映させたいシート】 A1(クラス名)列| B1(番号) 列 | C1(名前:漢字) 列 | D1(名前:かな) 列 | E1 別項目 |… -------------------------------------------------------------------------------- A2  3-7  |  B2 2 | C2 田中 次郎   | D2 たなか じろう   | ×× |… ここで名前列に名前(漢字、もしくはかな)を入れるか、 もしくはクラス名+番号ですぐさま該当シートの特定し、 合致するE列以前の残りのデータを全て取得してくる。 反映させたシートのE列などに入れたデータを 今度はデータシートへとリンクさせるという風な プログラムを組みたいです。 こういった具合のエクセルシートを作成したいのですが、 どのようにしたら良いでしょうか? プログラムの様にIF文などを使用する感じになるのでしょうか? それともデータのシートに別でIDなどユニークな値を各々の データに割り振らないとダメでしょうか? また参考として知りたいのですが、 1行に引っ張りたくないデータが多数あっても行単位で3列の分だけ取得して、 1行にある3列分のデータを同じ1行3列に反映させることは可能でしょうか? 説明が下手で意味が解り辛い所もあるかもしれませんが、 回答よろしくお願いします。

  • エクセル 別のファイルにデータを流し込む方法

    エクセル 別のファイルにデータを流し込む方法 エクセルで、1つのファイルに入力してあるデータの内、 特定の行のデータを指定して、別のファイルに体裁(レイアウト)を変えて 表示させる方法を教えてください。 具体的には、例えば、元データのファイル(仮にBook1)が、 列に、A列-日付、B列-時間、C列-利用場所、D列-顧客番号、 E列-顧客氏名、F列-利用内容、G列-判定 というような項目を並べて、 1行ずつ、データが入力してあるファイルがあるとします。 この元データのファイルを利用して、別のファイル(仮にBook2)、 例えば、FAX送信用の紙のような書式のファイルに、 1枚の紙に、1人分のデータを、 流し込んで表示させるようなことをしたいと思っております。 これを、Book2の1個1個のセルに、元となるBook1のセルを参照するよう いちいち入力するのではなく、 Book1の特定の1行を指定すれば、その行に入力してあるデータが 自動的に(一発で)Book2のシートに反映されるようにしたいのですが、 良い方法がありますでしょうか。 ご存知のかたがいらっしゃいましたら、 お教えいただけると嬉しいです。 どうぞよろしくお願い申し上げます。

  • 「Excel」で、異なるブックのデータを一つにまとめたい。

    「エクセル2000」を使用しています。 異なるブックのデータを、うまく一つにまとめる 方法があるかどうか、お教え頂きたいのですが…。 「Book1.xls」には A列に名前 B列に部署名 が、それぞれ入っています。 「Book2.xls」には A列に名前、 B列に内線番号 が入っているとします。 そこで、「Book1」のそれぞれの名前の行に 「Book2」の「内線番号」を表示させたいのですが… そんな事は可能でしょうか? 「Book1」と「Book2」の「名前」のデータは、 ほぼ同じものが入っているのですが 並び順は異なっています。 (「並べ替え」を行ったとしても、 「Book2」の方が遥かにデータ量が多いので、 どうしても行は一致しません) 「同じデータを探して貼り付ける」 という作業が必要になると思うので、 やはり難しいでしょうか…。 ご助言願います。

  • bookの反映

    エクセル2003です。 book1・book2・book3があります。 例えばbook1のA1で名前を入力したときに、同時にbook2のA1・book3の A1に関数だけで反映させる方法はないでしょうか? よろしくお願いいたします。

  • エクセル 別シートにあるデータを。

    いつもお世話になります。 エクセルで顧客リストを作るのに、sheet1は店名が空欄の顧客リストで、sheet2に各店の郵便番号・住所等一覧リストがあって、そのsheet1の一覧リストに店名を入力すれば、自動的にsheet2にある住所等が出てくる。と言う感じに反映させたいのですが、どうすれば良いですか?

印刷結果がガタガタに
このQ&Aのポイント
  • 詰まった紙を抜いた後、印字がガタガタになった。エンコーダの清掃をしたつもりである。
  • Windows11を使用しており、無線LANで接続されています。
  • 印刷結果がガタガタになった際の対処方法や注意点について相談したい。
回答を見る

専門家に質問してみよう