[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『列にあるカテゴリー毎のデータを行に転記をしたい』(みかん)
エクセル2010です。
?@の表を?Aの表のようにまとまるよう一気に転記したいです。
?@の表 (B列に入力しているものは重複してません)
A B 1 りんご 青森 2 りんご 秋田 3 りんご 山口 4 トマト 群馬 5 柿 和歌山 6 柿 山梨 7 レモン 兵庫
?Aの表
A B C D 1 りんご 青森 秋田 山口 2 トマト 群馬 3 柿 和歌山 山梨 4 レモン 兵庫
今までは列から行へのコピーを一行ずつしてたのですが、
100行位あるので一気に転記したいです。
何方か教えて下さい。
よろしくお願いいたします。
< 使用 Excel:Excel2010、使用 OS:Windows2000 >
(マナ) 2016/05/20(金) 22:46
元シートをSheet1だとして、別シートに。
A1 : =Sheet1!A1 A2 : =IFERROR(VLOOKUP("*",IF(COUNTIF(A$1:A1,Sheet1!A$1:A$1000)=0,Sheet1!A$1:A$1000),1,FALSE),"") これを Ctrl/Shift/Enter で入力
A2 を下にずずずっとフィルコピー
B1 : =IFERROR(IF($A1="","",INDEX(Sheet1!$B:$B,SMALL(IF(Sheet1!$A$1:$A$1000=$A1,ROW($A$1:$A$1000)),COLUMN(A1)))),"") これを Ctrl/Shift/Enter で入力し、右にずずずっとフィルコピーし、そのまま下にフィルコピー
Sheet1 を変更すれば、別シートも変更されます。
★ A2 の式はネットから拾ってきた式で、中身はよくわかっていません。
(β) 2016/05/20(金) 22:52
マクロ案一例です。 いったんアップしたものを、上書きで書き直しました。
Sub Sample() Dim dic As Object Dim c As Range Dim tmp As Variant Dim i As Long Dim j As Long Dim v As Variant
Set dic = CreateObject("Scripting.Dictionary")
With Sheets("Sheet1") With .Range("A1", .Range("A" & Rows.Count).End(xlUp)) ReDim v(1 To .Rows.Count, 1 To .Rows.Count) For Each c In .Cells If Not dic.exists(c.Value) Then dic(c.Value) = Array(dic.Count + 1, 0) tmp = dic(c.Value) i = tmp(0) j = tmp(1) + 1 v(i, j) = c.Offset(, 1).Value dic(c.Value) = Array(i, j) Next End With End With
With Sheets("Sheet2") .UsedRange.ClearContents .Range("A1").Resize(dic.Count).Value = WorksheetFunction.Transpose(dic.keys) .Range("B1").Resize(dic.Count, UBound(v, 2)).Value = v .Select End With
End Sub
(β) 2016/05/20(金) 23:17
早々にありがとうございました。
マクロはほとんど使わないですが、教えて頂いたマクロ式を貼り付けて
マクロを回したら出来ました。
とても助かりました。
教えて頂きありがとうございました!
(みかん) 2016/05/21(土) 06:52
(マナ) 2016/05/21(土) 10:47
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.