以下のような表形式(300列×500行)のデータをソートしなくてはならず、エクセルマクロでやろうと思うのですが、
初心者のためできず困っています。助けて頂けませんでしょうか。
アクセスなどほかのアプリで簡単にできるようであれば、別の方法でも構いません。
[入力例]値なし=0
X1 X2 X3 X4 … X299 X300
----------------------------------------
Y1 | 3 101 89 2
Y2 | 143 9
Y3 |
Y4 | 5 1
: |
Y499| 5 2 10
Y500| 10
[出力例]
Yxについてそれぞれ上位10位までの結果を出力。括弧内に値を出力。
※値が同じものについては順不問。
Y1 X200(120) X2(101) X145(83) X99(20) … X65(2) X1(3)
Y2 X3(143) X4(9) X1(0) X2(0) … X9(0) X10(0)
:
Y500 X4(10) X31(8) X11(7) X31(7) … X1(0) X2(0)
宜しくお願いします。
No.1
- 回答日時:
セルのB1にx1、A2にy1があると仮定しますと最終行y500はA501となります。
1行下を空行にして、その1行下から
y1,=OFFSET(A2,-1,MATCH(LARGE(B2:D2,1),B2:D2,0)) &"("& OFFSET(A2,0,MATCH(LARGE(B2:D2,1),B2:D2,0)) &")",=OFFSET(A2,-1,MATCH(LARGE(B2:D2,2),B2:D2,0)) &"("& OFFSET(A2,0,MATCH(LARGE(B2:D2,2),B2:D2,0)) &")",・・・・・,=OFFSET(A2,-1,MATCH(LARGE(B2:D2,10),B2:D2,0)) &"("& OFFSET(A2,0,MATCH(LARGE(B2:D2,10),B2:D2,0)) &")"
y2,=OFFSET(A2,-2,MATCH(LARGE(B2:D2,1),B2:D2,0)) &"("& OFFSET(A2,0,MATCH(LARGE(B2:D2,1),B2:D2,0)) &")",=OFFSET(A2,-2,MATCH(LARGE(B2:D2,2),B2:D2,0)) &"("& OFFSET(A2,0,MATCH(LARGE(B2:D2,2),B2:D2,0)) &")",・・・・・,=OFFSET(A2,-2,MATCH(LARGE(B2:D2,10),B2:D2,0)) &"("& OFFSET(A2,0,MATCH(LARGE(B2:D2,10),B2:D2,0)) &")"
・・・
のように入力下さい。
nfushiさん
ありがとうございます。ご回答いただいたもので、
できるのかとおもうのですが、いろいろ試行錯誤したのですが、
当方のスキル不足ために上手くできませんでした。
即答頂いたにも関わらず申し訳ございませんでした。
上記のとおり、解決いたしましたので、Closeさせて頂きます。
No.2ベストアンサー
- 回答日時:
単純に上位10個までで並び替えるのだけでしたら簡単ですが、Xnn(mm)の様な文字列を作って表示となると面倒ですね。
Excelでやる場合を説明しますが、まず、Excelで行う場合、300列を扱うためには、Excel2007が必須になります。
その上で、やり方は色々とあると思いますが、私でしたらソートをExcelシートにやらせる為に、次の様な処理のマクロを組みます。
1.1行目の列の項目名(X1~X300)と、対象行の値を作業用のシートに行列を入れ替えてコピー。
2.ワーク用シートで項目名と値を並べ替え(値を降順で)
3.貼り付け用のデータ(10位までの「Xnn(mm)」と言う文字列)を作って結果用のシートに貼り付け
4.1に戻る
以下の例では、Sheet1を元データ用、Sheet2を結果用、Sheet3を作業用にしています。
また、予め、Sheet3のC1セルに =A1&"("&B1&")" と入れてC10までコピーしておいてください。
Sub Sample()
Dim nLoop As Long
nLoop = 2
Application.ScreenUpdating = False '画面の更新停止
Do While (True)
If Sheets("Sheet1").Cells(nLoop, 1) = "" Then Exit Do 'A列が空なら終了
'作業シートの掃除
Sheets("Sheet3").Select
Columns("A:B").Select
Application.CutCopyMode = False
Selection.ClearContents
'列見出しのコピー
Sheets("Sheet1").Select
Range(Cells(1, 2), Cells(1, 301)).Select
Selection.Copy
Sheets("Sheet3").Select
Range("A1").Select
'行列入れ替え貼り付け
Selection.PasteSpecial Paste:=xlPasteValues, Transpose:=True
'データのコピー
Sheets("Sheet1").Select
Range(Cells(nLoop, 2), Cells(nLoop, 301)).Select
Selection.Copy
Sheets("Sheet3").Select
Range("B1").Select
'数値として扱わせるために、値のみを加算で行列入れ替え貼り付け
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlAdd, Transpose:=True
'データのソート
Columns("A:B").Select
Selection.Sort Key1:=Range("B1"), Order1:=xlDescending, Header:=xlGuess
'10位までの情報コピーして結果用シートに貼り付け
Range("C1:C10").Select
Selection.Copy
Sheets("Sheet2").Select
Cells(nLoop, 2).Select
Selection.PasteSpecial Paste:=xlPasteValues, Transpose:=True
nLoop = nLoop + 1
Loop
Application.CutCopyMode = False
Application.ScreenUpdating = Truealse '画面の更新再開
End Sub
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 数学 場合の数、確率 45 (浜松医科大学) 1 2023/07/29 13:52
- 数学 ハイネボレルの被覆定理、内田伏一著 「集合と位相」定理22.1 1 2022/07/07 10:49
- 数学 数学(ベクトル) 単位ベクトルの一次結合で一般の空間ベクトルは表せる という式なのですがなぜ 「x1 3 2023/04/10 01:24
- その他(プログラミング・Web制作) Pythonにおける物理のシミュレーションでの単位変換について 2 2023/06/02 17:11
- 数学 線形代数の対称行列についての問題がわからないです。 2 2023/01/08 14:59
- その他(プログラミング・Web制作) Pythonによる物理の斜方投射の位置座標表示について 2 2023/06/05 12:46
- Excel(エクセル) エクセルのマクロについて教えてください。 1 2022/03/31 12:46
- 数学 写真の図は中心(a,b)半径rの円とその円周上の(x1,y1)における接線lと円の中心とlを結ぶ任意 4 2023/08/08 16:20
- Excel(エクセル) エクセルで同じ数字同士を自動で線で結ぶVBAを教えてください 6 2022/04/26 23:13
- 数学 数学直線の方程式とベクトル方程式について 直線の方程式で 点(x1,y1)を通り、直線ax+by+c 1 2022/08/12 12:13
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
マクロの「SaveAs」でエラーが...
-
マクロ実行後に別シートの残像...
-
Count Ifのセルの範囲指定に変...
-
EXCELのSheet番号って変更でき...
-
100万件越えCSVから条件を満た...
-
Unionでの他のシートの参照につ...
-
VBA 空白行に転記する
-
複数シートの複数列に入力され...
-
Changeイベントで複数セルへの...
-
エクセル 複数シートの同一セ...
-
Excel VBA オートフィルターで...
-
RemoveDuplicatesメソッドにつ...
-
VBAで変数の数/変数名を動的に...
-
グラフマクロで系列を変数にす...
-
VBA 最終行を選んだシートにコ...
-
VBAでEXCELから固定長...
-
VBA別シートの最終行の次行へ転...
-
ExcelのVBマクロを、バックグラ...
-
【VBA】特定の条件でセルをコピー
-
VBAコードについて
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
マクロの「SaveAs」でエラーが...
-
VBA 空白行に転記する
-
EXCELのSheet番号って変更でき...
-
マクロ実行後に別シートの残像...
-
VBA 別ブックからの転記の高速...
-
VBA別シートの最終行の次行へ転...
-
【VBA】特定の条件でセルをコピー
-
Count Ifのセルの範囲指定に変...
-
100万件越えCSVから条件を満た...
-
楽天RSSからエクセルVBAを使用...
-
VBAコードについて
-
Changeイベントで複数セルへの...
-
VBAで変数の数/変数名を動的に...
-
Excel2013で切り取り禁止
-
グラフマクロで系列を変数にす...
-
VBA 実行時エラー1004 rangeメ...
-
ExcelのVBマクロを、バックグラ...
-
Unionでの他のシートの参照につ...
-
Excel VBA オートフィルターで...
-
アクセスからエクセルへ出力時...
おすすめ情報