• 締切済み

画像のように整列した表にするにしたいのですが

画像のように左の表から右の表に変更する数式みないなものがあればご教授いただきたく思っております。 クラスは複数あると過程して(数百~数千)、また数字もこの画像ですと5つまでですが、 実際のものは数十あります。 以上よろしくお願いいたします。

みんなの回答

  • bunjii
  • ベストアンサー率43% (3589/8248)
回答No.4

>クラスは複数あると過程して(数百~数千)、また数字もこの画像ですと5つまでですが、 「過程して」は「仮定して」の誤変換ですか? H列のクラス名は昇順でソートされていると考えて良ければ次のようにすると良いでしょう。 A1=H1 A2=IF(A1="","",INDEX(H:H,MATCH(A1,H:H)+1)&"") A2セルを下へ必要数コピーすれば組名の単一化ができます。 他にはH列をA列へコピーしてA列のみ「重複の削除」を行って単一化することでも良いでしょう。 B1=IF(AND($A1<>"",COUNTIF($H:$H,$A1)>COLUMN()-2),INDEX($I:$I,SMALL(INDEX(($H$1:$H$5000=$A1)*ROW(B$1:B$5000)+($H$1:$H$5000<>$A1)*ROW(B$5001),0),COLUMN()-1)),"") B1セルを右と下へ必要数コピーすると目的に合います。 但し、処理対象のH列とI列は最大5000行としてありますので、それより多い場合は範囲を変更してください。 尚、この数式は配列値を大量に扱いますので処理範囲が大きくなると応答がなくなりシステムが壊れたと勘違いすることになります。 VBAで処理される方が良いかも知れません。

noname#204879
noname#204879
回答No.3

非常に原始的(?)な方法を紹介しておきます。 ただし、此れは Excel 2002 に依るものなので、貴方は自分のバージョンに合わせてお読みください。 Sheet1 の表を考えます。 1.Sheet1 のG列を文字列 # で埋める。(Fig-1) 以下は、Sheet2 についての説明。 2.次の各セルにそれぞれ右側の式を入力   C2: =COUNTIF(B$2:B2,"#")   A2: =OFFSET(Sheet1!A$1,C2,)   B2: =OFFSET(Sheet1!$B$1,(ROW(A1)-1)/6,MOD(ROW(A1)-1,6))   D2: =OR(B2="#",B2=0) 3.範囲 C2:D2 を下方にズズーッとドラッグ&ペースト。(Fig-2) 4.列A~D全体を選択して、[コピー]→[値の貼り付け]を実行 5.[オートフィルタ]でD列の TRUE でレコードを抽出して、全レコード行を選択(Fig-3) 6.[編集]→[行の削除]を実行 7.[データ]→[フィルタ]→[すべて表示]を実行(Fig-4) 8.必要に応じて、列C、D、1行目を削除

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.2

こんにちは! 関数でもできないことはないと思いますが、 VBA向きの質問のようですので、VBAでの一例です。 画像のように元データはSheet1のA列1行目からあるとし、Sheet2に表示させています。 Alt+F11キー → メニュー → 挿入 → 標準モジュール → VBE画面のカーソルが点滅しているところに ↓のコードをコピー&ペースト → Excel画面に戻り(VBE画面を閉じて)マクロを実行してみてください。 (Alt+F8キー → マクロ → マクロ実行です) Sub Sample1() 'この行から Dim i As Long, j As Long, cnt As Long, wS As Worksheet Set wS = Worksheets("Sheet2") wS.Cells.Clear With Worksheets("Sheet1") For i = 1 To .Cells(Rows.Count, "A").End(xlUp).Row 'Sheet1のA列1行目~最終行まで★ For j = 2 To .Cells(i, Columns.Count).End(xlToLeft).Column 'Sheet1のB列~データが入っている最終列まで★ If .Cells(i, j) <> "" Then cnt = cnt + 1 wS.Cells(cnt, "A") = .Cells(i, "A") wS.Cells(cnt, "B") = .Cells(i, j) End If Next j Next i End With End Sub 'この行まで ※ 関数でないので、データ変更があるたびにマクロを実行する必要があります。m(_ _)m

  • weboner
  • ベストアンサー率45% (111/244)
回答No.1

計算式なら H1 =IFERROR(INDEX(クラス,SMALL(IFERROR(1/ISNUMBER(データ範囲)*ROW(クラス),""),ROW())),"") ※配列計算です[Shift]+[Ctrl]+「Enter]で確定 データ範囲= B1:F12 クラス = A1:A12 にそろぞれ名前付けされています I1 =IFERROR(VLOOKUP(H1,表全体,COUNTIF($H$1:H1,H1)+1,0),"") こちらは普通の計算式 表全体= A1:F12 に名前付け 小さな表ならこれで問題はないけど 数十列x数千行の表の場合配列計算だと再計算で時間がかかる可能性があります(PCの性能次第ですが) あまり長くかかるようならマクロを組んだほうがいい

関連するQ&A

  • 表のばらばらの文字列を1列にまとめたい 関数

    添付の左の表を右の表にしたいです。 (1)左の表には数式が入っていて、この他にもう一つある表のデータに該当すると1列ごとにSMとかNPとか表示されるようになっています。 (2)この左の表は実際には136列あるので、結果を印刷すると一枚に収まりきらないのです。なので、右の表のように、1列に表示したいのです。 (3)1行のうち、2個以上文字列が入ることもありますが、その可能性は低いので、とりあえず1行に1個ずつ出現すると考えてもらっていいです。(2個以上文字列が出現する場合も分かれば教えてください。) (4)関数でできませんか? またはマクロでもいいです。

  • 画像を添付しています。

    画像を添付しています。 画像にある左の表を、右の表にレイアウトを変更することが できるでしょうか。 よろしくお願いいたします。

  • Wordで、「表」の中にある直線の整列

    Word2000です。 表(メニューの「罫線」-「挿入」-「表」で作ったもの。)があり、 その中に何本かの直線(「オートシェイブ(U)」の「線」で作ったもの。)があります。 ツールバーの「オブジェクトの選択」という白い矢印を押すと、 その何本かの直線を同時に選擇することができますが、 「図形の調整(R)」の「配置/整列」で 「左揃え」「右揃え」などをしようとしても灰色になっていて選擇することができません。 表の中にある何本かの直線を、「左揃え」「右揃え」などしたいのですが、 どうすればよいでしょうか。 なお、表の外にある直線は、上記の方法で「左揃え」「右揃え」などできます。

  • 変わった方法でセルの結合をしたい

    画像の左のような表で、横4つのセルの結合をしたいのですが、結合した後にいずれかの数字を残すのではなく、右の表のように数字を左からくっつけたものが欲しいです。 結合して元の表が無くなってもかまいませんし、新しく列を作ってそこに出力しても良いです。 どなたか、方法をご教授願えませんでしょうか。

  • ワードで挿入した表のインデント位置の変更

    前任者が作成したので変更の仕方がわかりません。(^_^;) 数字を入力したいのですが、表の中のカーソルの位置が左揃えになっていて、デリートキーを押してもカーソルの矢印はビクとも動きません。(>_<) そのまま数字を入力したら左方向に表の枡が長くなって行きます。(T_T) 上方のインデント位置も動いてくれません。(-_-;) どうしたら右揃えに変更できるでしょうか?<(_ _)>

  • Wordで画像(図)と表(罫線入り)を左右に並べるには?

    Wordで画像を左にいれ、その右に表を入れようとしたのですが。右側に表のあるところに、左に画像を挿入すると表が画像の下に移動し画像と表を同列にいれられません。どうすればよいのでしょう。画像をいろいろ動かしていたら、一応入ったのですが、今度は画像も表も動かせなくなりました。(図=犬マ-ク)が作動しません。すこし図と表を移動したいのですが。

  • エクセルの文字整列

    先日、数式の入れ方を教えてもらい表を完成することが出来ましたが、新たな問題が発生しましたので教えてください。 参考URL、矢印部分の文字整列が数式を入れると段違いになり揃いません。左揃えは揃うのですが、見た目が悪いので、中央揃え又は右揃えにしたいので、アドバイスお願いします。 参考URL http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1156473446

  • 表の中の割合のバーを背景で付けるには

    表を作っていまして、その表には80%や35%のような割合の数字が入っています。 80%のセル(表の中の1つ)には左からバーが85%くらいまでくるような処理を行いたいと思っています。もちろんバーの上には「80%」の文字がcenterで乗るように。 イメージ的にはOffice 2007のエクセルでも同じような機能があったと思います。 backgroundでイメージは指定することができるのですが、この画像のサイズを変更してあげればいいのかなと考えていますが、サイズ指定の方法がわかりません。 知っている方、ご教授ください。

    • ベストアンサー
    • HTML
  • 縦に並んでいるデータを横並びに変えたい

    お世話になっております。エクセルの表で縦に並んでいる数字を横にしたいのです。添付の左の表のシートを参照して右の表に変更したいと思っているのですがどなたかご教授いただけませんでしょうか。エクセルは2010です。

  • 表のばらばらの文字列をまとめるマクロ 関数

    以前、同じ内容の質問を聞いたのですが、少し条件を変えて質問です。 (1)左の表には数式が入っていて、この他にもう一つある表のデータに該当すると1列ごとにSMとかNPとか表示されるようになっています。 (2)この左の表は実際には136列あるので、結果を印刷すると一枚に収まりきらないのです。なので、右の表のように、最短の列に表示したいのです。 (3)この例ではたまたま1行に1個ずつしか文字列が入ってないので右の表は1列ですが、1行に付き2個以上文字列が入ることもあります。5個以上はほとんどないです。 (4)関数でできませんか? またはマクロでもいいです。 以前、回答でいただいた関数は =IFERROR(HLOOKUP("*?",$A1:$D1,1,FALSE),"") 又は =IF(COUNTIF($A1:$D1,"*?"),HLOOKUP("*?",$A1:$D1,1,FALSE),"") でしたが、これだと1行につき1個文字列があるときのみ可能です。 1行に付き2個以上文字列がある場合に、例えば空欄を削除して左に詰めるような感じでマクロでできないでしょうか?

専門家に質問してみよう