[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『文字の一部で他の文字を検索する』(バドファン)
sheet1 A B C あああ1 ああああ1 いい6 ううう3
sheet2 A B トマト ああ りんご うう すいか いい
やりたい事 sheet2のB列の文字で上から順番にsheet1のB列の文字を順次上から検索し 一部同じならsheet2のA列を抽出しsheet1のA列に入力する
又、A列上下違っていたら10列ほど下に罫線を入力する。
A B C トマト あああ1 トマト ああああ1 −−−−−−−−−−−−−−−−−−−− すいか いい6 −−−−−−−−−−−−−−−−−−−− りんご ううう3 −−−−−−−−−−−−−−−−−−−−
同じ様な物を探しましたが応用がききません宜しくお願いします。
< 使用 Excel:Excel2007、使用 OS:Windows7 >
(バドファン) 2014/08/03(日) 20:32
Sheet1
A1 =LOOKUP(1,0/(LEFT(B1,MAX(1,INDEX(LEN(Sheet2!B$1:B$20),)))=Sheet2!B$1:B$20),Sheet2!$A$1:$A$20) 下へコピー。
>又、A列上下違っていたら10列ほど下に罫線を入力する。
10「列」下って意味がよーわからんので 罫線は条件付書式かね? (GobGob) 2014/08/04(月) 08:12
>又、A列上下違っていたら10列ほど下に罫線を入力する。 10列幅分、下線を引くっていう意味ではないですか。
いずれにせよ、条件付き書式だと思いますが。 (Mook) 2014/08/04(月) 08:37
あー。なるほどっす。
A1からJ4を選択して条件付書式の数式で
=AND($A1<>"",$A1<>$A2) 下罫線設定 (GobGob) 2014/08/04(月) 09:05
A1 =LOOKUP(1,0/(LEFT(B1,MAX(1,INDEX(LEN(Sheet2!B$1:B$20),)))=Sheet2!B$1:B$20),Sheet2!$A$1:$A$20) の関数で出来ました。意味はよく分からないけど数百行この関数で抽出して値コピーしたらいい。 ありがとうございました。
Mookさんもありがとうございました。
マクロでは
If s Like "*ああ*" Then で* *の中に順次 *うう* *いい*とか順番に入れて検索方法は難しいのですかね?
(バドファン) 2014/08/04(月) 21:24
やっぱりマクロじゃないとダメなのかなぁ。
(バドファン) 2014/08/05(火) 18:09
>行の多いので行ったら38行以降がエラー#N/Aが出ます、数が多いとダメなんですね。 試した式と、エラーが出るサンプルデータをのせてみられてはどうでしょう? (HANA) 2014/08/06(水) 16:35
>データが何千行も有る会社のデータなのでダメですが 全部を載せてもらう必要はありません。 不具合が出るサンプルデータであれば データ量が少なくても有益です。 むしろ、大量のデータをのせて 「この中のどこかのデータが不具合を起こしているから 突き止めて、対応できる式を考えて」 っていう方が、よくないと思います。
実際に不具合が出るデータを持っておられるのですから 少しずつデータを少なくして 悪さをしているデータを探してみてください。
例題では、sheet2のB列の最大文字数は「2」 sheet1のB列も二文字以上だったり、必ずヒットするものになっています。 そのあたりのデータの違いじゃないかと思いますが。
>関数はA1 =LOOKUP(1,0/(LEFT(B1,MAX(1,INDEX(LEN(Sheet2!B$1:B$20),)))=Sheet2!B$1:B$20),Sheet2!$A$1:$A$20) これだと、20セルまでの範囲ですよね? Sheet2の方のデータは20件しか無いのでしょうか?
>If s Like "*ああ*" Then で* *の中に順次 *うう* *いい*とか順番に入れて検索方法は難しいのですかね? ループ処理について調べてみてください。 たとえば、Sheet2をアクティブにして Sub TEST() Dim i As Long For i = 1 To Range("B" & Rows.Count).End(xlUp).Row MsgBox "*" & Range("B" & i).Value & "*" Next End Sub を実行してもらうと、* *の中に順次B列の値が入って メッセージボックスに表示されます。 (HANA) 2014/08/07(木) 08:59
sheet1のB列も二文字以上だったり →(検索される文字も5以上でこちらも一定では有りません)
範囲はSheet2の方のデータに合わせて変更してます。
データ量を減して色々やってましたが、
来週またマクロともどもトライしてみます。
(バドファン) 2014/08/08(金) 12:38
マクロ向きだと思います。 そちらに焦点を絞ってやってみられるのが良いと思います。 (HANA) 2014/08/08(金) 15:15
こんな感じかな
=LOOKUP(1,0/((LEFT(B1,LEN(Sheet2!B$1:B$20))=Sheet2!B$1:B$20)*(Sheet2!B$1:B$20<>"")),Sheet2!$A$1:$A$20)
=LOOKUP(1,0/(SUBSTITUTE(B1,Sheet2!$B$1:$B$10,"")<>B1),Sheet2!$A$1:$A$10) (By) 2014/08/08(金) 16:02
=LOOKUP(1,0/(SUBSTITUTE(B1,Sheet2!$B$1:$B$10,"")<>B1),Sheet2!$A$1:$A$10)は希望の品名が抽出できなかった。
最初の関数を使用して下記のマクロで約2秒です。(2万行で)
Sub tyuusyutu()
Dim g As Long
g =Range("B" & Rows.Count).End(xlup).Row
Range("A4:A" & g).ClearContents
Range("A4:A" & g).Formula = _
"=LOOKUP(1,0/((LEFT(B1,LEN(Sheet2!B$4:B$500))=Sheet2!B$4:B$500)*(Sheet2!B$4:B$500<>"""")),Sheet2!$A$4:$A$500)"
Range("A4:A" & g).Value = Range("A4:A" & g).Value
End Sub
すばらしい関数です、良く理解できませんがありがとうございました。
(バドファン) 2014/08/11(月) 21:44
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.