[[20090210161806]] 『検索して転記』(uchi) >>BOT

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

 

 『検索して転記』(uchi)

 データシート
  A列    B列   C列
  図番    長さ   個数
 1 3321       L1       3
 2 3322       L1       3
 3 3323       L1       3
 4 3323       L2       3
 5 3323       L3       3

 入力シート
  A列     B列   C列 
 1 3321    L1    3   ←A1に図番を入力し、検索ボタンを押すと、
 2 3322       L1       3    データシートから同じ図番のデータを検索して
 3 3323       L1       3    B1とC1に反映させたいです。 
 4          L2       3
 5          L3       3
 6 3322       L1       3
 7 3323       L1       3   ←このように、同じ図番で長さが違うものは
 8          L2       3    A8・A9のように図番を空白にしつつ、B8・B9・ 
 9          L3       3    C8・C9には数値を入れたいのです。

 上記のように入力シートのA列に図番を入力し、検索ボタンを押したら、データシート
 の中から同じ図番を検索して、長さと個数を入力シートのB列およびC列に反映させる
 ものを作成したいのですが、どなたかご協力いただけませんでしょうか?
 VBAでも関数でもどちらでもかまいません。

 1.同じ図番で長さが3通りある場合の転記方法がわかりません。 

 2.データの3行〜5行目のように図番によっては、長さが3通りあったりするので、
  1通りしかない図番と区別をしやすいように、4行目5行目のように図番欄を空白で
  表示させたいのですが、転記方法と同じくやり方がわかりません。

 図番はひとつずつ入力して、その都度検索ボタンを押して、反映させるように作成している途中で、行き詰まってしまいました。

 あまり詳しいほうではないのですが、なんとか作成したくて、質問してみました。
 どなたか教えていただけたら、嬉しいです。どうぞよろしくおねがいいたします。


[[20090208103047]]
 このへん参考になりますか?


 ありがとうございます。
 質問を探しても、したいことと過去ログの参照がなかなかぴったりこなかったので、
 助かりました。探せなかった、が正しいですね(^^;)
 ちょっと解読に時間がかかるかもしれませんが、参考にしてみます。
 (uchi)


 こんにちは〜♪

 関数案です。。。
 あまり、パッとしませんけれど。。。

 こんな表の場合です。。。

 データシート ↓

 ┌─┬────┬────┬────┐
 │  │   A    │   B    │   C    │
 ├─┼────┼────┼────┤
 │ 1│図番    │長さ    │個数    │
 ├─┼────┼────┼────┤
 │ 2│    3321│L1      │       3│
 ├─┼────┼────┼────┤
 │ 3│    3322│L1      │       3│
 ├─┼────┼────┼────┤
 │ 4│    3323│L1      │       3│
 ├─┼────┼────┼────┤
 │ 5│    3323│L2      │       3│
 ├─┼────┼────┼────┤
 │ 6│    3323│L3      │       3│
 ├─┼────┼────┼────┤
 │ 7│        │        │        │
 └─┴────┴────┴────┘

 入力シート ↓

 ┌─┬────┬────┬────┬────┬────┐
 │  │   A    │   B    │   C    │   D    │   E    │
 ├─┼────┼────┼────┼────┼────┤
 │ 1│図番    │長さ    │個数    │        │作業列  │
 ├─┼────┼────┼────┼────┼────┤
 │ 2│    3321│L1      │       3│        │       1│
 ├─┼────┼────┼────┼────┼────┤
 │ 3│    3322│L1      │       3│        │       1│
 ├─┼────┼────┼────┼────┼────┤
 │ 4│    3323│L1      │       3│        │       1│
 ├─┼────┼────┼────┼────┼────┤
 │ 5│        │L2      │       3│        │       2│
 ├─┼────┼────┼────┼────┼────┤
 │ 6│        │L3      │       3│        │       3│
 ├─┼────┼────┼────┼────┼────┤
 │ 7│    3322│L1      │       3│        │       1│
 ├─┼────┼────┼────┼────┼────┤
 │ 8│    3323│L1      │       3│        │       1│
 ├─┼────┼────┼────┼────┼────┤
 │ 9│        │L2      │       3│        │       2│
 ├─┼────┼────┼────┼────┼────┤
 │10│        │L3      │       3│        │       3│
 ├─┼────┼────┼────┼────┼────┤
 │11│        │        │        │        │       4│
 ├─┼────┼────┼────┼────┼────┤
 │12│        │        │        │        │       5│
 ├─┼────┼────┼────┼────┼────┤
 │13│        │        │        │        │       6│
 ├─┼────┼────┼────┼────┼────┤
 │14│        │        │        │        │       7│
 ├─┼────┼────┼────┼────┼────┤
 │15│        │        │        │        │       8│
 └─┴────┴────┴────┴────┴────┘

 ★E列に作業列を作ります。。。

 E2セルへ
 =IF(A2<>"",1,"")

 E3セルへ
 =IF(E2="","",IF(A3="",E2+1,1))
 下へ、ずーっとコピー。。。

 ★長さの抽出
 B2セルへ
 =IF(COUNTIF(データ!$A:$A,LOOKUP(10^7,$A$2:$A2))<E2,"",INDEX(データ!B:B,MATCH(LOOKUP(10^7,$A$2:$A2)
,データ!$A:$A,0)+$E2-1))

 ★個数の抽出
 C2セルへ
 =IF(B2="","",INDEX(データ!C:C,MATCH(LOOKUP(10^7,$A$2:$A2),$A:$A,0)+$E2-1))

 B2 C2 の式を下へコピー。。。

 *作業列は、データシートへ作って入力シートの B C列の式で
  参照しても良いですね。。。

 ご参考にどうぞ。。。

 。。。Ms.Rin〜♪♪

 **********
 ゴメンナサイ!!。。。追記です。。。

 E2セルの式が違ってましたので、編集で訂正しました。。。


 Ms.Rin〜♪♪様、おはようございます。ご親切、ありがとうございました。
 まだまだ未熟もので勉強しながら解読してみますので、しばらく時間が
 かかると思いますが、
 がんばって完成させたいと思います。

 恥ずかしながら・・・質問させてください。
 古い参考書片手に、勉強中なのですが、B2セルへ当てる関数のうち、

 =IF(COUNTIF(データ!$A:$A,LOOKUP(10^7,$A$2:$A2))<E2,"",INDEX(データ!B:B,MATCH(LOOKUP(10^7,$A$2:$A2)

 となっていて、『10^7』がどんな意味をもつのか、わかりません・・・
 よろしければ、ご教示くださいませんでしょうか?
 どうぞよろしくおねがいいたします。

 (uchi)


 >『10^7』がどんな意味をもつの
 大きな数・・・範囲$A$2:$A2の最大値より大きい数であれば何でも良いです。

 間違いがありましたので、編集削除しました

 By


 By様、こんにちは。
 『10^7』の件、ありがとうございました。
 謎解きができて、少し前進しています。
 また教えてくださいね。

 (uchi)

 何度もすみません。
 Ms.Rin〜♪♪様の関数で、例のような表を作って、試してみました。
 ちゃんと、検索ができました。図番の空白もまさに、理想通りでした。
 ありがとうございました。すごいですね〜(@_@)。感動です。
 ところが・・・質問の例題が悪かったようで、実際の図番のデータは、33021852Aという風に8桁の番号の末尾にA〜Zまでの英字がついているので、
 例のデータシートの図番に英字を入力してみると、検索がうまくいきませんでした。英字が付いていない場合は、ちゃんと検索してくれました。

 データシートは

 A     B    C      D    E    F     G
 図番    作業   図番+作業  部品名  品番  品番数量  材質
 ↑8桁番号 ↑A〜Z  ↑8桁+英字                

 といった感じです。
 最初はA・Bで検索させようと作成していましたが、同じ図番で作業違いがあるので、
 C列を設けてみました。

 入力シートには
   A  B  C    D   E    F    G    H     I   J
         必要数  作業  図番  部品名  品番  品番数量  材質  図番+作業

 11    1
 12    2
 ・     ・ 
 ・     ・
 36    26まで

 データのC列と同じように、入力シートにも、M列に、Eセル+Dセル(33021852Aのように)を自動で入力するように設けてみました。
 今回はこれで検索させようとしていたのですが、うまくいきませんでした。
 最終的には、入力シートと同じフォーマットの出力シートに反映させて、印刷という流れです。

 それから、入力シートのM列のように、図番(8桁)+作業(A〜Z)にする必要がないなど、無駄なことしてるって、お気づきの点などありましたら、教えてください。
 未熟者なので、質問もうまくできていないかもしれませんが、もう一度ご教示くださいませんか?よろしくお願いいたします。

(uchi)


 こんにちは〜♪

 >ところが・・・質問の例題が悪かったようで、実際の図番のデータは
 >、33021852Aという風に8桁の番号の末尾にA〜Zまでの英字がついているので、

 のデータが、提示されていないので。。
 良くわかりませんけれど。。。

 こういう事でしょうか。。。?

 こんな表の場合です。。。

 データシート ↓

 ┌─┬─────┬────┬─────┬────┬────┬────┬────┐
 │  │    A     │   B    │    C     │   D    │   E    │   F    │   G    │
 ├─┼─────┼────┼─────┼────┼────┼────┼────┤
 │ 1│図番      │作業    │図番+作業 │部品名  │品番    │品番数量│材質    │
 ├─┼─────┼────┼─────┼────┼────┼────┼────┤
 │ 2│  11111111│A       │11111111A │あ      │     100│      10│aa      │
 ├─┼─────┼────┼─────┼────┼────┼────┼────┤
 │ 3│  11111112│B       │11111112B │い      │     101│      20│bb      │
 ├─┼─────┼────┼─────┼────┼────┼────┼────┤
 │ 4│  11111113│A       │11111113A │う      │     102│      30│cc      │
 ├─┼─────┼────┼─────┼────┼────┼────┼────┤
 │ 5│  11111113│A       │11111113A │え      │     103│      40│dd      │
 ├─┼─────┼────┼─────┼────┼────┼────┼────┤
 │ 6│  11111113│A       │11111113A │お      │     104│      50│ee      │
 ├─┼─────┼────┼─────┼────┼────┼────┼────┤
 │ 7│  11111113│C       │11111113C │か      │     105│      60│ff    │
 ├─┼─────┼────┼─────┼────┼────┼────┼────┤
 │ 8│          │        │          │        │        │        │        │
 └─┴─────┴────┴─────┴────┴────┴────┴────┘

 入力シート ↓

 ┌─┬────┬────┬────┬────┬────┬────┬────┬────┬──────┬────┐
 │  │   A    │   B    │   C    │   D    │   E    │   F    │   G    │   H    │     I      │   J    │
 ├─┼────┼────┼────┼────┼────┼────┼────┼────┼──────┼────┤
 │ 1│      │必要数  │作業    │図番    │部品名  │品番    │品番数量│材質    │図番+作業   │作業列  │
 ├─┼────┼────┼────┼────┼────┼────┼────┼────┼──────┼────┤
 │ 2│       1│        │C       │11111113│か      │     105│      60│ff    │11111113C   │       1│
 ├─┼────┼────┼────┼────┼────┼────┼────┼────┼──────┼────┤
 │ 3│       2│        │A       │11111113│う      │     102│      30│cc      │11111113A   │       1│
 ├─┼────┼────┼────┼────┼────┼────┼────┼────┼──────┼────┤
 │ 4│       3│        │        │        │え      │     103│      40│dd      │11111113A   │       2│
 ├─┼────┼────┼────┼────┼────┼────┼────┼────┼──────┼────┤
 │ 5│       4│        │        │        │お      │     104│      50│ee      │11111113A   │       3│
 ├─┼────┼────┼────┼────┼────┼────┼────┼────┼──────┼────┤
 │ 6│       5│        │A       │11111113│う      │     102│      30│cc      │11111113A   │       1│
 ├─┼────┼────┼────┼────┼────┼────┼────┼────┼──────┼────┤
 │ 7│        │        │        │        │え      │     103│      40│dd      │11111113A   │       2│
 ├─┼────┼────┼────┼────┼────┼────┼────┼────┼──────┼────┤
 │ 8│        │        │        │        │お      │     104│      50│ee      │11111113A   │       3│
 ├─┼────┼────┼────┼────┼────┼────┼────┼────┼──────┼────┤
 │ 9│        │        │        │        │        │        │        │        │11111113A   │       4│
 ├─┼────┼────┼────┼────┼────┼────┼────┼────┼──────┼────┤
 │10│        │        │        │        │        │        │        │        │11111113A   │       5│
 ├─┼────┼────┼────┼────┼────┼────┼────┼────┼──────┼────┤
 │11│        │        │        │        │        │        │        │        │11111113A   │       6│
 └─┴────┴────┴────┴────┴────┴────┴────┴────┴──────┴────┘

 ★C列に→作業 D列に→図番 を入力します。。。

 ★前回と同じ様に、作業列を作ります。。たとえば、J列に。。。

 式は。。。

 ★図番+作業 I列
 I2セルへ
 =IF(COUNTA(C2:D2)<2,"",D2&C2)

 I3セルへ
 =IF((COUNTA(C3:D3)=1)+(I2=""),"",LOOKUP(10^10,$D$2:D3)&LOOKUP("ー",$C$2:C3))
 下へ、ずーっとコピー。。。

 (注)入力シートの8桁の図番の入力は、数値の場合です。。
     文字列の場合は、10^10 を "ー" にして下さい。。

 ★作業列 J列
 J2セルへ
 =IF(I2="","",1)

 J3セルへ
 =IF(I3="","",IF(COUNTA(C3:D3)<2,J2+1,1))
 下へ、ずーっとコピー。。。

 ★「部品名」「品番」「品番数量」「材質」 の抽出
 E2セルへ
 =IF(COUNTIF(データ!$C:$C,$I2)<$J2,"",INDEX(データ!D:D,MATCH($I2,データ!$C:$C,0)+$J2-1))

 右(H列まで)と下へコピー。。。

 ご参考にどうぞ。。。

 。。。Ms.Rin〜♪♪


 Ms.Rin〜♪♪様、わかりにくかったようで、すみません。
 でも・・・まさしく、こんな表です!(^^)!
 すばらしいです!
 実際に本番(?)のファイルに入力するのが、
 月曜日になりそうなので、しばらく時間をください。
 貴重なお時間をいただきありがとうございました。
 あと、最初に関数を教えていただいたのに、例題が品祖で
 Ms.Rin〜♪♪様の時間が勿体なかったですね。すみません。
 とりいそぎ、お礼をと思いメールしました。

(uchi)


 一回限りの抽出ならこんなのも?
[[20080704141202]]『ある条件を含む行を別シートにまとめたい』(あい)


 あい様
 ありがとうございます。
 取り急ぎお礼まで・・・
 (uchi)


 >あい様

 リンク先の質問者のHNです。
 お礼は名無しさんへ??
 (とおりすがり)


 とおりすがり様

 そうですね。名無しさんへですね。
 早とちりしています。ありがとうございました。
 (uchi)


 名無し様
 あい様のログを教えていただきありがとうございます。
 お礼が遅くなり申し訳ありませんでした。
 今回は一回限りの検索ではないのですが、検索関数は
 今後の参考にしますね。
 ありがとうございました。
  (uchi)


 Ms.Rin〜♪♪様
 おはようございます。途中経過です。
 Ms.Rin〜♪♪様の参考データ、エクセルで作ってみて試してみました。
 バッチリです。まだまだ本番ではないのですが、嬉しくってお知らせ
 したくなって・・・(^_^;)
 ありがとうございます。今から本番のほう、作成します。
 (uchi)


 Ms.Rin〜♪♪様へ・・・
 こんにちは。
 本番のほうも、無事成功しましたのでお知らせいたします。
 何かわからないことが発生しましたら、またご教示ください。
 この度はお世話になり、ありがとうございました。
 理想通りのものができ、感激しています。

 ご協力いただいた、皆様へ・・・
 最初に参考資料を教えていただいた、名無し様
 BY様
 とおりすがり様
 (あい)様のログを教えて下さった名無し様
 この度はMs.Rin〜♪♪様の関数にて無事完成することができました。
 皆様にもご協力いただき、ありがとうございました。
 今後の仕事に活用していきたいと思います。 また色々と教えてください。

 皆様に感謝です<(_ _)>
 (uchi)


コメント返信:

[ 一覧(最新更新順) ]


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