- 締切済み
【EXCEL2003】図の抽出の条件でさらに大文字小文字を区別したいのですが…
http://briefcase.yahoo.co.jp/bc/kazuminagata1123/lst?.dir=/%a5%de%a5%a4%a5%c9%a5%ad%a5%e5%a5%e1%a5%f3%a5%c8&.order=&.view=l&.src=bc&.done=http%3a//briefcase.yahoo.co.jp/ このファイルをさらに改善させたいのですが、自分の実力ではうまくいかず、お助け舟をだしました。 本当はコード図もJ列に入力しなければ、表示しないという風にしたかたのですが、それはあきらめます。 別シートのコード表のほうなのですが、index関数とmatch関数を組み合わせて、ばっちりーーーと思っていたところ、大文字小文字を区別されないのが分かって、たとえば「Fm」と「FM」の区別ができないんです。 exact関数を使ってできるのかなーとはなんとなく思ってるのですが、どう組み込んでいいのか分からず、おそらく名前の定義のところのコード図01~の参照先に組み込むのではないかとはおもってるのですが、だれか詳しい方お願いします><
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- zap35
- ベストアンサー率44% (1383/3079)
#01です。ちょっと試してみれば分かると思うのですが、 >MATCH(ギター楽譜!$J$3,コード表!$A:$A,0) の部分が以下に置き換わります。 MIN(INDEX(SUBSTITUTE(EXACT(コード表!A1:A1000,ギター楽譜!$J$3)*1,0,10^4)*ROW(コード表!A1:A1000),)) 従って =INDEX(コード表!$B:$B,MIN(INDEX(SUBSTITUTE(EXACT(コード表!A1:A1000,ギター楽譜!$J$3)*1,0,10^4)*ROW(コード表!A1:A1000),))) で求まりませんか? EXACT関数では"A:A"のような列単位の範囲指定はできないので"A1:A1000"を範囲にしています。必要に応じて変更してください
- zap35
- ベストアンサー率44% (1383/3079)
質問にあるURLは見ていませんが、大文字、小文字を識別して検索文字の行番号を取得したいなら =MIN(INDEX(SUBSTITUTE(EXACT(A1:A12,C5)*1,0,10^4)*ROW(A1:A12),)) で「Fm」が出現する行番号を取得できます。(A1:A100の範囲は変更してください) 検索値が見つからないときは#NUM!エラーになります また蛇足ですがユーザ定義関数にする方法もあります。以下のマクロをALT+F11でVBE画面を開き、左上のVBA Projectでシート名を右クリックし「挿入」→「標準モジュール」で表示される画面に貼り付けて下さい。 シートに戻って =eMatch("Fm",A1:A100) のように入力してください。完全一致しか考慮していません。 見つかった文字列の行番号を返しますが、もし通常のMatch関数と同じように「指定した範囲の○行目」を返す方がよいなら、コメントにしている行を上の行と入れ替えてください Function eMatch(ByVal trg As Variant, rng As Range) As Variant Dim res Set res = rng.Find(what:=trg, LookIn:=xlValues, lookat:=xlWhole, MatchCase:=True) If res Is Nothing Then eMatch = CVErr(xlErrNA) Else eMatch = res.Row ' eMatch = res.Row - rng.Cells(1, 1).Row + 1 End If End Function
補足
投稿ありがとうございます。 シート「コード表」、「ギター楽譜」 コード表のA列には実際のコードの文字列 たとえば「A」、「B」 コード表のB列にはギターのコード図を図としてセルに埋めています。 ギター楽譜のH列の各場所に図のリンク貼り付けで参照先を =INDEX(コード表!$B:$B,MATCH(ギター楽譜!$J$3,コード表!$A:$A,0)) としています。 たとえば、ギター楽譜のJ3に「A」と入力するとH4の図がAのコード図になるというものを作ったのです。 ここで難点がありまして、大文字小文字が区別されないということで投稿させてもらったしだいです。 図の参照先を編集すればどうにかなるのではないかとは思ってるのですが、実際どう編集すればよいか分からず、困っていました。 これをふまえて教えていただけないでしょうか>< お願いします。
補足
何度もすみません。 早速、参照先をかえてみたのですがうまくいきませんでした>< 図のリンク貼り付けをしてその図に名前をつけ、その名前の定義で参照先を =INDEX(コード表!$B:$B,MIN(INDEX(SUBSTITUTE(EXACT(コード表!A1:A1000,ギター楽譜!$J$3)*1,0,10^4)*ROW(コード表!A1:A1000),))) にするということですよね? どこかさらにいじらなければならないところがあるのでしょうか? もしお時間がありましたら、実際ファイルを見ていただいて、おかしいところの注意点など教えていただきたいのですが><