アプリ版:「スタンプのみでお礼する」機能のリリースについて

いつもお世話になります。下のような既存の表があります。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件)

以下でやってみました。



説明の都合上、元データは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

#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

シート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
    • 2
この回答へのお礼

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

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

こんばんは!


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

一例ですが、
↓の画像のように表を作ってみました。
元データは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

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

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