• 締切済み

1つのセル内で区切られているデータの変換について

他のEXCELに関するサイトでもお聞きしているのですが、 EXCELで出来るのかわからないのですが知っている方がいらっしゃれば教えてください。 1つ目のシートの列データとして、例えば、 セルA1に、所属ID セルB1に、1;2;3;4;5;6;7とセミコロンで続けられたデータがあるとします。 2つ目のシートには下記のような所属情報のデータ(マスタのようなもの)があるとします。 セルA1に、1 セルB1に、総務 セルA2に、2 セルB2に、経理 セルA3に、3 セルB3に、人事 : 1つ目のシート内の1;2;3;4;5;6;7のデータをわかり易いようにマスタにある総務;経理;人事などのようなデータへ変換させることは出来るのでしょうか? ============================================== 結果イメージ、1つ目のシートのセルB1の内容 (現在)1;2;3;4;5;6;7 (変換後)総務;経理;人事・・・ ============================================== すみませんが、よろしくお願いします。

みんなの回答

回答No.6

こんなのではどうでしょうか? Option Explicit Function 所属名(s As String) As String Dim ws As Worksheet Dim d() As String Dim r() As String Dim i As Integer Dim lastRow As Integer r = Split("", " ") 'ubound(r)=-1 Set ws = Sheets("sheet2") '所属情報のシート名 lastRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row '所属情報の最後の行(A列で判断) d = Split(s, ";") For i = 0 To UBound(d) On Error Resume Next d(i) = WorksheetFunction.VLookup(Val(d(i)), ws.Range("A1:B" & lastRow), 2, False) If Err.Number = 0 Then '見つかった? ReDim Preserve r(UBound(r) + 1) r(UBound(r)) = d(i) End If On Error GoTo 0 Next 所属名 = Join(r, ";") End Function

回答No.5

VBAでユーザー関数を作るのはどうでしょうか? どうしても既存の関数では解決できない場合はお試しください。 2つ目のシート(所属情報)のシート名はSheet2にしてありますので、違う場合は変更してください。 [ツール][マクロ][Visual Basic Editor]で表示されるウインドウで、 [挿入][標準モジュール]で表示される画面に下をコピーしてください。 Option Explicit Function 所属名(s As String) As String Dim ws As Worksheet Dim d() As String Dim i As Integer Dim lastRow As Integer Set ws = Sheets("sheet2") '所属情報のシート名 lastRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row '所属情報の最後の行(A列で判断) d = Split(s, ";") For i = 0 To UBound(d) On Error Resume Next d(i) = WorksheetFunction.VLookup(Val(d(i)), ws.Range("A1:B" & lastRow), 2, False) If Err.Number <> 0 Then d(i) = "未定義" '#N/Aの場合[未定義]に End If On Error GoTo 0 Next 所属名 = Join(d, ";") End Function 1つ目のシートの適当な所(例えばB2)に =所属名(B1) と入力してください。

-hirokiti-
質問者

お礼

fumufumu_2006さん、アドバイス頂きました皆様 ありがとうございました。VBAの方法で私がイメージしていた事が出来ました。 また、一つ質問なのですが、 この未定義部分の処理を、[未定義]とするのではなく、不要なので該当データ部分については、区切り文字含めて削除するという事は出来るのでしょうか?

  • hallo-2007
  • ベストアンサー率41% (888/2115)
回答No.4

取り合えず、データを区切って、縦にしませんか B1 1;2;3;4;5;6;7  データ 区切り位置で セミコロンにチェック OK B2 に=INDEX(A$1:CZ$1,1,ROW(A1)) 下フィル 2つ目のシートのデータも、コピィ 形式を指定して貼り付け 行列入れ替えるにチェック入れて貼り付け データを縦方向にして C2に Vlookup関数

-hirokiti-
質問者

お礼

hallo-2007さん、回答ありがとうございます。 データの行数も多いため、縦にするのは現実ではないんです。 あまり、こういうデータの扱いはEXCELで無い方がいいのでしょうか?

noname#79209
noname#79209
回答No.3

100個!? 表の作り方(データ)が異様ですねぇー。 100個も羅列する意味があるのでしょうか。 100個羅列したら、横に長ーい表になり、全てを表示できないでしょうから、 意味ないのでは?

-hirokiti-
質問者

お礼

vizzarさん、回答ありがとうございます。 そうなんです。1つのセル内がそのようなデータになっています。ただ、それぞれの列データではないので、表示などは問題ない状態です。

noname#79209
noname#79209
回答No.2

#1です。 7つぐらいで、且つ表記だけの問題なら、手で直した方が速いような気がしますが....

noname#79209
noname#79209
回答No.1

7つだけなら、ダサイですが... =VLOOKUP(MID($A$1,1,1),Sheet2!$A$1:$B$10,2,FALSE)&":"&VLOOKUP(MID($A$1,3,1),Sheet2!$A$1:$B$10,2,FALSE)・・・ ではダメですか?

-hirokiti-
質問者

補足

vizzarさん、返信ありがとうございます。 説明不足でした。 1;2;3;4;5;6;7と書いたのは例で、 実際のデータとしては、2345;34;567;9999;1などのようになっており、MIDで指定場所から取ることが出来ず、 また、 最小では、一つ(例1;) 最大では、100個程度(例2345;34;567;9999;1・・・)などのセミコロンで区切られたデータもあります。 このような場合でも可能でしょうか?

関連するQ&A

  • Excel 複数条件該当データの別シート表示

    Excelで、2つの条件に該当するデータのみ別シートに表示させる方法を教えてください。 Sheet1には、A列:地区 B列に所属 C列には氏名の表があります。 Sheet2に、該当する条件のものだけを表示させるようにしたいのです。 (たとえば、地区=東京かつ所属=総務部) この条件は、Sheet2のD列以降で指定する欄を設けたいと考えています。 Sheet1のデータ A列   B列   C列   地区  所属  氏名 東京  経理部 山田 大阪  経理部 松本 東京  総務部 加藤 よろしくお願いいたします。

  • EXCELのデータを変換

    こんにちは。 早速ですが質問です。 あるセルに A B 1 9:00-16:00 17:00-21:00 2 12:00-21:00 などと文字列のデータが入っていて そこから別のシートに A B 1 9:00 17:00 2 16:00 21:00 3 12:00 4 21:00 というデータに変換したいのですが どのような手順をすべきでしょうか? 数式だけでできるならありがたいです。 一応マクロやVBAも少しはわかりますが・・ 皆様よろしくお願いします。

  • データのリンク

    こんばんは、教えて下さい EXCEL2003を使っています。shee1はA5:A8 , B5:B8 , C5:C8の結合セルが4行単位で, A列、B列、C列2400行まで続いています。 sheet2には、下記のような型で沢山のデータがあります A2 A-1-1 (sheet1! A5:A8結合セル) B2 A-B-1(sheet1! B5:B8結合セル) A3 A-2-2 (sheet1! A9:A12結合セル) B3 A-B-2(sheet1! B9:B12結合セル) A4 A-3-3 (sheet1!A13:A16結合セル) B4 A-B-3(sheet1!B13:B16結合セル) sheet2 A,B,C列のデータを、shee1結合セルに旨くデータリンクを掛けたい

  • EXCEL セル内のデータを置き換えたい

    うまく説明できないのですが、 Sheet1のA列とB列に、1つのセルに複数のデータが以下のように入っています。(データの間に「,」があります。)     A列             B列 1行 6599A,6599B,6599C  6599A 2行 6599B,6599C      3行              6599A,6599C これは商品コードでして、Sheet2に明細があります。 A列    B列 りんご  6599A メロン   6599B みかん  6599B Sheet1のデータを、「りんご」「メロン」「みかん」に置き換えたいのです。 データの数が、たくさんあるので、コピー、ペーストでは対応できません。 よい方法をお教えください。よろしくお願いいたします。

  • セルからシート名を得る

    シート「メイン」のA列に、 1 2 3 4 とあって、シート「1」~「4」のA1セルに入力されているデータを、シート「メイン」の数字の横(B列)に表示させたいです。 B1に='1'!A1 B2に='2'!A1 ・・・などとやっていけばできますが、「メイン」のA列の数字をシート名に変換して式を書くことはできませんか? よろしくお願いいたします。

  • 複数のセルの文字列を;(セミコロン)を介してひとつのセルに文字列として結合するには?

    エクセルで以下のような事は出来るのでしょうか? 複数のセルの文字列を;(セミコロン)を介してひとつのセルに文字列として結合するには? 例) A  B  C     D    あ  い  う  →  あ;い;う ひょっとしたら同じような質問が無いかと思い、色々と探してみたのですが、見つけることが出来ませんでした。 大量のデータを入力する必要があり、大変困っています。 ご存知の方がおられましたら、ご教授頂けるとありがたいです。 宜しくお願いいたします。

  • エクセルで特定のセルのデータをひとつにまとめたい

    エクセルでA列に数字、B列に文字が入っています。 A列 B列 1   あ 1   い 1   う 2   え 2   お 3   あ 3   い 3   う 3   え これをA列の同じデータでB列のデータを一つのセルの中にまとめたいのですが、 A列  B列 1   あいう 2   えお 3   あいうえ 良い方法はありますでしょうか。

  • 【エクセル】一覧の値を複数シートの決まったセルに表示させたい。

    いつもお世話になっております。 [Sheet1]の一覧の値を、複数シートの決まったセルに表示させたいと思っております。 [Sheet2]から[Sheet1]のデータを引っ張ってくるような 数式などありましたら教えて下さい。 ex)[Sheet2]の(B1)に鈴木、(B2)総務部と表示させたい。 ex)[Sheet3]の(B1)に佐藤、(B2)人事部と表示させたい。 ()内の文字はセルの名前です。 宜しくお願いします。 ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ [Sheet1] (A1)シート名 (B1)名前 (C1)部署名 (A2)Sheet2  (B2)鈴木 (C2)総務部 (A3)Sheet3  (B3)佐藤 (C3)人事部 [Sheet2] (A1)名前  (B1)鈴木 (A2)部署名 (B2)総務部 [Sheet3] (A1)名前  (B1)佐藤 (A2)部署名 (B2)人事部

  • セル中の一括変換について

    現在、IF関数を使用しています。 Aというシートに、「=全店【売上データ】!A$10」と設定しています。 1シートに1000セル程度あり、「A$10」がセルにより異なります。 このAというシートをコピーしてBというシートを作成したいのですが、 コピーした場合、各シートのセルには「=全店【売上データ】!A$10」と 入ってしまい、Aのシートと同じ値が入ってしまいます。 そこで、全店の字の部分をBシートは一括して全てのセルを”X店”に 変換したいのですが、地道に1セルずつ字を変える方法しかないですか? その他、X店以外に20店程度あり、シートもそれだけ作成しなければ いけません。 ちなみに、飛んでくる元データのあるシートと飛ばしたい先のシートの 項目の並び順がバラバラなため、一つ作成して他のセルへ式をコピー するという方法は出来ません。 何かよい方法をご存知の方は教えて下さい。

  • EXCELの参照先ワークシートのセルにおける文字列への変換

    恐縮ですが、MS-EXCELの次の操作方法をご教示下さい。 同じブックの中であるワークシートAの特定のセルaの文字列を他のワークシートBの特定のセルbで参照している場合、 このセルbにおいて、参照した文字列を、参照の形でなく、セルbの文字列に変換するには、どういう操作をすればよいのでしょうか?

専門家に質問してみよう