• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Excelで複数のセルデータを一つにまとめたいです)

Excelで複数のセルデータを一つにまとめる方法

このQ&Aのポイント
  • Excelを使用して、複数のセルデータを一つにまとめる方法を解説します。
  • 取扱商品の管理データをExcelファイルで作成している場合、セットコードを基準に親子関係を設定したい場合があります。
  • 手動で入力するとミスが生じやすく、項目の追加や変更があるたびに手間がかかるため、自動的に親行に子行の情報を表示する方法はありませんか?

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

  • ベストアンサー
  • nishi6
  • ベストアンサー率67% (869/1280)
回答No.3

質問で示されているデータをExcelのセルA1に貼り付けると、[ここに入れたい]がセルF2になりました。この前提で解答します。 F2の式はデータが10万行未満として書いています。実際データの「最終行+1」が本来ですが、最終行の特定を算式に組み込むと面倒なので100,000にしています。不足なら増やしてください。多い分はそのままでかまいません。 F2: =IF(E2="",INDEX(G3:$G$100000,MATCH(1,INDEX((LEN(E3:$E$100000)=0)*1,0),0)-1,0),"") G2: =IF(D2="子",IF(G1="","",G1&"&")&"色柄:"&E2&"="&C2,"") セルF2:G2をデータが入力されている行分、下までコピーしてください。(コピーの仕方は、セルF2:G2を選択してセルG2の右下のフィルハンドル「+」をダブルクリックします。) 最後に列Gを非表示にしてください。できあがりのはずです。 質問で例示のsm0002は少し違っていますよね。 F2が長い算式になってしまいました。   G列で「子」を結合しています。作業用の列です。   F列は次の親の1行前のG列を取り出しています。 作業用の列がだめならば、VBAになるでしょう。

marumitorimi
質問者

お礼

回答有難うございます。非常に参考になりました。これ以上複雑になってくるとVBAも考えないといけないようですね…お教えいただきました内容を参考に作成していきたいと思います。

その他の回答 (2)

  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.2

子の数が最大4つまでの数式なら以下のような数式でご希望の表示ができます。 =IF(AND(COUNTIF(A:A,A2)>1,D2="親"),"色柄:"&OFFSET(E2,1,0)&"="&OFFSET(C2,1,0),"")&IF(AND(COUNTIF(A:A,A2)>2,D2="親"),"色柄:"&OFFSET(E2,2,0)&"="&OFFSET(C2,2,0),"")&IF(AND(COUNTIF(A:A,A2)>3,D2="親"),"色柄:"&OFFSET(E2,3,0)&"="&OFFSET(C2,3,0),"")&IF(AND(COUNTIF(A:A,A2)>4,D2="親"),"色柄:"&OFFSET(E2,4,0)&"="&OFFSET(C2,4,0),"")

marumitorimi
質問者

お礼

回答有難うございます。子項目は最大で15程度あります。言葉不足で申し訳ございません。お教えいただきました内容を参考に作成していきたいと思います。

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.1

こんにちは! 質問では >色柄:ピンク=item-sm0001-pink-a&色柄:赤=item-sm0001-red-a&色柄:青=item-sm0001-blue-a のようになっていますが、「色柄:○○○」は不要で↓の画像のような感じで良いのであれば・・・ VBA向きの質問だと思います。 画面左下の操作したいSheet見出し上で右クリック → コードの表示 → VBE画面のカーソルが点滅しているところに ↓のコードをコピー&ペースト → Excel画面に戻り、マクロを実行してみてください。 (Alt+F8キー → マクロ → マクロ実行です) Sub Sample1() 'この行から Dim i As Long, k As Long, lastRow As Long lastRow = Cells(Rows.Count, "A").End(xlUp).Row If lastRow > 1 Then Range(Cells(2, "F"), Cells(lastRow, "F")).ClearContents End If For i = 2 To lastRow If Cells(i, "D") = "親" Then k = i + 1 Do While Cells(k, "D") = "子" Cells(i, "F") = Cells(i, "F") & Cells(k, "C") k = k + 1 Loop i = k - 1 End If Next i End Sub 'この行まで ※ 「親」の行の後には必ず「子」が続いているという前提です。 ※ 関数でないのでデータ変更があるたびにマクロを実行する必要があります。m(_ _)m

marumitorimi
質問者

お礼

回答有難うございます。言葉が足りず申し訳ございません。管理上「色柄:○○○」は必須項目でした。お教えいただきました内容を参考に作成していきたいと思います。

関連するQ&A