[[20100602112432]] 『抽出先でデータ編集をして抽出元に反映させたい』(こんこん) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『抽出先でデータ編集をして抽出元に反映させたい』(こんこん)

抽出元 シート"顧客リスト"

A〜Zまで項目がありA列には=ROW()で行番号を表示してあります。

1  A   B   C  D     Z

2 行番号 名前 住所 電話 ・・・

3  3   佐藤     03-000-0000

4  4   斉藤     0000-00-0000

5  5   伊藤     000-00-1111

抽出先 シート"顧客抽出"

顧客1名のデータがA5のセルから1行(A〜Z)が抽出されます。

1  A   B   C  D     Z

2

3

4 行番号 名前 住所 電話 ・・・

5  4   斉藤    0000-00-0000

6

この抽出されたA以外のB〜Zのデータを書換えや空白欄への書込みを抽出元へ反映させる方法を教えてください。
書換データを抽出元の指定行に張付けという方法になるものと思いA列に行番号項目も入れてみたのですが・・・・
過去ログものぞいてみたのですが部分的な書換などは見つけることはできたのですがそれを応用する技術もないので是非よろしくお願いします。


 ちょっと飲み込めないのですが、1行だけのことであれば、
 直接「顧客リスト」に行って修正すれば終わりではないですか?

 なぜ、別シートに抽出してから、修正する必要があるのですか?

 (半平太) 2010/06/02 12:59

 顧客リストのA4セルに行くのが面倒と云うことであれば、

 顧客抽出シートのA5セル(サンプルでは「4」と表示されている所)を
 実質的にこんな式になるよう塩梅して、ハイパーリンクで飛べば良さそうな気がします。
            ↓
  A5セル =HYPERLINK("#顧客リスト!A"&4,4)

 (半平太) 2010/06/02 13:20

半平太さまありがとうございます

実際には顧客リストには10000人以上のデータがあり抽出先での書換をしたいとかんがえております

今回は行番号が4ですが、どの行の顧客データが抽出されても自動的に書換が顧客リストのに反映できるものにしたいと思っています。その場合

A5セル =HYPERLINK("#顧客リスト!A"&4,4)

はどのように書き換えていけば良いですか?


 ちょっと後戻りするようで恐縮ですが、、、

 >顧客1名のデータがA5のセルから1行(A〜Z)が抽出されます。 

 抽出の方法をご説明いただけませんか?
 (念じただけでは抽出されませんので、何か仕掛けがありますよね? フィルタとか数式とか)

 (半平太) 2010/06/02 14:43

ホテルの予約管理も含む顧客リストなのですが、フィルターオプション設定で日付で抽出してからさらにルームナンバーで抽出して顧客データを1件に絞り込んでいます。

はじめは複数条件で抽出していたのですがうまくいかなかったため、2度フィルターをしています。

本来アクセスで作るのがいいのでしょうがスキルがないもので、是非よろしくお願いしますm(__)m


 マクロ案です。

  (1) 「顧客抽出」のシート見出しを右クリックして「コードの表示」を選択。
  (2) 画面中央の白いところに下記コードをコピペ
  (3) Alt + F11 でエクセル画面に戻る
  (4) 「マクロ実行」ボタンを、適当な所に配置して、上述マクロを登録する。

  (5)フィルタオプションを使って、データを1行(5行目)に絞り、
   必要なデータ修正が完了したら、上述「マクロ実行」ボタンをクリックする。

  Sub dataUpdate() '修正データを顧客データシートに反映させる
     If IsNumeric(Range("A5").Value) And Not IsEmpty(Range("A5").Value) Then
         Worksheets("顧客リスト").Cells(Range("A5").Value, 1).Resize(1, 26).Value _
             = Range("A5:Z5").Value
     Else
         MsgBox "行番号が??です"
     End If
  End Sub

 (半平太) 2010/06/02 17:40

 再考

 こんな流れが実現できるマクロを作った方がいいと思われます。
  ↓
 「日付」と「ルームナンバー」をどこかに手入力する→検索ボタンを押す→
  マクロが作動して、該当する行(複数もあり)が抽出される→
  データを手修正する→修正ボタンを押す→マクロが作動して、顧客リストに自動反映される

 (半平太) 2010/06/02 19:49

ありがとうございます。家に戻って早速試してみたいと思います。

 以下は、上で書いた再考案に基づいた解決案です。

 1.始めにイメージを先に書いておきます。

 <顧客リスト>サンプルデータ
  行  ___A___  __B__  ___C___  _____D_____  ___E___  _______F_______
   1  A        B      C        D                                    
   2  行番号   名前   住所     電話         日付     ルームナンバー 
   3       3   佐藤   東京01   03-007/00    5月3日              504 
   4       4   斉藤   東京02   03-0000      5月4日              503 
   5       5   伊藤   東京03   000-00-2222  5月3日              504 

 <顧客抽出> 抽出条件をA2:B2に入力し、抽出ボタンクリック後
  行  ___A___  _______B_______  ___C___  _____D_____  ___E___  _______F_______
   1  日付     ルームナンバー                                                 
   2  5月3日              504                                                 
   3                                                                          
   4  行番号   名前             住所     電話         日付     ルームナンバー 
   5       3   佐藤             東京01   03-007/00    5月3日              504 
   6       5   伊藤             東京03   000-00-2222  5月3日              504 

 <顧客抽出>電話番号を修正→修正実行ボタンをクリック
  行  ___A___  _______B_______  ___C___  ___D___  ___E___  _______F_______
   1  日付     ルームナンバー                                             
   2  5月3日              504                                             
   3                                                                      
   4  行番号   名前             住所     電話     日付     ルームナンバー 
   5       3   佐藤             東京01   03-444   5月3日              504 
   6       5   伊藤             東京03   03-555   5月3日              504 

 <顧客リスト> 修正反映状況
  行  ___A___  __B__  ___C___  ___D___  ___E___  _______F_______
   1  A        B      C        D                                
   2  行番号   名前   住所     電話     日付     ルームナンバー 
   3       3   佐藤   東京01   03-444   5月3日              504 
   4       4   斉藤   東京02   03-0000  5月4日              503 
   5       5   伊藤   東京03   03-555   5月3日              504 

 2.マクロ実行ボタンは2つになります。
   「抽出実行」用と「修正反映実行」用です。

 3.マクロコード
   (1) 「顧客抽出」のシート見出しを右クリックして「コードの表示」を選択。
   (2) 画面中央の白いところに下記コードをコピペ
   (3) Alt + F11 でエクセル画面に戻る
   (4) 「マクロ実行」ボタンを「顧客抽出」の適当な所に2つ配置して、下記マクロを登録する。

   ※ 使い方は、再考案の構想通りです。

 Sub pickup() '日付とルームナンバーが合致する全データ行を抽出するマクロ
     If WorksheetFunction.Count(Range("A2:B2")) < 2 Then
         MsgBox "検索データ未入力"
         Exit Sub
     End If

     Range("A4:Z1000").ClearContents

     With Sheets("顧客リスト")
         .Range("A2:Z" & .Range("A65536").End(xlUp).Row).AdvancedFilter _
             Action:=xlFilterCopy, _
             CriteriaRange:=Range("A1:B2"), _
             CopyToRange:=Range("A4"), _
             Unique:=False
     End With
 End Sub

 Sub dataUpdate() '修正データを顧客データシートに反映させるマクロ(複数行可)
 Dim cel As Range
 Dim lastRow As Long

     lastRow = Range("A65536").End(xlUp).Row

     If lastRow > 4 Then
        For Each cel In Range("A5:A" & lastRow)
            If IsNumeric(cel.Value) And Not IsEmpty(cel.Value) Then
                Worksheets("顧客リスト").Cells(cel.Value, 1).Resize(1, 26).Value _
                    = cel.Resize(1, 26).Value
            Else
                MsgBox "行番号が??です。アップデートを続行します"
            End If
        Next
     Else
         MsgBox "処理データがありません"
     End If
 End Sub

 (半平太) 2010/06/02 20:41

考えていたようにマクロ実行されました!

抽出条件の入力も含めフォームで作ってみました、各項目をテキストボックスに表示させ書換えなどおこなえるように、同時にフォーム上のコマンドボタンに

Sub dataUpdate() '修正データを顧客データシートに反映させる

     If IsNumeric(Range("A5").Value) And Not IsEmpty(Range("A5").Value) Then
         Worksheets("顧客リスト").Cells(Range("A5").Value, 1).Resize(1, 26).Value _
             = Range("A5:Z5").Value
     Else
         MsgBox "行番号が??です"
     End If
  End Sub

を登録したいと思います、何度も手間をかけさせてしまいますが

Private Sub CommandButton1_Click()

End Sub

内には度の様に書き込めばよろしいですか?


 >内にはどの様に書き込めばよろしいですか? 
 こんなのでいいと思いますが、検証はしておりません。
  ↓
 Private Sub CommandButton1_Click()
   With Worksheets("顧客抽出")
      If IsNumeric(.Range("A5").Value) And Not IsEmpty(.Range("A5").Value) Then
          Worksheets("顧客リスト").Cells(.Range("A5").Value, 1).Resize(1, 26).Value _
              = .Range("A5:Z5").Value
      Else
          MsgBox "行番号が??です"
      End If
   End With
 End Sub

 (半平太) 2010/06/03 00:01

半平太様本当に助かりました、ユーザーフォーム・コマンドボタンでも実行されました。

自分の足りない説明のなか丁寧なアドバイスや方法などありがとうございました。


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.