セル内の複数データと表を一致させる方法

このQ&Aのポイント
  • セル内の複数のデータと表を一致させる方法についてお教えください。
  • 例えば、表の中の文字列とセル内のデータを自動的に一致させる計算式について教えてください。
  • 具体的には、肉まん・あんまん・カスタードマン・ピザマンというデータをaa01・bb01・cc01・ee01と一致させる方法を知りたいです。
回答を見る
  • ベストアンサー

1セル内の複数データと表を一致させる

非常に難儀しております。 ご存知の方お教えください。 前提として表にそれぞれにコードがついています。 (|は別セルを表現) 肉まん     | aa01 あんまん    | bb01 カスタードマン | cc01 ピザマン    | ee01 そして1つのセル内に複数のデータをランダムで 入力します。(最低でも二文字はあります) こんな感じ↓ 1)肉まん・あんまん・カスタードマン・ピザマン 2)カスタードマン・あんまん この時、結果を 1)aa01・bb01・cc01・ee01 2)cc01・bb01 と自動計算で表示することは可能でしょうか。 できれば計算式を含めてお教え願えませんでしょうか。 よろしくおねがいします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

ユーザー定義関数を使います。 Alt+F11を押してVisual Basic Editorを開きます。 挿入→標準モジュールを選択し、出てきた画面に以下のコードを入力します。 Function SubstituteAll(ByVal OrStr As String, ByVal ChRange As Range) As String Dim i As Variant Dim j As Integer i = ChRange.Value For j = 1 To UBound(i, 1) OrStr = Replace(OrStr, i(j, 1), i(j, 2)) Next j SubstituteAll = OrStr End Function 使い方 元の文字列がA5に、置換したい組み合わせがA1:B4にあるとして、 =substituteall(A5,A1:B4) と入力します。

etu007
質問者

お礼

完全一致の説明が不完全ですので、 お礼のところに追加させていただきます。 例の表の中に”肉まんあんまん”というものがあり、 教えていただいた方法だと zz01とはならずに、aa01bb01と表示されてしまいます。 肉まん     | aa01 あんまん    | bb01 肉まんあんまん | zz01 お手数ですがよろしくお願いします。

etu007
質問者

補足

すごいです。ありがとうございます。こんな 設定ができるとは知りませんでした…。 もし可能なら完全一致のケースも教えていただけませんでしょうか? よろしくお願いします

その他の回答 (1)

回答No.2

データの区切り記号は1種類のみでしょうか? Function Split_Lookup(ByVal OrStr As String, ByVal ChRange As Range, ByVal Delim As String) As String '元の文字列、変換リスト、区切り記号 Dim i As Integer Dim ArStr As Variant ArStr = Split(OrStr, Delim) '区切り記号で分ける For i = 0 To UBound(ArStr) On Error Resume Next '変換リストにない場合に無視する ArStr(i) = Application.WorksheetFunction _ .VLookup(ArStr(i), ChRange, 2, False) 'VLOOKUP関数で変換 On Error GoTo 0 Split_Lookup = Split_Lookup & ArStr(i) '変換したものを戻り値に追加 If i <> UBound(ArStr) Then Split_Lookup = Split_Lookup & Delim '区切り記号を挟む End If Next i End Function =Split_Lookup(A5,A1:B4,"・") まず3番目の引数"・"で分けて、それぞれVLOOKUP関数で変換し、最後にもう一度"・"でつないでいます。要するに、関数を作らなくても手作業で置換できるわけですが・・・。まあ、データ量次第でしょうか。

関連するQ&A

  • エクセルのセル分けについて教えてください。

    エクセルで、1つのセルに  aa,"bb","cc,"dd","ee" というように入力されています。 それをaa bb cc のようにそれぞれのセルに分けたいのですが、方法が分かりません。 ご存知の方がいらっしゃいましたら、教えてください。宜しくお願いします。

  • JavaScriptで計算表

    下記のような計算式を作りたいのですが、ご教授願えませんでしょうか。 AA項目  セレクトボックスで、あ~おから選択(1)      セレクトボックスで、あ~おから選択(2)      セレクトボックスで、あ~おから選択(3)      セレクトボックスで、あ~おから選択(4)      セレクトボックスで、あ~おから選択(5)  ※ あ=40、い=30、う=20、え=10、お=5 とする BB項目  ユーザ入力(1)      ユーザ入力(2)      ユーザ入力(3)      ユーザ入力(4)      ユーザ入力(5) CC項目  AA項目とBB入力を掛けた計算結果表示(1)      AA項目とBB入力を掛けた計算結果表示(2)      AA項目とBB入力を掛けた計算結果表示(3)      AA項目とBB入力を掛けた計算結果表示(4)      AA項目とBB入力を掛けた計算結果表示(5) DD項目  2割~8割からセレクトボックスで選択(1)      2割~8割からセレクトボックスで選択(2)      2割~8割からセレクトボックスで選択(3)      2割~8割からセレクトボックスで選択(4)      2割~8割からセレクトボックスで選択(5) EE項目  セレクトボックスで、か~こから選択 ★ CC項目とDD項目を掛けた数字をすべて足した数字表示 「FF」   (例:CC項目(1)=DD項目(1)、CC項目(2)=DD項目(2)という考え方)   ★ CC項目とDD項目ごとに掛けた数字にEE項目で選択した数字を掛けて足した数字表示 「GG」    「計算ボタン」    「クリアボタン」 *************** 1.AA項目、BB項目は、必ずしも全部を選択しない(CC項目、DD項目も連動) 2.各項目も(1)と(1)で計算  (例)    AA項目(1)とBB項目(1)の計算結果がCC項目(1)に表示    CC項目(1)とDD項目(1)を計算 3.EE項目は、AA項目の選択の種類によって、掛ける数字が変わってくる。    AA項目 あ  EE項目 か = 20.2    AA項目 い  EE項目 か = 15.8    AA項目 う  EE項目 か = 13.7    AA項目 え  EE項目 か = 10.5    AA項目 お  EE項目 か = 8.2    AA項目 あ  EE項目 き = 31.6    AA項目 い  EE項目 き = 28.1    AA項目 う  EE項目 き = 22.4    AA項目 え  EE項目 き = 17.2    AA項目 お  EE項目 き = 14.7 4.GG項目は、CC項目とDD項目ごとに計算した数字に、3.で選択した数字を掛けて足した合計を表示   (例)     CC項目(1)とDD項目(1)を掛けた数字に、AA項目で「あ」を選択し、EE項目は「か」を選択 5.計算ボタンをクリックすると、「FF」と「GG」を計算する 6.クリアボタンをクリックすると、すべてクリアとする      ************ 仮に AA項目 「あ~う」までを選択 BB項目 (AA項目「あ」=15、AA項目「い」=8、AA項目「う」=3) DD項目 (AA項目「あ」=2割、AA項目「い」=4割、AA項目「う」=7割) EE項目 「か」を選択 分かりづらい説明で申し訳ございませんが、宜しくお願いいたします。

  • HLOOKUP関数で検索値が複数セルにわたっている場合

    下のような表があります。         | 50mm   | 100mm | --------|--------|--------| 0≦θ≦2 | 280 | AA | 380 | DD | 2<θ≦4 | 300 | BB | 490 | EE | 4<θ≦6 | 450 | CC | 520 | FF | 縦の項目は「パイプの角度」、横の項目は「パイプの太さ」です。 別のセルに、例えば セルA1=3(←角度)、           セルB1=50mm(←太さ) と入力してある場合に、セルC1に「BB」と表示させるにはどうしたらいいのでしょうか。 太さの項目が結合されているせいか、Hlookup関数何度試みても300と表示されるばかりなのです。 ものすごく分かりにくい説明と表で恐縮ですが、どなたかご助言をお願いします。

  • エクセルの表を回転したいのですが

    こんなことってできるのでしょうか。 1aA 2bB 3cC 4dD 5eE 6fF 7gG という風に書き込んでいる表があるのですが、これを 12345678 abcdefgh ABCDEFGH と書き直したいのです。 ご存じの方、よろしくお願い致します。

  • Excelの関数(表の並べ替え?)

    Excelの関数について質問します。 name address flower 01 aa bb cc 02 dd ee ff 03 aa ff bb 04 cc kk aa というような表から、似たような     flower   address   name 01 03 04 02 という表に落とし込みたいのです。 要するに並び替えだと思うのですが。 LOOKUPかINDEXあたりが使えるのかな? と思ったのですが、よく分かりません。 また、並び替えとはいえ同じタイトルが使われているので、出来れば間違い防止のためにタイトルを利用できたらと思います。 何か有効な方法はありませんでしょうか? よろしくお願いします。

  • 条件に一致したデータ数について

    該当する商品の合計数を所得したいのですが検出方法が分かりませんので教えて下さい。 商品マスタ(A)と売上げデータ(B)に下記のデータがあります。AとBの関係は、1:nになります。 Bの商品とAの商品が一致した場合にAの商品が売れたと判断します。 最終的にAの一致した商品数を取得したいのですが、Bの検出数が反映されてしまい正常に一致した件数を取得できません。いろいろ試みましたけどダメでした。どなたか、ご享受下さい。 ---------------- 商品マスタ(A) ---------------- AA BB CC DD EE FF ---------------- 売上げデータ(B) ---------------- AA 06/9/10 BB 06/9/10 BB 06/9/11 DD 06/9/12 AA 06/9/14 BB 06/9/14 AA 06/9/15 AA 06/9/16 BB 06/9/17 BB 06/9/17 BB 06/9/18 ---------------- 結果 ---------------- 3 ※--- 補 足 --- Bを商品毎にグループ化してカウントすると、 AA = 4件 BB = 6件 CC = 0件 DD = 1件 EE = 0件 FF = 0件 になります。売上げ件数が、0件以上の商品は、AA、BB、DDの3商品になります。この3の値を取得したい訳です。

  • エクセルで複数列を二列にまとめる

    エクセルのデータ成形に、知恵を貸していただけますでしょうか・・・ エクセルで以下のようなデータがあります(例では8行8列) コードは本当はランダムです。 #と右下の部分は空白セルです。横には数字、コード、数字、コードの並びで、数字は一行目のみです。 1 aa-1 2 bb-1 3 cc-1 4 dd-1 # aa-2 # bb-2 # cc-2 # dd-2 # aa-3 # bb-3 # cc-3 # aa-4 # bb-4 # aa-5 # bb-5 # aa-6 # aa-7 # aa-8 これらを 1 aa-1 1 aa-2 1 aa-3 . . 2 bb-1 2 bb-2 . . 4 dd-2 というように 1. 複数の列を2列ずつのグループで2列にまとめ 2. それぞれのグループごとに各コードの左のセルにグループの数字をつけたい   (どのコード(aa-1など)がどの数字グループなのか分かるように) と思っています。 なにかいい方法はありますでしょうか。 調べてはみたのですが、 複数列を一列ではなく、二列ずつまとめていることや、 各列の長さが一様ではないことなどから 各所で紹介されている方法が適用できないでおります。 VBAもほとんど使ったことがないので、それらを応用できません。 どうぞ知恵を貸していただけたらと思います。 よろしくお願い致します。

  • 重複しないセルのカウント 条件付

    下記のようなデータがエクセルシートに入力されている場合、どのように重複しないセルをカウントすれば良いでしょうか?例えば、SBの数を数えたいのですが、3行目・4行目にあるCC SBは重複しています。この重複を数えないように、かつ表全体にSBがいくつあるのかということです。宜しくお願いします。 AA SB BB RH CC SB CC SB DD HC EE RH FF HC

  • 選択による表示の可否を含めた複雑な計算表について

    下記のような計算表を作りたいのですが… AA  1  2  3  4 BB  11  12  13  14  15     ※AAのチェックによって表示され、選択可能    <例>    ・AA-1を選択するとBB-11,12のみ表示して1つのみ選択可能    ・AA-2を選択するとBB-11,12,14のみ表示して   〃    ・AA-3を選択するとBB-11~15表示して     〃 CC  テキストボックスでユーザ入力 DD  テキストボックスでユーザ入力 EE  CC×DD×<AAのチェックとBBのチェックによる数字>     <例>     ・BBの<例>と同じ条件の元で      AA-1---BB-11→15(チェックにより掛ける数字)      〃 ---〃 12→18( 〃 )      AA-2---BB-12→22( 〃 )      〃 ---〃 14→27( 〃 )      AA-3---BB-13→31( 〃 )      〃 ---〃 15→35( 〃 ) FF  Aa  Bb  Cc  Dd  Ee       ※AAとBBの条件と連動して、表示され選択可能      <例>      ・AA-1を選択するとBB-11,12のみ表示し、1つのみを選択。FF-Aaのみ表示      ・AA-2を選択するとBB-11,12,14のみ表示し、   〃  。FF-Aa,Ccのみ表示      ・AA-3を選択するとBB-11~15表示し、    〃    。FF-Bb,Ccのみ表示 GG  セレクトボックスで4割~8割から選択 HH  a  b  c  d  e  f  g      BBの選択内容とFFの選択内容によって表示(選択は1つのみ) ※ 後の計算によって数字変更     <例>      BB-11---FF-A---HH-a~c(a:3,b:6,c:10)      〃 ---〃 B---〃 a,c,f(a:4,c:5,f:8)      〃 ---〃 C---〃 c~g(c:4,d:5,e:8,f:14,g:18)      BB-12---FF-A---HH-a~c(a:11,b:14,c:18)      〃 ---〃 B---〃 b,d,f,g(b:7,d:9,f:12,g:13)      〃 ---〃 C---〃 c~f(c:1,d:3,e:9,f:11) 「計算」ボタンと「リセット」ボタン  ※「計算」ボタンをクリックするとIIとJJ」に計算内容を表示  ※「リセット」ボタンをクリックすると、すべてリセットさせる。AAのみ表示を残す II  EE×GG JJ  (AAとBBとFFのチェックによる数字)×(20-HH)×II÷2    <例>    AA-1---BB-12---FF-A→12(掛ける数字)×(20-HH-a)×II÷2    〃1---BB-12---〃 B→17(掛ける数字)×(20-〃c)×〃÷2                     ・                     ・ -------- 計算が大きく2つに別れて計算という形になるのですが、 <<1>> -AA-1---BB-11---FF-A-|→EEで必要な数字15 | | |-〃12---〃 -|→     〃 18 | | -〃2---BB-11---FF-A, C-|→EEで必要な数字20 | | |-〃 12--- 〃 -|→   〃  22 | | |-〃 14--- 〃 -|→   〃  27 | | -〃3---BB-11---FF-B,E-|→EEで必要な数字28 |   |-〃 12--- 〃 -|→   〃  30 |   |-〃 13--- 〃 -|→   〃  31 |   |-〃 14--- 〃 -|→   〃  32 |   |-〃 15--- 〃 -|→   〃  35 |         ・ -         ・ <<2>> ※ < >の数字は掛ける時に必要な数字 -BB-11---FF-A---HH-a<3> | |   |  |--〃b<6> | |   |  |--〃c<10> | |   | | |   FF-B---HH-a<4> | |   |  |--〃c<5> | |   |  |--〃f<8> | |   | | |   FF-C---HH-c<4> | |   |  |--〃d<5> | |   |  |--〃e<8> | |   |  |--〃f<14> | |   |  |--〃g<18> | | -BB-12---FF-A---HH-a<11> | |   |  |--〃b<14> | |   |  |--〃c<18> | |   | | |   FF-B---HH-b<7> | |   |  |--〃d<9> | |   |  |--〃f<12> | |   |  |--〃g<13> | |   | -      ・ |      ・ ※ < >の数字は掛ける時に必要な数字 <例>AA-1---BB-12---FF-A<12>×(20-HH-a<3>)×II÷2 という感じになります。 大変分かりにくいとは思いますが、ご教授の程よろしくお願いします。

  • Excel2003で他の列のデータをドロップダウンリストに

    質問のし直しです。 下記の場合、B列でのドロップダウンリストに(aa bb cc dd ee)と表示させるには、どうしたら良いのでしょうか? A列  B列 bb     dd aa     ee bb     ee cc    dd aa bb 実際には文字列なのですが、1300行で、A列のデータは300個位在ります。 宜しくお願い致します。

専門家に質問してみよう