[[20160918160623]] 『別シートから文字列を参照し、抽出する』(こた) ページの最後に飛ぶ

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

 

『別シートから文字列を参照し、抽出する』(こた)

お世話になっています。
前回質問した表と同じ表についてになりますが
アドバイスを頂けたらと思います。

今回の質問は、前回の質問に追加して、名前を入力する手間を省く為、別シートから名前を参照する方法を教えて頂けたらと思います。

Sheet(”顧客情報”)         Sheet("ベネッセ&進研模試")
          
                  D2 検索したい名前 「(名前抽出)ボタン」

D8  田中            C6・7  田中
D9  鈴木      ➡     C8・9  鈴木
D10  伊東            C10・11 伊東
   ・                ・               
   ・                ・

D107               C208・209

Sheet(”顧客情報”)のD列に名前を入力すると、自動でSheet("ベネッセ&進研模試")のC列に参照され、このシートのD2に名前を入力し、ボタンをクリックすると、その名前だけが抽出出来ればと思っています。
今実行しているコートは、前回質問した、「結合セルのオートフィルターで、抽出条件に合う結合セルを抽出したい。」という質問からアドバイスを頂いた下記のsyさんのコードを使用させて頂いてます。

Sub 進研ベネッセ__名前抽出()

    ActiveSheet.AutoFilterMode = False
    With Range("QK6:QK209")
        .Formula = "=IF(MOD(ROW(),2),C5&"""",C6&"""")"
        .Value = .Value
        .Copy
        Range("C6:C209").PasteSpecial Paste:=xlPasteFormulas
        .ClearContents
    End With
    Range("A5:G209").AutoFilter Field:=3, Criteria1:="*" & Range("D2").Value & "*"
 End Sub

ご指摘、アドバイス等宜しくお願い致します。

< 使用 Excel:Excel2013、使用 OS:Windows8 >


申し訳ありません。
自分で解決できました。
(こた) 2016/09/18(日) 17:03

 自己解決は祝着ですけど、解決したなら、このようにやって解決したとご披露されたほうが
 今までフォローされたsyさんや、あるいは、関連トピを閲覧していた人に役立つと思いますが。

 Q/Aサイトにおけるやり取りは Give & Take がいいと思いますねぇ。

 それより、 どうも、よくわかりません。

 顧客情報シートに名前を列挙して、それを、そのまま ベネッセ&進研模試シート にコピーするのなら
 最初から ベネッセ&進研模試シートに打ち込めばいいと思います。

 いやいや、そうではない。顧客情報 は、すべての生徒の情報であり、ベネッセ&進研模試 に関しては
 そのなかの一部の生徒しか対象ではないというなら、逆に 顧客情報シートからベネッセ&進研模試シートに
 まるまるコピーすること自体がおかしくないですか?

 顧客情報シートに新しく山田三郎君が登録された。でも、この山田三郎君はベネッセ&進研模試を受けない人だった場合、
 無条件にコピーされていれば、ベネッセ&進研模試で、 山田 で絞り込んだ時に 山田三郎君が 対象者になってしまいますが
 いいのですか?

(β) 2016/09/18(日) 17:09


 こんばんわ。

 自己解決されたと言う事で何よりですが、βさんも言われてるように、こたさんが困った時にこの掲示板で解決できたように、
 今度はこたさんが同じ問題を抱えている人達の手助けになってあげて下さい。
 それがこの掲示板の意義の一つでもあるので、お願いします。

 こたさんの方法と同じかは分かりませんが、一応私からも方法を提示しておきます。
 と言っても数式の部分を変えるだけですけどね。

 Sub 進研ベネッセ__名前抽出() 

    ActiveSheet.AutoFilterMode = False
    With Range("QK6:QK209")
        .Formula = "=INDEX(顧客情報!D:D,INT(ROW(A16)/2))&"""""
        .Value = .Value
        .Copy
        Range("C6:C209").PasteSpecial Paste:=xlPasteFormulas
        .ClearContents
    End With
    Range("A5:G209").AutoFilter Field:=3, Criteria1:="*" & Range("D2").Value & "*"

 End Sub

(sy) 2016/09/18(日) 21:58


遅くなりました。
自己完結してしまい申し訳ありません。

解決したと思われた方法を掲示します。
ただ、結局は問題が出てしまい、解決策とはいえないものです。

抽出を行う前にSheet("ベネッセ&進研模試") の名前の列に、Sheet(”顧客情報”)からコピーした
名前を載せたいので、
例えばSheet("ベネッセ&進研模試") のセルC6に

='顧客情報'!D8

という式を入れてみました。
抽出を行う前に名前がコピーされ、抽出も出来て、簡単に解決出来たと思ったのですが、
当然ながら、抽出の時にC列にコピーするので、1度抽出を行うと='顧客情報'!D8という式は消えてしまい
抽出後はコピー出来なくなりました。

ベネッセ&進研模試は、名前以外も多く入力する項目があり、
そのうち5項目が顧客情報シートと入力が被るので
2度入力する手間を省けないかなと思い、解決策を探していました。
そして、ベネッセ&進研模試は全ての生徒が受けるので、顧客情報からコピーされても問題ありません。

説明が分かりにくくてすみません。

(こた) 2016/09/19(月) 13:08


 >抽出の時にC列にコピーするので、1度抽出を行うと='顧客情報'!D8という式は消えてしまい 
 >抽出後はコピー出来なくなりました。

 でしたら、(sy) 2016/09/18(日) 21:58 で出来ませんか?

 >そのうち5項目が顧客情報シートと入力が被るので 
 >2度入力する手間を省けないかなと思い、解決策を探していました。

 上記式は結合セル用に2行同じ表示されるようになってますが、他の項目は結合セルでは無いんですか?
 無いなら、右辺は
 "=IF(MOD(ROW(),2),INDEX(顧客情報!A:A,INT(ROW(A16)/2))&"""","""")"
 で出来ます。
 顧客情報!A:AのAの部分を、必要項目のある列に変更すれば良いです。
 左辺の修正は分かりますよね?

(sy) 2016/09/19(月) 14:15


(sy) 2016/09/18(日) 21:58 をコピーして使わせて頂いたのですが
#REF!と表示されできませんでした。
他の項目も結合セルです。
(こた) 2016/09/19(月) 14:44

 #REF!エラーになるなら、シート名が「顧客情報」とは微妙に違ってるんじゃないですか?

(sy) 2016/09/19(月) 14:58


 一点気になる事が、

 >='顧客情報'!D8

 のシート名は、'顧客情報'!D8 になるんですか?
 私の環境では、顧客情報!D8 になるんですが、
 実はシート名の左右どちらかに半角スペースなどが入っていると言う事はありませんか?
 実際は、' 顧客情報'!D8とかでは無いですか?

(sy) 2016/09/19(月) 15:07


 要らない場合は消えるのか。
 なら、

 "=INDEX(顧客情報!D:D,INT(ROW(A16)/2))&"""""

 を、

 "=INDEX('顧客情報'!D:D,INT(ROW(A16)/2))&"""""

 に変えてみて下さい。

 これでもエラーになるなら、ほぼ確実に実際のシート名が違うと思います。

(sy) 2016/09/19(月) 15:17


コメント返信:

[ 一覧(最新更新順) ]


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