- ベストアンサー
Excelにおける数値の並び替え
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
E7: =INDEX($B$7:$B$50000,(ROW(A1)-1)*5+COLUMN(A1))
その他の回答 (5)
E7: =OFFSET($B$7,(ROW(A1)-1)*5+COLUMN(A1)-1,)
お礼
当方の説明不足にもかかわらず、意図する回答を早急に頂き、ありがとうござました。
- MackyNo1
- ベストアンサー率53% (1521/2850)
>この例では各系列のデータは100個としていますが、実際には数万データあります。 各系列のデータが数万あるのではなく、数万のデータ5つの系列に分けたいと言う意味ですね? セルの色で分けるのでなく、規則的に5つおきに飛んだセルを各系列に振り分けて表示したいということなら、以下のような数式を入力し、右方向に5つ下方向にデータ数分だけオートフィルします(元データがA1セル以下に入力されている場合)。 =OFFSET($A$1,(ROW(A1)-1)*5+COLUMN(A1)-1,0)&"" データが文字列でない場合は、最後の「&""」の部分を削除してください。
お礼
当方の説明不足にもかかわらず、意図する回答を早急に頂き、ありがとうござました。
- tom04
- ベストアンサー率49% (2537/5117)
No.2です! 前回のコードで一部誤りがありました。 If Cells(i, 1) >= (j - 3) * 100 And Cells(i, 1) < (j - 2) * 100 Then の行を If Cells(i, 1) > (j - 3) * 100 And Cells(i, 1) <= (j - 2) * 100 Then に訂正してください。 余計な等号が一つ入っているために、100・200・・・等の区切りの良い数値が隣の列に表示されてしまいました。 検証せずに投稿してごめんなさいね。m(__)m
お礼
当方の説明不足にもかかわらず、回答を早急に頂き、ありがとうござました。
- tom04
- ベストアンサー率49% (2537/5117)
こんばんは! 外していたらごめんなさい。 A列のデータを100毎に別列に昇順に表示すれば良いわけですよね? 一応そういうことだとして、VBAになってしまいます 一例ですがコードを載せておきます。 A列の1行目からデータがありC列以降に表示させるとします。 画面左下にある操作したいSheet見出し上で右クリック → コードの表示 → VBE画面が出ますので ↓のコードをコピー&ペーストしてマクロを実行してみてください。 (Alt+F8キー → マクロ → マクロ実行です) Sub test() 'この行から Dim i, j As Long For j = 3 To WorksheetFunction.RoundDown(WorksheetFunction.Max(Range("A:A")) / 100, 0) + 2 For i = 1 To Cells(Rows.Count, 1).End(xlUp).Row If Cells(i, 1) >= (j - 3) * 100 And Cells(i, 1) < (j - 2) * 100 Then Cells(Rows.Count, j).End(xlUp).Offset(1) = Cells(i, 1) End If Next i Next j Dim k, L As Long For L = 3 To ActiveSheet.UsedRange.Columns.Count k = Cells(Rows.Count, L).End(xlUp).Row Range(Cells(2, L), Cells(k, L)).Sort key1:=Cells(2, L), order1:=xlAscending Next L MsgBox "操作が完了しました!" End Sub 'この行まで 数万データあるということなので結構時間がかかると思います。 こんな感じではどうでしょうか?m(__)m
お礼
当方の説明不足にもかかわらず、回答を早急に頂き、ありがとうござました。
- keithin
- ベストアンサー率66% (5278/7941)
どんな理由でグループに分けられているのか,説明できる理由もなくただ「色が付いている」としか言えないのでしたら,関数や操作では出来ません。 マクロを併用し,セルに塗った色を隣のセルに書き出して,そちらを並べ替えて再配置してください。 get.cell 24 をキーワードに検索してみると4.0マクロ関数という古いマクロを使った方法が多数ヒットしますが,もうちょい使いやすくすると 手順: ALT+F11を押す 現れた画面で挿入メニューから標準モジュールを挿入する 現れたシートに下記をコピー貼り付ける function getcolor(byval target as excel.range) getcolor = target.cells(1).interior.colorindex end function ファイルメニューから終了してエクセルに戻る 色を塗ったセルの隣に =getcolor(B7) のように式を入れ,リストの下端までコピーし,全体を並べ替える 同じ色のグループが並んでまとまるので,コピーして移し替える 作業が終わったらシートごと新しいブックに移動又はコピーし,マクロごとブックを破棄する 以上です。 一方「グループ分け」の理由がちゃんとあって説明できるなら,そしてその説明がエクセルで計算できる論理的な内容なら(簡単な例:グループ1は1から100まで,グループ2は101から200までなどのような),その理屈をきちんと言葉にして説明して改めてご相談を投稿してみてください。 数式を使い,グループを計算してそちらを基準に関数だけで処理も出来ますし,また前述同様並べ替えてコピーして集めてしまえばすぐに出来上がりです。 #参考: 最新のExcel2007以降を利用できれば,セルに塗った色を基準に並べ替えたり,オートフィルタで絞り込んでグループごとに集めてしまうコトも簡単にできるようになりました。
お礼
当方の説明不足にもかかわらず、回答を早急に頂き、ありがとうござました。
お礼
当方の説明不足にもかかわらず、意図する回答を早急に頂き、ありがとうござました。