ここから質問投稿すると、最大4000ポイント当たる!!!! >>

いつもお世話になります。下のような既存の表があります。IDがあり各IDごとにデータが入っています。各IDにあるデータの数は不規則です。(多くても10個くらいまでです。)簡単に書くとこんな感じです。

 |A |B |C |D |E |
1|ID|No. |  |←タイトル行
2|T1|11|  |
3|T1|15|  |
4|T1|17|  |
5|T2|13|  |
6|T2|16|  |
7|T3|14|  |




これをそれぞれのIDにあわせて横に並べ,これに枠をつけて印刷したいと思います。

 |A |B |C |D |
1|ID|No. |  |  |
2|T1|11|15|17|
3|T2|13|16|  |
4|T3|14|  |  |




この並べ替えを,作業列や作業用シートは作ってもいいので,関数で実現したいと思います。良い知恵をお借りできたら幸いです。よろしくお願いします。

A 回答 (5件)

No.4です!


たびたびごめんなさい。

前回の数式で間違いがありました。

Sheet2のA2セルの数式を
=IF(COUNT(Sheet1!$A$2:$A$1000)>=ROW(A1),INDEX(Sheet1!$B$2:$B$1000,SMALL(Sheet1!$A$2:$A$1000,ROW(A1))),"")

に訂正してください。
(配列数式ではありません!)
他のセルは大丈夫だと思います。

どうも何度も失礼しました。m(__)m
    • good
    • 1

こんばんは!


参考になるかどうか判りませんが・・・

一例ですが、
↓の画像のように表を作ってみました。
元データはSheet1にあり、それをSheet2に並び替える方法です。

Sheet1のA列を作業用の列とさせていただいています。

Sheet1のA2セルに
=IF(COUNTIF($B$2:B2,B2)=1,ROW(A1),"")
という数式をいれオートフィルで下へコピーします
(Sheet2の数式は1000行まで対応できるようにしていますので、1000行くらいまでコピーしても構いません)

Sheet2のA2セルに
=IF(COUNTIF($B$2:B2,B2)=1,ROW(A1),"")
としてオートフィルでずぃ~~!と下へコピーします。

そして、B2セル(配列数式になってしまいますので、もしこの画面からセルにコピー&ペーストする場合は、
単に貼り付けただけではエラーになるとおもいます。
貼り付け後、F2キーを押すか、数式バー内で一度クリックすると、編集可能になりますので
Shift+Ctrl+Enterキーで確定してください。)

B2セルは
=IF($A2="","",IF(COUNTIF(Sheet1!$B$2:$B$1000,$A2)>=COLUMN(A1),INDEX(Sheet1!$C$2:$C$1000,SMALL(IF(Sheet1!$B$2:$B$1000=Sheet2!$A2,ROW($A$1:$A$999)),COLUMN(A1))),""))
として、Shift+Ctrl+Enter

最後にB2セルのフィルハンドルで列方向と行方向にコピーすると
画像のような感じになります。

以上、長々と書きましたが、
参考になれば幸いです。m(__)m
「エクセル 縦列に並ぶデータを横に並べる」の回答画像4
    • good
    • 1

シート1に元のデータがあるとします。


A列を重点として昇順で並べ替えなどでデータが順序よく並んでいるとします。
C列は作業列としてC2に次の式を入力して下方にオートフィルドラッグします。

=IF(A2="","",IF(ROW(A2)=2,"1/1",IF(COUNTIF(A$2:A2,A2)=1,LEFT(C1,FIND("/",C1)-1)+1,LEFT(C1,FIND("/",C1)-1))&"/"&COUNTIF(A$2:A2,A2)))

次にまとめのための表をシート2に作るとしてA1セルにはID、B1セルにはNoと文字を入力します。

A2セルには次の式を入力し右横方向にオートフィルドラッグしたのちに下方向にもオートフィルドラッグします。

=IF(COLUMN(A1)=1,IF(COUNTIF(Sheet1!$C:$C,ROW(A1)&"/1")=0,"",INDIRECT("Sheet1!A"&MATCH(ROW(A1)&"/1",Sheet1!$C:$C,0))),IF(COUNTIF(Sheet1!$C:$C,ROW(A1)&"/"&(COLUMN(A1)-1))=0,"",INDIRECT("Sheet1!B"&MATCH(ROW(A1)&"/"&(COLUMN(A1)-1),Sheet1!$C:$C,0))))

これでシート1で新たなIDが追加されても自動的にそのIDやNoが追加され表示されます。
    • good
    • 1
この回答へのお礼

ありがとうございます。
追加が反映されるのはとても使いやすいので助かります。これを作業シートにして印刷用シートから参照させて出したい結果を出すことができました。ありがとうございました。

お礼日時:2009/10/16 12:20

#1です。


すみません書き忘れました。

最後に右、下に引っ張ったあと、データがなくて、#N/Aになってしまうセルが出ると思います。
たぶんそのままではイヤだと思いますので、消しておいたほうが良いかもしれません。
念のため書いときます。

1)右、下に引っ張った範囲を指定

2)Ctrl +G 、Alt+S 、Alt+F 、Alt押しっぱなしで、U、X、G

3)それで 「OK」。そしたらエラーのセルだけ選択されますから、Deleteすれば一気に消せます。

ご承知のことでしたらお節介すみません。
    • good
    • 1
この回答へのお礼

ご回答いただきありがとうございます。
さっそく試してみました。確かに#N/Aを表示するセルができますね。ご丁寧に教えていただき本当にありがとうございました。

お礼日時:2009/10/16 12:13

以下でやってみました。



説明の都合上、元データは2行から100行まであるとします。
また、IDの種類は、T1~T20まであるとします。


1)E1セルに、”ID”と記入し、E2セル以降、”T1”~”T20”を書く。E21セルまで。

2)C2セルに、 =MATCH(A2,$E$2:$E$21,0)&"-"&COUNTIF($A$2:$A2,A2)
として、100行まで下に引っ張る

3)F2セルに、 =INDEX($B$2:$B$100,MATCH(ROW(A1)&"-"&COLUMN(A1),$C$2:$C$100,0),1)
として、後は右、下に引っ張る

C列は作業列です。

たぶんもっとお詳しい方から、さらにスマートな方法も出ると思いますけどご参考までお願いします。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qエクセルで縦に並んだデータを横に並び替えたい

エクセルで↓ のようなデータがあります

 | A | B | C | D
1|A店|りんご| 2 |
2|A店|みかん| 3 |
3|A店|バナナ| 4 |
4|B店|りんご| 3 |
5|B店|バナナ| 2 |

これを以下のようなかたちにしたいのですが、一つずつ移動する以外に方法はありますか?

 | A | B | C | D | E | F | G |
1|A店|りんご| 2 |みかん| 3 |バナナ| 4 |
2|B店|りんご| 3 |バナナ| 2 |


100以上データがあり、手作業で移すのは大変です。
ちなみにVBAなどはほとんど理解できません。

何か解決策があればと質問させていただきたました。
よろしくお願いします。

Aベストアンサー

E列に店名リストを作成する
(なければフィルタオプションの設定で重複するレコードを無視するを使うとよい)

F1セルに 1 右へ連番
N2セルに =COUNTIF(A:A,E2) 下へオートフィル
F2セルに
=IF(F$1>$N2*2,"",INDEX($B:$C,MATCH($E2,$A:$A,0)+F$1/2,1))
G2セルに
=IF(F$1>$N2*2,"",INDEX($B:$C,MATCH($E2,$A:$A,0)+G$1/2-1,2))
F2:G2セルを選択して、右へオートフィル、そのまま下へオートフィル

E:N列を選択して 切り取り 別シートへ貼り付け

Qエクセルで横並びの複数データを縦の一本のデータにしたい

こんにちは。宜しくお願い致します。

   A   B  C
1 静岡 埼玉 
2 福島 東京 愛媛
3 青森 
4 長崎 徳島 愛媛
5 東京 千葉 
6 秋田 兵庫 大阪
.
.
.


例えばこういう形で好きな都道府県の上位3つの解答がそれぞれあったとします。(1個の人もいるし、2個の人もいます)

これを別のシート(同じシートの違う場所でも構いません)に縦並び1本で出したいときどうしたらいいでしょうか。

★こういう風にしたい★

静岡
福島
青森
長崎
東京
秋田
埼玉
東京
愛媛
徳島
愛媛
千葉
兵庫
大阪
.
.

※好きな県などが人によって重複していても構いません、また順不同でもいいです。(縦並びのデータに東京が20個あってもよいということ)

形式を選択して貼り付けで行列を入れ替えるではうまくいかないです。

宜しくお願い致します。

Aベストアンサー

VBAで、もっと簡単に。
下記をVBEの標準モジュールにコピーし貼りつけ。
元データのあるシートで、データのある範囲を範囲指定して(空白セルが範囲内にあっても結構)、下記を実行。
Sub ichiretu()
Dim cl As Range
p = 1
For Each cl In Selection
If cl <> "" Then
Worksheets("sheet3").Cells(p, "A") = cl
p = p + 1
End If
Next
End Sub
Sheet3のA列に並びます。

Qエクセルで、条件に一致した行を別のセルに抜き出す方法

エクセルで、指定した条件に一致するセルを含む行をすべて抜き出す方法が知りたいです。

たとえば、

<A列> <B列> <C列>
7/1 りんご 100円
7/2 ぶどう 200円
7/2 すいか 300円
7/3 みかん 100円

このような表があって、100円を含む行をそのままの形で、
別のセル(同じシート内)に抜き出したいのですが。

7/1 りんご 100円
7/3 みかん 100円

抽出するだけならオートフィルターでもできますが、
抽出結果を自動的に、別の場所に、常に表示させておきたいのです。

初歩的な質問だと思いますが、検索しても分からなかったので、よろしくお願いします。

Aベストアンサー

同じ質問が結構よく出てますが、そんなに初歩的でもありません
別シートのA1セルに「100円」と入力し、そのシートの任意のセルに以下の式を貼り付けて下さい。後は、下方向、右方向にコピー。
日付のセル書式は「日付」形式に再設定してください

=IF(COUNTIF(Sheet1!$C:$C,$A$1)>=ROW(A1),INDEX(Sheet1!A:A,LARGE(INDEX((Sheet1!$C$1:$C$500=$A$1)*ROW(Sheet1!$C$1:$C$500),),COUNTIF(Sheet1!$C:$C,$A$1)-ROW(A1)+1)),"")

データ範囲は500行までとしていますが、必要に応じて変更して下さい

QExcelで隣のセルと同じ内容に列を並べ替える方法

質問の意味がわかりにくくて申し訳ございません。

ただいま600人分の名簿を並べ替える作業をしておりまして、
毎年の作業で、いつもおっくうになっております。

毎年同じ600人分の名簿をいくつかのグループに分けるために列を新たに挿入し、
そこに1や2や3といった数字を打ち込み、並べ替え機能をつかって、
グループ分けをしておりました。

しかし、すでに氏名(漢字)のデータですが並べ替えたデータがあり、
そのデータと同じように、旧データを並べ替えたいのです。

うまく質問の意図が伝えることができずすみません。

例えば、

A|E *****
B|C *****
C|D *****
D|A *****
E|B *****

このような感じです。*はそれぞれの人特有のデータなので、ABCDE順に並べ替えても引き継がせたいデータです。

ECDABの隣にすでにあるABCDEの氏名(漢字)のデータをコピーし、
ECDABをABCDEの順番に並べ替えたいのです。


少しわかりにくいかもしれませんが、
もし何か良い方法ありましたら、お教えいただけますと幸いです。
よろしくお願い致します。

質問の意味がわかりにくくて申し訳ございません。

ただいま600人分の名簿を並べ替える作業をしておりまして、
毎年の作業で、いつもおっくうになっております。

毎年同じ600人分の名簿をいくつかのグループに分けるために列を新たに挿入し、
そこに1や2や3といった数字を打ち込み、並べ替え機能をつかって、
グループ分けをしておりました。

しかし、すでに氏名(漢字)のデータですが並べ替えたデータがあり、
そのデータと同じように、旧データを並べ替えたいのです。

うまく質問の意図が伝えることができずす...続きを読む

Aベストアンサー

例えばシート1のA2セルから下方にはECDABと氏名が並び横の列にはそれぞれの人のデータが入力されているとします。
そこでシート2には並び変えたい氏名の順序でA2セルから下方にABCEと入力します。
シート2のB2セルには次の式を入力して右横方向にドラッグコピーしたのちに下方にもドラッグコピーします。

=IF(COUNTIF(Sheet1!$A:$A,$A2),IF(VLOOKUP($A2,Sheet1!$A:$XX,COLUMN(B1),FALSE)="","",VLOOKUP($A2,Sheet1!$A:$XX,COLUMN(B1),FALSE)),"")

その後にシート2全体を選択してから右クリックして「コピー」し、その後にシート2のA1セルにカーソルを移して右クリックし、「形式を選択して貼り付け」で「値」にチェックをして貼り付けます。

QEXCELで重複行の横並びについて教えて下さい

エクセルにてデータが同じものを横列に並べ替えたデータ
を作成したいのですがどなたか簡単に出来る方法を教えて
下さい。

元データ(A,Bとも文字データ)
A1 B1
A1 B2
A1 B3
A2 B1
A2 B3
A2 B4
A3 B1

を以下のように(Aが同じ場合に横にBを並べ替え)
A1 B1 B2 B3
A2 B1 B3 B4
A3 B1

よろしくお願いします。

Aベストアンサー

皆さんの難しい式は読解しておりませんが、A列が仲間同士で並んでいなくても対応できるVBAコードです。
非連続セルをコピー貼り付けすると、エクセルが勝手に詰めてくれた事を思い出して組んでみました。
正統的でも、分かりやすくもないコードですが、ご参考まで。
’Sheet1のデータをSheet2に転記します。
Sub test()
Dim targetRange As Range, myCell As Range, destCell As Range
Dim myDic As Object, myKey As Variant

Set myDic = CreateObject("Scripting.Dictionary")
Set targetRange = Sheets("Sheet1").Range("A1").CurrentRegion
Set destCell = Sheets("Sheet2").Range("A1")
For Each myCell In targetRange.Columns(1).Cells
If Not myDic.exists(myCell.Value) Then
myDic.Add myCell.Value, myCell.Offset(0, 1)
Else
Set myDic.Item(myCell.Value) = Union(myDic.Item(myCell.Value), myCell.Offset(0, 1))
End If
Next myCell
For Each myKey In myDic.keys
destCell.Value = myKey
myDic.Item(myKey).Copy
destCell.Offset(0, 1).PasteSpecial Paste:=xlValues, Transpose:=True
Set destCell = destCell.Offset(1, 0)
Next myKey
Set myDic = Nothing
End Sub

皆さんの難しい式は読解しておりませんが、A列が仲間同士で並んでいなくても対応できるVBAコードです。
非連続セルをコピー貼り付けすると、エクセルが勝手に詰めてくれた事を思い出して組んでみました。
正統的でも、分かりやすくもないコードですが、ご参考まで。
’Sheet1のデータをSheet2に転記します。
Sub test()
Dim targetRange As Range, myCell As Range, destCell As Range
Dim myDic As Object, myKey As Variant

Set myDic = CreateObject("Scripting.Dictionary")
Set targetRange = Shee...続きを読む

Qアクセス 項目毎にデータを横に並べる方法

こんにちは。宜しくお願いします。
アクセスのデータで

商品/SEQ/値段
a   1  500
a   2  600
a   3  700
b   1  200
c   1  450
c   2  520

というデータを
商品/値段1/値段2/値段3/・・・
a   500  600   700
b   700
c   450  520
のように横に並べたいのですが、
このようにする方法はありますでしょうか?
最終的にエクセルファイルにするので、アクセスかエクセルで何か方法があれば教えて下さい。

Aベストアンサー

クロス集計クエリでできます。
クエリの新規作成でウィザードが開いたらクロス集計クエリウィザードを選び順次進めます。
テーブルを選択し行見出しに商品を選択、列見出しにSEQを選択、集計する値があるフィールドで値段を選び集計方法は先頭にし集計値を表示するのチェックを外します。
このクエリを開けば出来ます。
または
クエリの新規作成でデザインビューを開きSQLビューに切替えて下記のSQLをコピーすれば出来ます。(テーブル名や商品などのフィールド名は使うテーブル名に直してください。)

TRANSFORM First(テーブル名.値段) AS 値段の先頭
SELECT テーブル名.商品
FROM テーブル名
GROUP BY テーブル名.商品
PIVOT テーブル名.SEQ;

このクエリを使ってExcelにエクスポートすれば良いと思います。

Qエクセルで重複しているデータの抽出のしかたを教えてください。

エクセルで重複しているデータを抽出したいのですが・・。なにぶん初心者なもので簡単な方法があればよいのですが・・。
A列に日付 B列に企業名このデータが300件ほどあります。

 Å列      B列
1月 1日    AAAA社
1月 4日   BBBB社
1月 8日   CCCC社
2月 1日   BBBB社
2月20日    DDDD社
3月 2日   AAAA社

と、あるとしてB列の企業名が重複しているものを抽出したいのですが・・・。この場合 AAAA社とBBBB社ですが。
これを簡単に抽出する方法はないでしょうか?
教えてください お願いいたします。

Aベストアンサー

企業名がセルB2からセルB300まで入力されていると仮定します。
セルC2に IF(COUNTIF($B$2:B2,B2)>1,"*","") を入力し、セルC300までコピーして下さい。すると重複したデータの二番目以降に "*" のマークが付きます。
(注) 数式を下のセルまでコピーするため、COUNTIF($B$2 は絶対参照にして下さい。

QExcel:縦に並んでるセルを横に移動させるには??

Excelについて教えて下さい。
3000人の氏名が入ったデータがあります。
その3000人がそれぞれ様々な資格持っていて、各人に対して資格名称が縦に入っています。
資格一つにつき一行使用しているので、同じ氏名がいくつも出てきてしまうのです。
これを、氏名は一つにして、資格名称と取得年月日を横一列に並べたいというわけです。


<例>
氏名  資格名     取得年
Aさん 秘書検定1級  2000年
Aさん 1級建築士   2005年
Bさん 社労士     2001年 
Bさん 衛生管理士   1999年
Bさん 公認会計士   2000年
Cさん 普通運転免許 2005年



氏名  資格名     取得年   資格名    取得年
Aさん 秘書検定1級  2000年  1級建築士  2005年
Bさん 社労士      2001年  衛生管理士  1999年
Cさん 普通運転免許 2005年
  

便利な関数などないでしょうか?
どなたか分かる方、ご返信お願いします!

Excelについて教えて下さい。
3000人の氏名が入ったデータがあります。
その3000人がそれぞれ様々な資格持っていて、各人に対して資格名称が縦に入っています。
資格一つにつき一行使用しているので、同じ氏名がいくつも出てきてしまうのです。
これを、氏名は一つにして、資格名称と取得年月日を横一列に並べたいというわけです。


<例>
氏名  資格名     取得年
Aさん 秘書検定1級  2000年
Aさん 1級建築士   2005年
Bさん 社労士     2001年 
Bさん 衛生管理士   1999年
...続きを読む

Aベストアンサー

本当はマクロで行うべきだと思いますが、関数とオートフィルタで実現します。ただし質問の例にあるように氏名でソートされていることを条件とします。(されていない場合は先にソートして下さい)

D2(二つめの資格名欄)に
 =IF($A2=OFFSET($A2,INT((COLUMN()-2)/2),0),OFFSET($B2,INT((COLUMN()-2)/2),0),"")
E2(二つめの資格取得年欄)に
 =IF($A2=OFFSET($A2,INT((COLUMN()-2)/2),0),OFFSET($C2,INT((COLUMN()-2)/2),0),"")
の式をそれぞれペーストします。

D2:E2を下方向にずっとコピーします。更にD:E列をコピーし、F:G、H:I…列に貼りつけます。

すると各人が出現する最初の行には全資格が横に並びますので、あとは「データ」→「フィルタ」→「フィルタオプション」で「重複データを無視する」にチェックすると希望のリストになると思います。

あとはコピーして「値」として別シートに貼りつけるなりどうぞ

本当はマクロで行うべきだと思いますが、関数とオートフィルタで実現します。ただし質問の例にあるように氏名でソートされていることを条件とします。(されていない場合は先にソートして下さい)

D2(二つめの資格名欄)に
 =IF($A2=OFFSET($A2,INT((COLUMN()-2)/2),0),OFFSET($B2,INT((COLUMN()-2)/2),0),"")
E2(二つめの資格取得年欄)に
 =IF($A2=OFFSET($A2,INT((COLUMN()-2)/2),0),OFFSET($C2,INT((COLUMN()-2)/2),0),"")
の式をそれぞれペーストします。

D2:E2を下方向にずっとコピ...続きを読む

Qエクセルで1列に500行並んだデータを5列毎に改行

エクセル2000で、A1~A500までデータが縦並びに入力されています。

これを5列毎に改行して、横並びのデータに加工したいのですが、何か方法ありますか?

図解すると、、


A1
A2
A3
A4
A5
A6
A7


A500

のデータを

A1 A2 A3 A4 A5
A6 A7 A8 A9 A10
・・・・・・
A496 A497 A498 A499 A500



したいのです。

何かよい方法ありましたらお教え願います。

Aベストアンサー

'直接シートをいじるのでコピーをしてから試してみてください。
Sub Macro1()
COUNTER = 0
For INP = 1 To Cells(Rows.Count, 1).End(xlUp).Row Step 5
COUNTER = COUNTER + 1
Range("A" & INP & ":A" & INP + 4).Copy
Range("B" & COUNTER).PasteSpecial Paste:=xlPasteValues, Transpose:=True
Application.CutCopyMode = False
Next INP
Range("A1").EntireColumn.Delete
End Sub

Qエクセルでの縦グループを横グループに並べ替える方法

次のような表があります(Pフォントの影響で列幅がずれています)。

縦に3行分が一つのグループであり、1行分のスペースを空けて
再び3行分のグループが繰り返しあります。
このようなデータグループが縦に500件以上あります。

│ A │ B │ C │ D │ E │ F │ G │ H
1│a1 │ │ │ │ │ │ │
2│a2 │ │ │ │ │ │ │
3│a3 │ │ │ │ │ │ │
4│ │ │ │ │ │ │ │
5│b1 │ │ │ │ │ │ │
6│b2 │ │ │ │ │ │ │
7│b3 │ │ │ │ │ │ │


これを下表のように横に並べ替えたいのです。
件数が多く、ハンドで一つ一つを並べ替えるのは困難なので、
何とか簡単に実現する方法を知りたいのです。

│ A │ B │ C │ D │ E │ F │ G │ H
1│ a1 │ a2 │ a3 │ │ │ │ │
2│ b1 │ b2 │ b3 │ │ │ │ │
3│ │ │ │ │ │ │ │
4│ │ │ │ │ │ │ │
5│ │ │ │ │ │ │ │
6│ │ │ │ │ │ │ │
7│ │ │ │ │ │ │ │

皆様、何とかお知恵をお貸しください。
よろしくお願いいたします。

次のような表があります(Pフォントの影響で列幅がずれています)。

縦に3行分が一つのグループであり、1行分のスペースを空けて
再び3行分のグループが繰り返しあります。
このようなデータグループが縦に500件以上あります。

│ A │ B │ C │ D │ E │ F │ G │ H
1│a1 │ │ │ │ │ │ │
2│a2 │ │ │ │ │ │ │
3│a3 │ │ │ │ │ │ │
4│ │ │ │ │ │ │ │
5│b1 │ │ │ │ │ │ │
6│b2 │ │ │ │ │ │ │
7│b3 │ │ │ │ │ │ │ ...続きを読む

Aベストアンサー

No.3です!
たびたびごめんなさい。
質問文をちゃんと読んでいませんでした。
>縦に3行分が一つのグループであり、1行分のスペースを空けて
再び3行分のグループが繰り返しあります。

とありますので、前回の投稿は無視してください。

Sheet1のA1セルからデータがあり、Sheet2のA1セルから表示させるとします。

Sheet2のA1セルに
=OFFSET(Sheet1!$A$1,(ROW(A1)-1)*4+(COLUMN(A1)-1),,1)
として、C1セルまでコピー!
これを下へオートフィルでコピーすると
希望に近い形にならないでしょうか?

どうも何度も失礼しました。m(__)m


人気Q&Aランキング