エクセルでオーダー受付時に顧客データを転記する方法

このQ&Aのポイント
  • エクセルで、「オーダー受付」と「顧客データ」の2つのシートがあります。オーダー受付シートには、電話番号・お名前・住所などのデータを記録しています。顧客データシートにも同じデータを縦に記録してあり、すでに1万行を超えています。
  • お客様からの電話があったときに、オーダー受付シートの電話番号に番号を入力し、マクロを実行すると、顧客データシートから名前・住所などのデータが自動的に転記されるようにしたいです。
  • 新規のお客様の場合は、顧客データシートで検索結果がない場合には、お名前・住所などのデータを別途入力し、後からデータ一覧に追加する操作も行いたいと考えています。
回答を見る
  • ベストアンサー

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

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

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

  • ベストアンサー
  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.1

何がどうダメなのかわかりませんが、サンプルをのせます。 たぶん検索する際のオブジェクトの指定が曖昧になっていてエラーになったのではないかと推察しますが… 「オーダー受付シート」のマクロ記述 Private Sub Worksheet_Change(ByVal Target As Range)  If Target.Address = "$K$3" Then   Call KokyakuSearch  End If End Sub 「標準モジュール」のマクロ記述 Option Explicit Sub KokyakuSearch() Dim LastR As Long, res  With Worksheets("顧客データ")   LastR = .Range("A1").End(xlDown).Row   res = Application.Match(ActiveSheet.Range("K3"), _     Range(.Cells(1, 1), .Cells(LastR, 1)), 0)   If IsNumeric(res) Then    Range("K4") = .Cells(res, 2)    Range("K5") = .Cells(res, 3)    Range("K6") = .Cells(res, 4)   Else    Range("K4") = "新規"    Range("K5:K6").ClearContents   End If  End With End Sub 「オーダー受付」シートのK3セルが書き換わったら検索するようにしましたが、手動で起動するなら標準モジュールのマクロだけでもよいです。

ponta_024
質問者

お礼

zap35さん、早速ありがとうございます。 まったく問題なく動作しました。かなり感激しました! 普段は自動記録で基本動作を作り、細部を修正することでマクロを 活用しています。その程度の知識ですので、zapさんのサンプルで 「なぜ」マクロが動くのか理解はできませんが少しずつ研究します。 おっしゃる通り、K3が書き換わったら検索されました。また、新規と 表示もされるので大変便利です。月曜からはスタッフ全員で活用させて いただきます。ありがとうございます。

関連するQ&A

  • 別シートの行を選択し対象列を転記するマクロ

    シート2のA~F列までデータがあります。 行数は10,000行です。(月ごとに100行くらい追加されます。) A列は項目がNO.で半角数字が連番で入力されてます。 セルA2→1 セルA3→2 セルA4→3 . . . セルA10000→9999 セルA10001→10000 という感じです。 シート1の セルI9に番号を入力すると シート2のその番号の行のB~F列の値を シート1のJ9~N9列に転記したいです。 例えば シート1のセルI9に100と入力したら、 シート2のA列が100と入力されているセルはA101ですから 101行目となります。101行目の各列の値を転記します。 ↓ シート1のセルJ9にシート2のセルB101の値を転記 シート1のセルK9にシート2のセルC101の値を転記 シート1のセルL9にシート2のセルD101の値を転記 シート1のセルM9にシート2のセルE101の値を転記 シート1のセルN9にシート2のセルF101の値を転記 シート1もシート2もセルの書式設定は標準。 B,E,F列は半角英数字の組み合わせで C,D列は半角数字のみです。 たまにF列に空白がある行があります。 B,F列は数字のみの場合もあります。 B,C,D,F列は数字のみの場合 「数値が文字列として入力されています」 となっています。 マクロで行いたいのですが記述そのものを教えてください。

  • 複数シートセルとC列を照会し別シートに転記

    複数シートの同一セル(D1)の数字とデータシートのC列の数字が同じものを探し、集計データと共に転記したい。 エクセルについて教えてください。エクセル初心者なので、説明がうまくできないのですが、教えていただけるとうれしいです。 現在複数シートのシートの同一セル(D1)上に数字があります。シート番号と"集計・印刷"シートのC列を照合し、番号が同じシートからデータをコピーし別シート"A","B","C"に転記したい。 (1)から(3)出来ている部分です。 (1)「CSV読込」押す。CSV変換データ番号のシート名(000~999不定期)のB8:C15セルに変換後のデータがある。       (2)「番号整列」押す。"集計・印刷"シートのC列にシート番号が記載。     (3)「集計」押す。基本データ1,2読込み、集計。 これ以降教えてください。   (4)「転記・印刷」押すと"集計・印刷"シートのC列と同じ番号のシートを選びB8:C15セルデータをC3:C22種類検索し"A","B","C"のJ9:K18に転記したい。 CSVシート     B8:B14 C8:C15 C7      ↓     ↓     ↓ "A,B,C"各シート  J9:J15 L9:L16 K18 が転記したいセル対応です。  (4)の方法がわからず、悩んで降ります。便利な方法があったら教えてください。   説明下手で申し訳ございませんが、宜しくお願い致します。

  • Excel マクロ 検索結果を別シートにコピー

    Excel2010の「ホーム」タブの「編集」グループより「検索と選択」の「検索」で住所録の「名前」を検索しています。 「検索する文字列」に「名前」を入力して「すべて検索」をクリックすると検索結果がでますが、検索結果の表示方法が「セル番地」だけを表示しているため一つ一つそのセルをクリックして内容を確認しています。 これを検索された複数のデータを住所録一覧表の項目名に合わせてまとめて別シートにコピーしたいのですが・・・。 Sheet1に次の項目名で住所録を作成しています。 A列:会社名 B列:名前 C列:住所 D列:電話番号 「名前」で検索して、検索されたデータのA列からD列までのデータを別シート(Sheet2)の同じ表にコピーしたいのです。 名字だけの検索ですので結果が複数ある場合は、すべての検索結果を数行にわたってコピーできればいいのですが・・・。 このメニューのコマンドを使わなくても、何か他の方法でVBAの例があれば教えていただきたいと思います。 宜しくお願いします。

  • マクロで別シートの検索と別シートへの転記

    windows7、エクセル2013です。 Sheet1のA列の値を上から順に、Sheet2のA列内を検索し 同じ値が有ればその値を Sheet3のB列の5行目から順番に転記したいです。 Findを使ってうまくできないので Countifを使いましたが、駄目でした。 関数で可能なら関数でもいいのですが、教えていただきたいです。 よろしくお願いします。 Sub 抽出転記() Dim 検索行 Dim 検索値 Dim 答 Dim 入力行 入力行 = 5 For 検索行 = 3 To 200 検査値 = Worksheets("Sheet1").Cells(検索行, 1) If Worksheets("Sheet2").Columns("A").CountIf(検索値) <> 0 Then 答 = 検索値 Worksheets("Sheet3").Cells(入力行, 2) = 答 入力行 = 入力行 + 1 End If Next 検索行 End Sub

  • EXCEL プログラム マクロ VBA シート 転記

    私はプログラム初心者です。 EXCELでマクロを組もうと思いましたが、皆目見当つかないので質問させて頂きました。 以下のようなことがしたいです。 ・Sheet1にある内容を他のシートへ転記する ・他のシートの名前はポン酢、醤油、味噌、酢である。 ・Sheet1には以下のようなデータ群がセルにはりつけられている 行A|行B|行C 管理番号|値段|調味料 1|100円|ポン酢 2|200円|醤油 3|900円|味噌 4|500円|酢 5|800円|味噌 6|(空白)|(空白) 7|2000円|酢 以上のデータをシートへ貼り付ける。 シートの名前はポン酢・醤油・味噌・酢であり、調味料の列に入っている名前から各シートへ転記する。 また、Sheet1に貼り付けられているデータで空欄の部分は飛ばすものとする。 シート転記例(味噌) 3|900円|味噌 5|800円|味噌 シート転記例(酢) 7|2000円|酢 どうぞ、よろしくお願いいたします。

  • ユーザーフォームでの検索結果を別シートに転記

    ユーザーフォームでの検索結果を別シートに転記して印刷したいのですが・・・ このようなイメージです↓↓ ・データファイルがあります    A    B    C    D 1 0001 みかん  3     300 2 0002 とうふ 1     500 3 0003 チョコ   2     100 4 0004 いか    10     300 ・データファイルとは別のファイルでユーザーフォームを表示します。 番号入力欄 ----- 印刷ボタン ・ユーザーフォームで番号が入力され、「印刷」が押された時に、 入力されたのと同じ番号をデータファイルから検索して、 その番号の列データを別シートに転記して印刷したいのです 別シートに 番号:0001 商品:みかん 数量:3 単価:300 と転記して印刷(番号、商品、などの項目名は、転記するひな形シートに元々入れてあります) *ユーザーフォームのイメージは、番号を入力するボックスと、「印刷」ボタンだけがある状態です。 ユーザーフォーム上で該当番号列のほかの値を表示する欄は持ちません。 また、列の情報が多いため、ユーザーフォーム上に表示させてそのまま印刷するというのは厳しいです *ユーザーにはデータファイルを直接触ってほしくないので、ユーザーフォームを介してデータを取り出すようにこのような形にしたいのですが・・・ 自分でいろいろと勉強する前に質問してしまい申し訳ありません。。。が 仕事で使うのに時間がなくお力を貸して頂ければと思います。 宜しくお願い致します。

  • ExcelVBAの転記(1つのひな形へ複数シート)

    お世話になります。ExcelVBAを少し学んだ程度の者です。 1つのExcelファイルに複数存在する個別のシートから、1つのひな形シートへ転記する方法に頭を悩ませております。イメージとしては名簿管理のようなものとご理解してください。 複数存在するシート(約200シート)には、項目名に対するデータ(例えば、名前や住所などが定められたセルに入力されています)が揃っておりますが、書式の変更によりひな形のシートへ転記する必要があります。 200ほどのシートには、M10セルには名前が、B15セルには住所、C16セルには電話番号が……という具合に入力されています。これらのデータをひな形シートでは、N5セルに名前、C13セルに住所、D14セルには電話番号などを転記する必要があります(セル番地は適当です)。 ひな形シートは1枚で、マクロを実行する際にひな形シートをコピーして(Xとします)、200ほどの個別のシート(A、B、C……)を転記しようと思っております。A、B、C……に入力された複数の値は項目別にCells(i,j).Valueを、XへCells(x,y).Valueへ転記すれば良いと考えておりましたが、上手くいきません。ひな形をコピーしたXのシートへ上手く転記ができず、Aを転記したシートばかりが量産され、B、C以降のシートへ制御が移っていないようです。恐らく、Workwsheetオブジェクトのカウンタ変数に問題があると思われます。 VBAのコードとしては下記のように記述しております。 Sub SheetCopy() Application.ScreenUpdating = False Dim cnt As Long 'シート数カウント変数 Dim i As Long 'シート用のカウンタ変数 Dim wb As Workbook 'コピー元 Dim ws1 As Worksheet 'コピー元 Dim ws2 As Worksheet 'コピー先 '1がコピー元で2がコピー先 cnt = Worksheets.Count 'シート数をカウント i = 2 Set wb = Workbooks("転記用.xlsm") Set ws1 = wb.Worksheets(i) Set ws2 = wb.Worksheets("ひな形") For i = 1 To cnt ws2.Copy after:=Worksheets(i) Set ws2 = wb.Worksheets(i) ws2.Cells(2, 2).Value = ws1.Cells(2, 13).Value '名前 ws2.Cells(3, 2).Value = ws1.Cells(6, 10).Value '住所 以下、同様の転記処理を記述しています。 Next i End Sub 上記のコードを、パッと見たところ、コピーはしているものの、転記先がコピー元になっているのも原因だと思います(コピー先へ転記する方法が現時点でわかりかねます……ここがネックだと考えております)。 ご知見のある方々から、アドバイスをいただけると幸いです。 どうぞ、よろしくお願い申し上げます。

  • エクセル マクロ 別シートへ自動転記

    お世話になります。 エクセルで元データシート(一覧表シート)からアルファベット毎に自動で別シートに転記したいのでですがマクロをどうやって作ればいいでしょうか?(出来ればファイルを開けた時に自動更新してほしいのですが。。) 基準になるのはローマ字でかかれている部品名で、それをアルファベットごとのシートに自動に転記されるようにしたいです。データはどんどん追加されていきます。 元データは以下のとおりです。 *データはB5セルから始まっています。  部品名  詳細  金額  ・・・  A56785 ねじ  ¥30   高田(株)  B13575 棒   \500 安田 C59975 柵 \200 鈴木(株)   以上よろしくお願いします。

  • 別シートのデータを抽出して並べ替えたい

    シート1のA列だけに1行飛ばしで名前、住所、電話番号のデータが入っています。ついでに、次の情報との間は2行飛ばしになっています。    A         B ―|―――――|―――――― 1|名前a  | 2|     | 3|住所a  | 4|     | 5|電話番号a| 6|     | 7|     | 8|名前b  | といった感じです。 このデータを下のように、シート2に綺麗に並べ替えたいのですが…     A      B         C ―|―――――|―――――|―――――――| 1| 名前a | 住所a | 電話番号a | 2| 名前b | 住所b | 電話番号b | 3| 名前c | 住所c | 電話番号c | ひとつずつコピペで移そうと考えていたのですが、データが何百件と増えてしまったため困っています。 簡単にできる方法があれば教えてください。 よろしくお願いします。

  • 複数シートの一部をシート一枚にまとめるには?

    住所録があります。 一枚のシートに住所、名前、電話番号が横にならんで3つのセルに記載されているのですが毎月100シートほど出来上がっておりこれを一枚のシートに手入力で転記しております。 あまりにも非効率的なのでVBA等で一括処理をしたいのですがどうすればよいでしょうか?

専門家に質問してみよう