- 締切済み
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 (変換後)総務;経理;人事・・・ ============================================== すみませんが、よろしくお願いします。
- -hirokiti-
- お礼率50% (3/6)
- オフィス系ソフト
- 回答数6
- ありがとう数3
- みんなの回答 (6)
- 専門家の回答
みんなの回答
- fumufumu_2006
- ベストアンサー率66% (163/245)
こんなのではどうでしょうか? 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
- fumufumu_2006
- ベストアンサー率66% (163/245)
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) と入力してください。
- hallo-2007
- ベストアンサー率41% (888/2115)
取り合えず、データを区切って、縦にしませんか B1 1;2;3;4;5;6;7 データ 区切り位置で セミコロンにチェック OK B2 に=INDEX(A$1:CZ$1,1,ROW(A1)) 下フィル 2つ目のシートのデータも、コピィ 形式を指定して貼り付け 行列入れ替えるにチェック入れて貼り付け データを縦方向にして C2に Vlookup関数
お礼
hallo-2007さん、回答ありがとうございます。 データの行数も多いため、縦にするのは現実ではないんです。 あまり、こういうデータの扱いはEXCELで無い方がいいのでしょうか?
100個!? 表の作り方(データ)が異様ですねぇー。 100個も羅列する意味があるのでしょうか。 100個羅列したら、横に長ーい表になり、全てを表示できないでしょうから、 意味ないのでは?
お礼
vizzarさん、回答ありがとうございます。 そうなんです。1つのセル内がそのようなデータになっています。ただ、それぞれの列データではないので、表示などは問題ない状態です。
#1です。 7つぐらいで、且つ表記だけの問題なら、手で直した方が速いような気がしますが....
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)・・・ ではダメですか?
補足
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列 地区 所属 氏名 東京 経理部 山田 大阪 経理部 松本 東京 総務部 加藤 よろしくお願いいたします。
- ベストアンサー
- その他MS Office製品
- 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結合セルに旨くデータリンクを掛けたい
- ベストアンサー
- その他MS Office製品
- 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 あ い う → あ;い;う ひょっとしたら同じような質問が無いかと思い、色々と探してみたのですが、見つけることが出来ませんでした。 大量のデータを入力する必要があり、大変困っています。 ご存知の方がおられましたら、ご教授頂けるとありがたいです。 宜しくお願いいたします。
- ベストアンサー
- その他MS Office製品
- エクセルで特定のセルのデータをひとつにまとめたい
エクセルで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の文字列に変換するには、どういう操作をすればよいのでしょうか?
- ベストアンサー
- オフィス系ソフト
お礼
fumufumu_2006さん、アドバイス頂きました皆様 ありがとうございました。VBAの方法で私がイメージしていた事が出来ました。 また、一つ質問なのですが、 この未定義部分の処理を、[未定義]とするのではなく、不要なので該当データ部分については、区切り文字含めて削除するという事は出来るのでしょうか?