[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『データの並び替え』(がんばる事務員)
エクセルで膨大なデータ量を扱っているのですが、
データを整理するのに行も列も多すぎて困っているところです。
行の初めの見出しは、「1〜2000」ぐらいまでの連番です
列の初めの見出しは「名前、成分、時間、濃度、温度、湿度 等」の項目があります。
下記の図の
「-」は数字が入ってます
「*」は英字が入っています。(*の英字は必ず行に1つしかないです。)
「_」は空白と考えてください。
【現状】
列→→→→→→→→→→→→→→
1行-----*-----
2行--*--------
3行-------*---
4行-*-----------
5行--------------*------
6行----------*--------
【やりたいこと】*の英字データを同じ列に統一したいです。
今回のやりたいことを実現するには、エクセルの機能などで可能でしょうか。
また別のソフトになってしまいますが、
マイクロソフトのAccessとかできそうでしょうか?
その辺ご存知の方いらっしゃれば、できるできないだけでも教えて頂きたいです。
よろしくお願いします。
< 使用 Excel:Excel2013、使用 OS:Windows8 >
「_」は空白と考えてください。
と記載ありますが、今回は「_」はないです。のでこの文は無視してください。
(がんばる事務員) 2019/03/15(金) 09:51
統一したいとは、どういう意味でしょうか。
仮にこんなデータなら、どういう結果になるとよいのでしょうか?
-A- -B- -C- -D- -E- 1 名前 成分 時間 濃度 温度 2 1 10 a 20 30 3 2 10 10 10 20 4 3 10 b 10 10 5 4 10 10 10 a
(マナ) 2019/03/15(金) 21:20
【仮データ】(少し変更させていただきました)
-A- -B- -C- -D- -E- -F-
1 名前 成分 時間 名前 成分 時間 2 1 a 30 20 30 10 3 2 a 10 10 20 10 4 3 10 10 10 a 20 5 4 10 10 10 a 20
【完成データ】
-A- -B- -C- -D- -E- -F- 1 名前 成分 時間 名前 成分 時間 2 1 a 30 20 30 10 3 2 a 10 10 20 10 4 3 10 10 10 a 20 5 4 10 10 10 a 20
(がんばる事務員) 2019/03/18(月) 10:06
横から失礼します。 こういう風にしちゃだめなんですか?
|[A] |[B] |[C] [1]|名前|成分|時間 [2]| 1|a | 30 [3]| 2|a | 10 [4]| 20| 30| 10 [5]| 10| 20| 10 [6]| 3| 10| 10 [7]| 4| 10| 10 [8]| 10|a | 20 [9]| 10|a | 20 (稲葉) 2019/03/18(月) 10:43
回答ありがとうございます。
あとでフィルタ掛ければ良いので、
下記のような形でも大丈夫です!
|[A] |[B] |[C] [1]|名前|成分|時間 [2]| 1|a | 30 [3]| 2|a | 10 [4]| 20| 30| 10 [5]| 10| 20| 10 [6]| 3| 10| 10 [7]| 4| 10| 10 [8]| 10|a | 20 [9]| 10|a | 20
(がんばる事務員) 2019/03/18(月) 11:37
こんな感じでどうでしょう? 最初の条件 >列の初めの見出しは「名前、成分、時間、濃度、温度、湿度 等」の項目があります。 が変わってきているので、同じ項目名のところに出力する、という感じにしました。 「名前」という項目をキーにして、行を増やしていくイメージです。 ★印のところを実際のデータに合わせて調整してください。
Option Explicit Sub test() Dim dic As Object Dim fld As Long Dim i As Long Dim w As Variant, tmp As Variant, idx As Long Dim r As Range Set dic = CreateObject("Scripting.Dictionary") idx = -1 With Sheets("Sheet1") '★ For i = 2 To .Cells(Rows.Count, "A").End(xlUp).Row For fld = 1 To .Cells(1, Columns.Count).End(xlToLeft).Column If .Cells(1, fld).Value = "名前" Then idx = idx + 1 '★ ReDim w(0) If dic.exists(.Cells(1, fld).Value) Then w = dic(.Cells(1, fld).Value) ReDim Preserve w(idx) w(idx) = .Cells(i, fld).Value dic(.Cells(1, fld).Value) = w Next fld Next i End With Sheets.Add after:=Sheets(1) With Sheets(2) .Range("A1").Resize(, dic.Count).Value = dic.keys For Each r In .Range("A1").Resize(, dic.Count) w = dic(r.Value) r.Offset(1).Resize(UBound(w)).Value = Application.Transpose(w) Next r End With End Sub
データ表(Sheet1) |[A] |[B] |[C] |[D] |[E] |[F] |[G] |[H] [1]|名前|成分|時間|名前|成分|時間|濃度|温度湿度 [2]| 1|a | 30| 20| 30| 10|10% | [3]| 2|a | 10| 10| 20| 10|10% | [4]| 3| 10| 10| 10|a | 20| |1℃ [5]| 4| 10| 10| 10|a | 20| |1℃
出力結果 |[A] |[B] |[C] |[D] |[E] [1]|名前|成分|時間|濃度|温度湿度 [2]| 1|a | 30| | [3]| 20| 30| 10| 0.1| [4]| 2|a | 10| | [5]| 10| 20| 10| 0.1| [6]| 3| 10| 10| | [7]| 10|a | 20| |1℃ [8]| 4| 10| 10| | (稲葉) 2019/03/18(月) 12:07
さっそくマクロ試してみたところ、
思い通りの結果になりました!
膨大なデータだった為、本当に大変助かりました!
マクロは自分のものにしたら最強ですね!!
作成して頂いたマクロを理解できるように、もっと私も勉強したいと思います。
ありがとうございました。
(がんばる事務員) 2019/03/19(火) 09:55
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.