[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『抽出先でデータ編集をして抽出元に反映させたい』(こんこん)
抽出元 シート"顧客リスト"
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
はじめは複数条件で抽出していたのですがうまくいかなかったため、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.