[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『データの並び替えについて』(ぽこぽこ)
素人のため力を貸してください。
EXCELにて、下記の「データ整列前」から「データ整列後」の形にデータの抽出・並べ替えを行いたいです。
行数が8万行ぐらいあります。
関数・マクロ等を組める方、やり方をご教示下さい。
また、こうしたほうがいいよというアドバイスありましたら、よろしくお願いします。
【やりたいこと】
A列に重複した番号がある場合、B〜E列は重複している番号の最も下の行のデータを採用する。
採用されたデータを抽出し、最後に1行に整列する。
<データ整列前>
A列 B列 C列 D列 E列
番号 データ データ データ データ
1 100 200 200 100
2 300 200 500 500
1 300
3 200 300 350 600
1 500
※例:A列で番号1が重複している。
番号1かつB列でもっとも下の行は300なので300を採用。
番号1かつC列でもっとも下の行は200、D列は500、E列は100を採用。
<データ整列後>
A列 B列 C列 D列 E列
番号 データ データ データ データ
1 300 200 500 100
2 300 200 500 500
3 200 300 350 600
※例:番号1の採用されたデータを一行に並べる。
以上、よろしくお願いします。
< 使用 Excel:Excel2013、使用 OS:Windows7 >
A B C D E F G H I J K 1 番号 データ データ データ データ 番号 データ データ データ データ 2 1 100 200 200 100 1 300 200 500 100 3 2 300 200 500 500 2 300 200 500 500 4 1 300 3 200 300 350 600 5 3 200 300 350 600 6 1 500 7
G2 =IF(G1="","",IF(MAX(A:A)=G1,"",SMALL(A:A,COUNTIF(A:A,"<="&G1)+1))) H2 =IF($G2="","",LOOKUP(1,0/(($A$2:$A$80000=$G2)*(B$2:B$80000)),B$2:B$80000))
H2をK2までコピー。
G2:K2 下へコピー。 (GobGob) 2015/04/14(火) 14:50
補足
B:E列「0」には非対応 (GobGob) 2015/04/14(火) 14:51
一応、ゼロ、マイナス値に対応
H2 =IF($G2="","",LOOKUP(1,0/(($A$2:$A$80000=$G2)*(B$2:B$80000<>"")),B$2:B$80000)) (GobGob) 2015/04/14(火) 14:53
ただ、私の配慮が足りず、伝え切れていなかった部分があるため再度投稿させていただきます。
解るようでしたら再度回答をしていただければ幸いです。
(ぽこぽこ) 2015/04/14(火) 17:31
『データの並び替えについて』(ぽこぽこ)
素人のため力を貸してください。
EXCELにて、下記の「整列前」から「整列後」の形にデータの抽出・並べ替えを行いたいです。
行数が8万行ぐらいあります。
関数・マクロ等を組める方、やり方をご教示下さい。
また、不可能な場合、可能になるアドバイスがありましたらよろしくお願いします。
【やりたいこと】
A列(英字1桁+数字1桁〜4桁)に重複したものがある場合、B〜E列は重複しているセルの最も下の行の文字列を採用する。
採用された文字列を抽出し、最後に1行に整列する。
<整列前>
A列 B列 C列 D列 E列
数字+番号 文字列 文字列 文字列 文字列
B1 K10Z0 V2B00 B2D00 BV1004
B2 K10Z0 V2Q00 B2D00 BV1004
B1 Dh300
B3 K10Z0 V2BG0 B2D00 BV1004
B1 GEEEE
※例:A列で「B1」が重複している。
「B1」かつB列でもっとも下の行は 「Dh300」なので「Dh300」を採用。
「B1」かつC列でもっとも下の行は「V2B00」、D列は「GEEEE」、E列は「BV1004」を採用。
<整列後>
A列 B列 C列 D列 E列
数字+番号 文字列 文字列 文字列 文字列
B1 Dh300 V2B00 GEEEE BV1004
B2 K10Z0 V2Q00 B2D00 BV1004
B3 K10Z0 V2BG0 B2D00 BV1004 ※例:「B1」の採用された文字列を一行に並べる。その他の英字1桁+数字1桁〜4桁も順番に並ぶ。 以上、よろしくお願いします。
< 使用 Excel:Excel2013、使用 OS:Windows7 >
最初の質問を改変しちゃうとその後の回答の辻褄があわへんよーなるで。 なんで元にもどしました。
てなことで。
A B C D E F G H I J K 1 番号 データ データ データ データ 番号 データ データ データ データ 2 B1 K10Z0 V2B00 B2D00 BV1004 B1 Dh300 V2B00 GEEEE BV1004 3 B2 K10Z0 V2Q00 B2D00 BV1004 B2 K10Z0 V2Q00 B2D00 BV1004 4 B1 Dh300 B3 K10Z0 V2BG0 B2D00 BV1004 5 B3 K10Z0 V2BG0 B2D00 BV1004 6 B1 GEEEE
G2 =IFERROR(INDEX(A$2:A$80000,SMALL(INDEX((MATCH(A$2:A$80000&"",A$2:A$80000&"",0)<>ROW(A$2:A$80000)-1)*10^16+ROW(A$2:A$80000)-1,),ROW(A1)))&"","") H2 =IF($G2="","",LOOKUP(1,0/(($A$2:$A$80000=$G2)*(B$2:B$80000<>"")),B$2:B$80000))
(GobGob) 2015/04/15(水) 08:14
Sub test() Dim dic As Object Dim v, i As Long, s As String Dim ky, itm
Set dic = CreateObject("scripting.dictionary")
v = Sheets("Sheet1").Range("A1").CurrentRegion
For i = 1 To UBound(v, 1) s = v(i, 1) If Not dic.exists(s) Then dic(s) = Array(Empty, Empty, Empty, Empty) End If
dic(s) = Array(IIf(IsEmpty(v(i, 2)), dic(s)(0), v(i, 2)), _ IIf(IsEmpty(v(i, 3)), dic(s)(1), v(i, 3)), _ IIf(IsEmpty(v(i, 4)), dic(s)(2), v(i, 4)), _ IIf(IsEmpty(v(i, 5)), dic(s)(3), v(i, 5))) Next
With Sheets("Sheet2").Range("A1") .CurrentRegion.ClearContents
ky = dic.Keys itm = dic.Items
For i = 0 To dic.Count - 1 .Offset(i).Value = ky(i) .Offset(i, 1).Resize(, 4).Value = itm(i) Next
.CurrentRegion.Sort Key1:=.Columns(1), Header:=xlNo Application.Goto .Cells(1)
End With
MsgBox "並べ替え完了!"
End Sub
(マナ) 2015/04/15(水) 20:48
(マナ) 2015/04/16(木) 13:23
Sub test2() Dim dic As Object Dim v, r As Long, c As Long Dim i As Long, j As Long, s As String Dim n As Long Dim w()
Set dic = CreateObject("scripting.dictionary")
v = Sheets("Sheet1").Range("A1").CurrentRegion.Resize(, 5) r = UBound(v, 1) c = UBound(v, 2) ReDim w(1 To r, 1 To c)
For i = 1 To r s = v(i, 1) If Not dic.exists(s) Then n = n + 1 dic(s) = n w(dic(s), 1) = s End If For j = 2 To c If Not IsEmpty(v(i, j)) Then w(dic(s), j) = v(i, j) Next Next
With Sheets("Sheet2").Range("A1") .CurrentRegion.ClearContents .Resize(r, c).Value = w .CurrentRegion.Sort Key1:=.Columns(1), Header:=xlNo Application.Goto .Cells(1) End With
MsgBox "並べ替え完了!"
End Sub
(マナ) 2015/04/16(木) 20:49
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.