以下のように各ID毎に、縦持ちでデータを持っているとします。
ID データ
ABC golf
ABC baseball
ABC basketball
DEF baseball
DEF soccer
GHI soccer
GHI golf
GHI volleyball
GHI basketball
JKL swimming
それを以下のように各ID毎に、横持ちで1行で表したいです。
ABC golf, baseball, basketball
DEF baseball, soccer
GHI soccer, golf, volleyball, basketball
JKL swimming
ID数が膨大で、かつデータの種類が多岐に渡るため、
エクセルでなくても構わないのですが、上記を簡単に実現できる方法をご存知の方教えてください!
よろしくお願いいたします。
No.3
- 回答日時:
マクロ音痴な私なら、[No.2]の d-q-t-pさんのアイディアに飛び付いてソレで終わりです。
だけど、それまでにアーでもない、コーでもないと考えていたので、私自身の備忘録そして貴方への別解として、記しておきます。「縦持ちデータ」を添付図の Sheet1 とします。それを「横持ちデータ」として Sheet2 に実現します。
ちなみに、初耳の「縦持ち(横持ち)」、中々乙な表現ですね。どの業界の言葉なのでしょうか?
1.Sheet1 の列Aを[コピー]して、Sheet2 の列Cに[貼り付け]
2.Sheet2 の列Cを選択して、[データ]→
 ̄ ̄[データツール <重複の削除>]
3.下の各セルにそれぞれ右側の式を入力
 ̄ ̄ A2: =MATCH(C2,Sheet1!A:A,0)
 ̄ ̄ B2: =COUNTIF(Sheet1!A:A,C2)
 ̄ ̄ D1: =IF(COLUMN(A1)>MAX($B:$B),"","Events"&COLUMN(A1))
 ̄ ̄ D2: =IF(COLUMN(A1)>$B2,"",OFFSET(Sheet1!$A$2,$A2-2+COLUMN(A1)-1,1))
4.範囲 A2:B2 のフィルハンドルをマウスで「エイヤッ!」
 ̄ ̄とダブクリ
5.セル D1 を右方へズズーッとオートフィル
6.セル D2 を右方へ(1行目が表示されている列まで。此処で
 ̄ ̄はセル G4 まで)ズズーッとオートフィル
7.範囲 D2:G2 のフィルハンドルをマウスで「エイヤッ!」
 ̄ ̄とダブクリ
ありがとうございます!
OFFSET関数など難しいですね。。。
どんな処理をしているのか、がよくわかっていませんが、実現できました。
こんな方法もあるんですね。
ありがとうございます。
No.2
- 回答日時:
この「, 」がセルで分けるのか何なのかよく分かりませんが 見たまま
だと解釈します。
A列が昇順にソート
C2:=IF(A2=A3,B2&", "&C3,B2)
フィルハンドルをダブルクリック
C列をコピー→その場で値貼り付け
[データ]の[重複を削除]
ID列を指定して[OK]
B列を削除
でいいと思います。
一つのセルにカンマ区切りで値をすべて入れられるのはものすごく良いですね!
本当はセルは分けたかったのですが、CSVで保存すればほとんど同じことですね。
マクロも使わず解決できるのは素晴らしい方法です。
ありがとうございます!
No.1ベストアンサー
- 回答日時:
こんにちは!
>それを以下のように各ID毎に、横持ちで1行で表したいです。
セルは別々になっても良い!というコトとして・・・
VBAになりますが、一例です。
元データはSheet1にあり、Sheet2に表示するとします。
尚、Sheet1の1行目は項目行でデータは2行目以降にあるという前提です。
標準モジュールにしてください。
Sub Sample1() 'この行から//
Dim i As Long, c As Range, wS As Worksheet
Set wS = Worksheets("Sheet2")
Application.ScreenUpdating = False
wS.Cells.ClearContents
With Worksheets("Sheet1")
.Range("A:A").AdvancedFilter Action:=xlFilterCopy, copytorange:=wS.Range("A1"), unique:=True
For i = 2 To .Cells(Rows.Count, "A").End(xlUp).Row
Set c = wS.Range("A:A").Find(what:=.Cells(i, "A"), LookIn:=xlValues, lookat:=xlWhole)
wS.Cells(c.Row, Columns.Count).End(xlToLeft).Offset(, 1) = .Cells(i, "B")
Next i
End With
Application.ScreenUpdating = True
wS.Activate
MsgBox "完了"
End Sub 'この行まで//
※ 関数でないのでデータ変更があるたびに
マクロを実行する必要があります。m(_ _)m
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 英語 I like soccer and baseball. はOがsoccer and baseball 4 2022/08/16 22:41
- Excel(エクセル) 至急です><Excelの関数を教えてください。 2 2022/03/22 17:56
- 英語 一般動詞の疑問文、否定文の作り方 5 2022/11/10 18:17
- Excel(エクセル) Excelで、半角スペースをTABに変換する 5 2022/10/18 14:18
- Visual Basic(VBA) 【ExcelVBA】Powerクエリーでいうピボット解除と同じ処理をVBAで 4 2022/07/06 17:09
- その他(スポーツ) 札幌ドームの話 1 2022/08/16 23:03
- 英語 canを過去形で使うとどう感じる? 8 2022/09/12 18:23
- その他(データベース) pythonでsqlight勉強中、クエリー結果の利用法教えて下さい 1 2022/04/28 20:38
- Excel(エクセル) EXCELで同一セル内で自動的に改行されてしまう(難問) 6 2023/04/16 00:51
- その他(ブラウザ) webサイトに表示する画像の向きを変える(左右に回す)方法 3 2023/01/20 08:28
このQ&Aを見た人はこんなQ&Aも見ています
-
プロが教えるわが家の防犯対策術!
ホームセキュリティのプロが、家庭の防犯対策を真剣に考える 2組のご夫婦へ実際の防犯対策術をご紹介!どうすれば家と家族を守れるのかを教えます!
-
アクセスで教えてください。 縦持ちデータを横持ちデータに変更したいです。 項目数が多くてクロス集計で
Access(アクセス)
-
ACCESSで縦に並んだテーブルデータを横に並べることは出来ますか?
Access(アクセス)
-
Accessで縦と横を入れ替えたい
その他(プログラミング・Web制作)
-
-
4
VBA 縦のデータを横にするコード
IT・エンジニアリング
-
5
【アクセス】クエリで、行と列を入れ替えるには?【access】
Access(アクセス)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセル 文字を増やしたい。
-
エクセルの計算
-
セルの内容表示が邪魔になる
-
Excel
-
Microsoft365に変えたのですが...
-
エクセル:一覧表に存在する文...
-
エクセルで日付を数字+アルフ...
-
エクセルでの作業計算方法について
-
エクセルで年休を管理する方法...
-
はがきについて。
-
【マクロ】その時、その時で変...
-
excelの不要な行の削除ができな...
-
Microsoft1Officeの互換ソフト...
-
エクセル関数を教えてください
-
Excel ピボットテーブルで日付...
-
【マクロ】読取専用のファイル...
-
【関数】適切な文字数の数字を...
-
時間によってファイル名が変わ...
-
ある列、或いは、ある行のセル...
-
UNIQUE関数が使えないバージョ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel 2019 のピボットテーブル...
-
[関数得意な方]教えて下さい・...
-
Excelにてある膨大なデータを管...
-
[関数について]わかる方教えて...
-
Excel初心者です。 詳しい方、...
-
excelの不要な行の削除ができな...
-
エクセル関数に詳しい方教えて...
-
INDIRECTを使わず excelで複数...
-
[オートフィルタ]で抽出された...
-
エクセルの神よ、ご回答を! エ...
-
エクセル関数に詳しい方、教え...
-
各ページの1番上の表示について
-
Excelで写真のような表を作った...
-
エクセルで不等号記号(≠)が上に...
-
数学 Tan(θ)-1/Cos(θ)について...
-
Excel 2019 は、SPILL機能があ...
-
Excelで全角を半角にしたいので...
-
条件付き書式を教えてください
-
Excel フィルターを掛けた状態...
-
[オートフィルタ]の適用範囲の...
おすすめ情報