人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

エクセルの表データを一列のデータに変換するプラグインがあったと思うのですが
ご存知のかた教えてください。こんなイメージです。

**|AA|BB|CC|
aa|01|03|05|
bb|07|00|02|

上記を下記の様に変換したいのです。

aa AA 01
aa BB 03
aa CC 05
bb AA 07
bb BB 00
bb cc 02

プラグインでなくてもできる方法があればその方法でもかまいません。
よろしくお願いします。

●質問者: tk378mx
●カテゴリ:コンピュータ
✍キーワード:00 AA BB CC イメージ
○ 状態 :終了
└ 回答数 : 4/4件

▽最新の回答へ

1 ● northapple
●18ポイント

http://www.atmarkit.co.jp/fwin2k/win2ktips/359pivot/pivot.html

@IT:Windows TIPS -- Tips:ピボットテーブルでクロス集計を行う

ご質問の件はピボットテーブルのことと思われます。質問の例では、ピボットテーブルで、**を行のフィールドにドラッグし、AAとBBとCCをデータアイテムにドラッグすると、得られると思います。URLも参考にしてみてください。

◎質問者からの返答

ありがとうございます。

ピボットテーブルの機能を理解していませんでした。ですが教えて頂いた方法では下記の様に左端の列に空白ができてしまいます。データーが膨大にあるのでここにもコピーペーストするのも大変です、なにかよい方法は無いでしょうか?

aa AA 01

BB 03

CC 05

bb AA 07

BB 00

CC 02


2 ● きゃづみぃ
●18ポイント

http://mis.edu.yamaguchi-u.ac.jp/kaisetu/note_text/5/sanko/7-2.h...

7-2. コピーの貼り付け(形式を選択して貼り付け)について

あんまりないよでしたら、

AAから02までを選択してコピーし、

「形式を選択して貼りつけ」で行列を入れ替えるとしたらいいでしょう。

それで

AA|01|07

BB|03|00

CC|05|02

となったら、それぞれをコピーすればいいでしょう。

◎質問者からの返答

ありがとうございます。

データの件数がかなりの量ですので、この方法ではきびしそうですが、参考になりました。


3 ● りくっち
●30ポイント

http://www2.moug.net/bbs/exopr/

Excel????@?\ Q&A?f????

northappleさんのピボット集計後の空白についですが、数式で簡単に埋めることが出来ます。


特にシート数など制限がなければ、

ピボット集計した表をコピーして別シートに「形式を選択して貼付け」から「値」を選んで貼付けをします。


1.A列に空の列を一列挿入します。

2.下記のセルに数式を入力します。

A2=B2

A3=IF(B3=””,A2,B3)以下コピー

3.A列をコピーしてから再度A列に値コピーをして数式を取り除いた値だけのデータにします。

4.B列を削除します。


以外には先にaa AAに相当する列の全てのパターンを先に取り出し、

値の部分を配列関数で取り出す方法がありますが、

データ量が多い場合はかなりファイルが重くなるのであまりお勧めできません。

◎質問者からの返答

ありがとうございます。できました!

前回のコメントではスペースが自動的に削除されてしまい、表が再現できて居なかったにも関わらず完璧な回答です。

ありがとうございました。


4 ● northapple
●30ポイント

http://www.juno-e.com/excel/macro/macro1.htm

EXCEL マクロを使ってみる・貼り付け

はじめに以下のマクロをExcelに登録して下さい。登録はURLを参考にしてみてください。


Sub 自動入力()

Dim largeAA As Integer ’AA,BB,・・・・・の個数の変数

largeAA = InputBox(”AA,BB,・・・・・の個数を入力してください”)

Dim smallaa As Integer ’aa,bb,・・・・・の個数の変数

smallaa = InputBox(”aa,bb,・・・・・の個数を入力してください”)

Dim label


For j = 1 To smallaa

For i = 1 To largeAA

If Cells(largeAA * (j - 1) + i, 1).Value <> 0 Then

label = Cells(largeAA * (j - 1) + i, 1)

Else

Cells(largeAA * (j - 1) + i, 1) = label

End If

Next i

Next j

End Sub


http://base.google.com/base/items?customerId=1189710&offerId...

Google Base: Error

この図のようにもとの表を選択してピボットテーブルの作成を開始します。

http://base.google.com/base/items?customerId=1189710&offerId...

Google Base: Error

この図のように各項目をドラッグします。

http://base.google.com/base/items?customerId=1189710&offerId...

Google Base: Error

この図のようにピボットテーブルが完成します。この図ではピボットテーブルのオプションで行と列の総計を非表示にしています。

http://base.google.com/base/items?customerId=1189710&offerId...

Google Base: Error

この図のように、ピボットテーブルから表のみをコピーして新規のワークシートにコピーしてください。

http://base.google.com/base/items?customerId=1189710&offerId...

Google Base: Error

メニュー→ツール→マクロから先ほど登録した自動入力マクロを実行してください。

http://base.google.com/base/items?customerId=1189710&offerId...

Google Base: Error

この図のようにダイアログが表示されますが、数字でAA,BB,...の個数(ここでは3)を入力します。

http://base.google.com/base/items?customerId=1189710&offerId...

Google Base: Error

また表示されるダイアログではaa,bb,....の個数を数字で入力します。

http://base.google.com/base/items?customerId=1189710&offerId...

Google Base: Error

するとこのように左端の空欄だったところに、aa,bb,...が自動で入力されていると思います。まとめますと、ピボットテーブルで表を作成して、Excel-VBAマクロで空欄部分に自動で入力する、という流れになっています。マクロについては10×10ぐらいの表でいろんなパターンで軽く検証してみたのですがマクロの実行に際しましてはご自身でも確認してみてください。

◎質問者からの返答

ありがとうございます。こう言う方法も有るんですね、これはちょっと自分には難しく感じてしまいますが、今度勉強を兼ねて試してみたいと思います。

お陰様で問題は解決しましたので終了させて頂きます。

ありがとうございました。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ