• ベストアンサー

EXCEL カンマ区切りされたデータをVlookup関数で処理

EXCELに関して、教えていただきたいことがあり、 投稿させていただきます。 一つのセル内に・・・ A1,B1,C2 とカンマ区切りされたデータがあり、 それをVlookup関数を利用して、 佐藤さん,田中さん,鈴木さん とカンマ区切りのままで、 データ呼び出し処理をしたいと考えています。 A1,B1,C2の段階でセル分割を行い、一つずつのセルで Vlookup関数を使えば、呼び出すことはできましたが、 扱う件数が多いため、一発処理ができればと考えております。 ご存知の方、教えていただけますでしょうか。 よろしくお願いします。

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

  • ベストアンサー
  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.5

回答No4です。番号の桁が変わった場合のご質問ですが、エクセルを使って作業をするときには出来るだけ分かりやすく簡単にすることが基本です。わざと難しくする必要はないでしょう。カンマで区切っていくつでもデータが増えたらどうしまうかなど質問はきりがありませんね。 複雑なデータに対応するためにはマクロを使われるのがよいでしょう。どうしても関数でということであれば次のようなことでもよいでしょう。 例えばA1セルにカンマで区切られた三つのデータがあるとします。B1セルに答えを表示するとしてC1セルからE1セルには三つのデータを表示させ、F1セルからH1セルにはシート2からそれぞれの名前を表示できるようにします。次にその手順を述べます。 初めにA1セルを選択してから、「データ」タブの「区切り位置」をクリックします。「カンマやタブなどの・・・・」にチェックがある状態で「次へ」、区切り文字で「カンマ」にチェックを付けて「次へ」、表示先が$A$1となっているところをC1と入力して「完了」します。 次にF1セルには次の式を入力して右横方向にオートフィルドラッグします。 =IF(ISNUMBER(C1),VLOOKUP(C1,Sheet21!$A:$B,2,0),"") 最後にB1セルには次の式を入力します。 =F1&","&G1&","&H1 操作は面倒ですがデータが幾つに増加しても、桁が幾つに変わっても対応できる方法です。

その他の回答 (4)

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.4

回答No1です。 一つのセル内に3種の数値が並んで入力されているものを、3人の名前に変えて表示するにはどうしたらよいのかというご質問でしょうか? シート2にA1セルから下方に数値が、B1セルから下方に名前があるとします。 シート1のA1セルには 10001,10003,10005 のデータが入力されているとしたらB1セルには次の式を入力すればよいでしょう。 =VLOOKUP(MID(A1,1,5)*1,Sheet2!A:B,2,0)&","&VLOOKUP(MID(A1,7,5)*1,Sheet2!A:B,2,0)&","&VLOOKUP(MID(A1,13,5)*1,Sheet2!A:B,2,0) これでB1セルには 佐藤さん,山田さん,鈴木さん と表示されます。

taroman032
質問者

補足

KURUMITO様 ご回答ありがとうございます。 上手く動作しました!ありがとうございます。 ただ、元データが、 10001,10002,10003,10004,10005 など決まった数ではなく、 100001や1000008なども含まれる場合は、 対応方法ございますでしょうか。 ,のあとも文字列を参照などできればと思っております。 何度も申し訳ございません。

  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.3

マクロで一気に置換かな? カンマ区切りの文字列がSheet1のA列にあって、置換する対応表がSheet2のA1から入っているとして、以下でどうでしょう。 Sub SampleMacro()  With Sheets("Sheet2")   nLast = .Range("A1").End(xlDown).Row   For i = 1 To nLast    Sheets("Sheet1").Columns("A:A").Replace What:=.Range("A" & i), Replacement:=.Range("B" & i)   Next i  End With End Sub

taroman032
質問者

お礼

mt2008様 ご回答ありがとうございます。 マクロ処理ですが、当方利用方法を理解しておらず、上手く動作させることができませんでした。 せっかくご回答いただいたのに、申し訳ございません。

  • gt-t
  • ベストアンサー率41% (7/17)
回答No.2

関数で一発処理は難しそうさなので 関数を作ってみました。 --- Function a_vlookup(s As String, r As Range, c As Integer, f As Boolean) As String Dim ss() As String Dim i As Integer Dim aa As String aa = "" ss = Split(s, ",") For i = LBound(ss) To UBound(ss) On Error Resume Next ii = CInt(ss(i)) If Err.Number = 0 Then aa = aa & WorksheetFunction.VLookup(ii, r, c, f) & "," Else aa = aa & WorksheetFunction.VLookup(ss(i), r, c, f) & "," End If Err.Clear On Error GoTo 0 Next aa = Left(aa, Len(aa) - 1) a_vlookup = aa End Function ----コード終わり---- VBA不可ならば無視してください。 今解っている条件で簡便に作ってあります。

taroman032
質問者

お礼

gt-t様 ご回答ありがとうございます。 上記処理ですが、当方利用方法を理解しておらず、上手く動作させることができませんでした。 せっかくご回答いただいたのに、申し訳ございません。

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.1

例えば田中さんを検索するのでしたら =VLOOKUP("*田中さん*",A:B,2,FALSE) のようにすればよいでしょう。 あるいは田中さんがB1セルに有るのでしたら =VLOOKUP("*"&B1&"*",A:B,2,FALSE)

taroman032
質問者

お礼

早速のご回答ありがとうございます。 一つのセル内に記載されている内容としては、 10001,10003,10005 とコード化された番号となります。 (A1,B1,C2 はセル名のように見え、紛らわしい表現でした。すいません) 別シートに A   B 10001 佐藤さん 10002 田中さん 10003 山田さん 10004 山下さん 10005 鈴木さん と一覧化したものからの呼び出しを考えております。 申し訳ございませんでした。 ご回答お待ちしております。

関連するQ&A

  • excel2000 vlookupその他のデータ検索、抽出の関数について

    エクセルについての質問です。   A B  C 1 ○ 佐藤 ■ 2 × 鈴木 3 ○ 後藤 4 △ 近藤 5 △ 小林 6 × 大山 7 △ 大林 8 × 小山 9 ○ 松田 のようなデータがあります。 この中で、■(つまり、C1セル)に、「○」の行にある、B列の文字を返したいのですが、■(つまり、C1セル)に =VLOOKUP("○",$A$1:$B$9,2) と入力し、C10セルまでコピーしても、うまく反映されません。 私がほしい結果としては、 ○  △  × 佐藤 近藤 鈴木 後藤 小林 大山 松田 大林 小山 という具合に抽出したいのです。 とても拙い説明で申し訳ございません。 私がほしい結果と致しましては、上述のとおりでございます。 vlookupとは別の、他の関数を使うべきなのでしょうか? とても困っております・・・。。 どうぞ救いの手を差し伸べてください・・・!!

  • Excelの関数が分かりません。Vlookupで出来ると思ったのですが、出来ませんでした。

    すいません。自分が馬鹿なもので・・・さっぱりです。 A  B  C  D   E 1  梨 柿 苺 山下 2 芋 米 栗 鈴木 3 鳥 馬 羊 松本 4 魚 犬 猫 田中 というシートがあって。 別シートで A  B  C 1  猫 田中 2 芋 鈴木 3 梨 山下 4 犬 田中 というように、B列を検索してC列に人の名前を返す 例えば「猫」を前のシートから検索して一致する 「田中」の名前を返したいとき、どのような関数を使えばいいですか? vlookupだと検索範囲が1列しか検索できないから、どうしても複数列を検索したいもので・・・

  • エクセルの IF関数、VLOOKUP関数について

    エクセルなんですが、2007を使用しています。OSはビスタです。 IF関数とVLOOKUP関数を使って表を作成したいのですが、なかなか出来ません。。。そこで皆さんのお力をお借りできればと・・・ 特に IF VLOOKUP にこだわる事はないので教えていただけると助かります。 <シート1>       A       B       C     1   日本or東海 2 3   愛知       a 4   岐阜       b 5 データ              日本     東海 7   愛知       a       A 8   岐阜       b       B 9   三重       c       C A1セルに『日本』と入れてもA2のセルは空白なのでB2のセルは空白のまま、 同様にA3のセルには『愛知』と入れたのでデータの日本の下のB7のデータ の『a』を反映させたいんです。 これがA1セルに『東海』と入れた場合は自動的にB3セルは『A』のでーたが 反映されるようにしたいんです。 ちなみにA1セル及びA2~A5はリスト設定をしてあるので、リストから選んだら 自動的に反映させるようB2~B5セルに入れる関数を教えて下さい。 皆さんのお知恵をお借りできれば助かります。よろしくお願いします。

  • カンマ区切りのデータを処理する方法

    よろしくお願いします。 vb6.0 + oracle9i(oo4o)で開発しています。 元データの中には、カンマ区切り形式で全角・半角・ブランクありの可変長です。(テキストデータではありません) 例えば、 111bb,22222,333333,44bb 11,234bb,33bb,44     見たいなデータです。 カンマの数は変わりませんし、各項目自体にカンマはありえません。 この各項目を個々に取り込んで処理したいのですが... MID関数(MID$,MIDB)など色々試してみるのですが 対応しきれなくなってしまいました。 各項目に対してTRIMをかけて処理をしたいのですが、 良い方法はあるのでしょうか? カンマ間を一つの項目として判断でき、 TRIMがかけれれば一番よいのですが... 文字を一文字ずつ読んでいって、カンマを判断するしかないのでしょうか?

  • エクセルのCSV(カンマ区切り)保存について教えてください

    次のようなEXCELデータをCSV(カンマ区切り)で保存した際に項目(カンマ)を2つ追加できるでしょうか? EXCEL  セルA1:AAA  セルB1:BBB  セルC1:  セルD1:CCC  セルE1:  セルF1: このデータをCSV保存してTEXTで確認すると、  AAA,BBB,,CCC となりますが、これを  AAA,BBB,,CCC,, としたいのですが、セルE1とセルF1がNULLのためカンマ区切りができません。半角スペースなどをいれるしかないのでしょうか? できればセルE1とセルF1には何も入力したくないのですが。良い方法がありましたら教えてください。

  • Excelでカンマ区切りの合計をユーザ関数で得たい

    1セルにカンマで区切られた数値が入力されています。 別のセルにユーザ関数を使ってカンマ区切りのセルを指定して合計値を算出したいと思っています。 VBAはどの様に記述すればいいのでしょうか。

  • Excelでカンマ区切りの文字列をセルに分割する?

     住所録をExcelにコピーしたら、 カンマ区切りに一つのセルに入ってしまいました。 ◇カンマごとに一つのセルに分割して文字列を分ける。 ◇氏と名の間は半角スペースでカンマでは有りませんが、   二つのセルに分ける。 上記について分ける関数を教えてください。    

  • エクセル:桁区切り「カンマ」でセルが分割されて貼り付けされてしまう

    仕事で社内のシステムから売上の情報をコピーしてエクセルに貼り付けて処理をしようとしたところ、コピーした数字に「桁区切りのカンマ","」がある関係で、 たとえば 1,234,567 という数字が 1 と 234 と 567 とセルが分割されて貼り付けられてしまいます。 CSVファイルのカンマ区切りデータと同じように情報がカンマで分割されてしまっているようなのですが、貼り付けの際に分割されないようにするにはどうしたらよいでしょうか? ちなみに、これらデータはスペースで区切られているので一度テキストファイルに保存して、CSVを開くときの区切り文字の設定を「スペース」に設定すればうまく開くのはわかるのですが、コピーして即貼り付けのときにこのようになることを回避する方法はあるのでしょうか?マクロを組んでも構いません。 どうぞ、ご教授、宜しくお願いします。

  • エクセルでの集計関数No.2

    前回の質問より複雑なデータの集計が飛び込んで困っています。 例    A   B   C   D   E   F   G   H   I   J 1  鈴木 田中 佐藤 八木 石島 須藤 徳間 遠藤 伊藤 斉藤 2  田中 八木 田中 遠藤 鈴木 伊藤 佐藤 佐藤 鈴木 徳間 3  石島 鈴木 徳間 鈴木 伊藤 .... といったデータが存在しています(A1:J3)の範囲内で最頻値の文字列を検出する関数の組み合わせを教えてください。回答例 鈴木  しかも、鈴木 佐藤が同一の場合メッセージを表示させるには..とほほです。よろしくお願いします。                                               

  • ランキングの並び替え

         A      B     C 1   田中     70     (3)            2   佐藤     100     (1)          3   鈴木     80     (2)                 A    B    C 1  佐藤  100   (1) 2  鈴木   80    (2) 3   田中   70    (3)  ランキングの関数を入れて、何とかCのセルにランキングが表示できるように なったのですが、これを順位ごとに並べ替えるのが、どうしてもうまく出来ません。 下のほうのように、Cセルのランキングを並び替えたときに、A.Bのセルも連動してきれいに並べ替えたいのですが、どなたか分かる方がおりましたらお教え願えないでしょうか? 宜しくお願いいたします。

専門家に質問してみよう