[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『複雑な並べ替えについて』(Please)
よろしくお願いします。
十の位の統計
● 0 1 2 3 4 5 6 7 8 9
−−−−−−−−−−−−−−−−−
0|15|11|08|07|07|13|11|08|06|07
1|07|08|06|08|06|09|03|05|10|08
2|03|08|11|05|11|03|06|10|12|07
3|11|05|02|07|08|07|12|03|06|14
4|13|03|05|07|16|09|08|05|09|09
5|10|07|11|06|05|09|06|07|05|11
6|04|04|06|10|05|05|08|10|10|07
7|09|05|07|12|05|01|07|03|09|06
8|09|10|08|04|05|09|04|10|04|14
9|12|06|13|10|18|11|07|02|05|05
一の位の統計
● 0 1 2 3 4 5 6 7 8 9
−−−−−−−−−−−−−−−−−
0|15|11|08|07|07|13|11|08|06|07
1|07|08|06|08|06|09|03|05|10|08
2|03|08|11|05|11|03|06|10|12|07
3|11|05|02|07|08|07|12|03|06|14
4|13|03|05|07|16|09|08|05|09|09
5|10|07|11|06|05|09|06|07|05|11
6|04|04|06|10|05|05|08|10|10|07
7|09|05|07|12|05|01|07|03|09|06
8|09|10|08|04|05|09|04|10|04|14
9|12|06|13|10|18|11|07|02|05|05
現在、A5:K15に十の位の統計という表とA18:K28に一の位の統計という表があります。
(一の位の中身は、十の位をコピーしただけの、投稿用データです)
これは例えば、昨日「77」という数字が出て、今日「12」が出たとするならば
十の位のセルでI7、データ上では「05」に1を足すということです。
一の位ならばI21セル「10」に1を足すというふうに使用しています。
L5からL15までは
「0」
「1」
「2」
「3」
「4」
「5」
「6」
「7」
「8」
「9」
が入っています。(一の位のL19からL28も)
M列にはB列とL列を&で連結した値が下のように入っています。
15「0」
07「1」
03「2」
11「3」
13「4」
10「5」
04「6」
09「7」
09「8」
12「9」
以降もC+LがN列 D+LがO列……という風になっています。
この表をX列〜AG列まで数値に直して貼りつけします。
その後に各列を昇順でソートしています。
マクロにしていて十の位の一列ソート、十の位の二列ソートという個別ソートです。
(前に一斉ソートをしましたが失敗しました。)
その後、AI列からARまでは、rightで右から2つめの値を取り出しています。
15「0」
07「1」
03「2」
11「3」
13「4」
10「5」
04「6」
09「7」
09「8」
12「9」の「」の中身です。
今度はソートした値を数値に直して、AT列からBC列にコピーしています。
※一の位も同じです。
最後は、BEに十の位、BFに一の位をコピーして左右を&で結合させた値をBGに出しています。
(今回ならば、今日の出た数字が「12」なので”十の位の一”と”一の位の二”をソートしたものです)
これをもっと効率よくできる方法はないでしょうか?
どなたかご教授いただけたらと思います、よろしくお願い致します。
< 使用 Excel:Excel2010、使用 OS:Windows10 >
一番最後の重要な結論がさっぱり理解できないです。 >最後は、BEに十の位、BFに一の位をコピーして左右を&で結合させた値をBGに出しています。 >(今回ならば、今日の出た数字が「12」なので”十の位の一”と”一の位の二”をソートしたものです) BFとBGの値はそれぞれどうなればいいのですか? (稲葉) 2017/06/17(土) 08:20
説明通りにやってみたけどこれでいいのかい? 結局最後はわからないのだけど。 |[AI]|[AJ]|[AK]|[AL]|[AM]|[AN]|[AO]|[AP]|[AQ]|[AR]|[AS]|[AT]|[AU]|[AV]|[AW]|[AX]|[AY]|[AZ]|[BA]|[BB]|[BC]|[BD]|[BE]|[BF]|[BG] [6] | 2| 4| 3| 8| 5| 7| 1| 9| 8| 9| | 03| 03| 02| 04| 05| 01| 03| 02| 04| 05| |?? |?? |?? [7] | 6| 6| 4| 2| 6| 2| 8| 3| 5| 7| | 04| 04| 05| 05| 05| 03| 04| 03| 05| 06| |?? |?? |?? [8] | 1| 3| 1| 5| 7| 6| 2| 7| 9| 0| | 07| 05| 06| 06| 05| 05| 06| 03| 05| 07| |?? |?? |?? [9] | 7| 7| 6| 0| 8| 3| 5| 4| 0| 2| | 09| 05| 06| 07| 05| 07| 06| 05| 06| 07| |?? |?? |?? [10]| 8| 9| 7| 3| 1| 1| 7| 1| 3| 6| | 09| 06| 07| 07| 06| 09| 07| 06| 06| 07| |?? |?? |?? [11]| 5| 5| 0| 4| 0| 4| 9| 5| 4| 1| | 10| 07| 08| 07| 07| 09| 07| 07| 09| 08| |?? |?? |?? [12]| 3| 1| 8| 1| 3| 5| 4| 0| 7| 4| | 11| 08| 08| 08| 08| 09| 08| 08| 09| 09| |?? |?? |?? [13]| 9| 2| 2| 6| 2| 8| 6| 2| 1| 5| | 12| 08| 11| 10| 11| 09| 08| 10| 10| 11| |?? |?? |?? [14]| 4| 8| 5| 9| 4| 9| 0| 6| 6| 3| | 13| 10| 11| 10| 16| 11| 11| 10| 10| 14| |?? |?? |?? [15]| 0| 0| 9| 7| 9| 0| 3| 8| 2| 8| | 15| 11| 13| 12| 18| 13| 12| 10| 12| 14| |?? |?? |?? [16]| | | | | | | | | | | | | | | | | | | | | | | | | [17]| | | | | | | | | | | | | | | | | | | | | | | | | [18]| | | | | | | | | | | | | | | | | | | | | | | | | [19]| 2| 4| 3| 8| 5| 7| 1| 9| 8| 9| | 03| 03| 02| 04| 05| 01| 03| 02| 04| 05| | | | [20]| 6| 6| 4| 2| 6| 2| 8| 3| 5| 7| | 04| 04| 05| 05| 05| 03| 04| 03| 05| 06| | | | [21]| 1| 3| 1| 5| 7| 6| 2| 7| 9| 0| | 07| 05| 06| 06| 05| 05| 06| 03| 05| 07| | | | [22]| 7| 7| 6| 0| 8| 3| 5| 1| 0| 2| | 09| 05| 06| 07| 05| 07| 06| 05| 06| 07| | | | [23]| 8| 9| 7| 3| 1| 1| 7| 4| 3| 6| | 09| 06| 07| 07| 06| 09| 07| 05| 06| 07| | | | [24]| 5| 5| 0| 4| 0| 4| 9| 5| 4| 1| | 10| 07| 08| 07| 07| 09| 07| 07| 09| 08| | | | [25]| 3| 1| 8| 1| 3| 5| 4| 0| 7| 4| | 11| 08| 08| 08| 08| 09| 08| 08| 09| 09| | | | [26]| 9| 2| 2| 6| 2| 8| 6| 6| 1| 5| | 12| 08| 11| 10| 11| 09| 08| 10| 10| 11| | | | [27]| 4| 8| 5| 9| 4| 9| 0| 8| 6| 3| | 13| 10| 11| 10| 16| 11| 11| 10| 10| 14| | | | [28]| 0| 0| 9| 7| 9| 0| 3| 2| 2| 8| | 15| 11| 13| 12| 18| 13| 12| 11| 12| 14| | | | (稲葉) 2017/06/17(土) 08:39
(すみません、ソートは降順の間違いでした)
一の位が「2」ですので、AV19からAV28を使用します。
これはBFに移動。
AV19はBF1 AV20はBF2 AV21はBF3……後は同じ。
これを使って上から出やすい順番0〜99の全組み合わせをBGに出力しています。
稲葉様に作成していただいた表はAT以降からずれている気がします。
よろしくお願い致します。
(Please) 2017/06/17(土) 12:36
文字読むのだるいので AT以降の求める結果をエクセルそのままコピーして貼り付けてくれませんか? (稲葉) 2017/06/17(土) 12:42
>十の桁は「1」となりますのでAU6からAU15を使用します >一の位が「2」ですので、AV19からAV28を使用します。 ってありますが、最初の投稿だと
>これは例えば、昨日「77」という数字が出て、今日「12」が出たとするならば >十の位のセルでI7、データ上では「05」に1を足すということです。 >一の位ならばI21セル「10」に1を足すというふうに使用しています。 とあります。
昨日の値は横軸 今日の値は縦軸 逆だったので修正 12:51 と認識していましたが、違うのですか? (稲葉) 2017/06/17(土) 12:50
これは例えば、昨日「77」という数字が出て、今日「12」が出たとするならば
>十の位のセルでI7、データ上では「05」に1を足すということです。 >一の位ならばI21セル「10」に1を足すというふうに使用しています。 とあります。
「77」→「12」を反映したデータをソートします。
>十の位のセルでI7、データ上では「05」に1を足すということです。 >一の位ならばI21セル「10」に1を足すというふうに使用 この時点で「77」の役目が終わります。 そして翌日分は「12」の後に出る数字を統計を使って予想するために「12」を使います。
すみません。
文字では上手く伝わらないかもしれません。
AT以降のセルを貼りつけますので、少々お待ち下さい。
(Please) 2017/06/17(土) 13:22
要するに、12の後に出やすい数値を求めたいってことですか? 一応お伺いいたしますが、何のために? (稲葉) 2017/06/17(土) 14:10
0 0 9 7 9 0 3 8 2 8
4 8 5 9 4 9 0 6 6 3
9 2 2 6 2 8 6 2 1 5
3 1 8 1 3 5 4 0 7 4
5 5 0 4 0 4 9 5 4 1
8 9 7 3 1 1 7 4 3 6
7 7 6 0 8 3 5 1 0 2
1 3 1 5 7 6 2 7 9 0
6 6 4 2 6 2 8 3 5 7
2 4 3 8 5 7 1 9 8 9
0 0 9 7 9 0 3 8 2 8
4 8 5 9 4 9 0 6 6 3
9 2 2 6 2 8 6 2 1 5
3 1 8 1 3 5 4 0 7 4
5 5 0 4 0 4 9 5 4 1
8 9 7 3 1 1 7 4 3 6
7 7 6 0 8 3 5 1 0 2
1 3 1 5 7 6 2 7 9 0
6 6 4 2 6 2 8 3 5 7
2 4 3 8 5 7 1 9 8 9
AT〜BC(値は上と同じだけど、こちらは数値化している)
0 0 9 7 9 0 3 8 2 8
4 8 5 9 4 9 0 6 6 3
9 2 2 6 2 8 6 2 1 5
3 1 8 1 3 5 4 0 7 4
5 5 0 4 0 4 9 5 4 1
8 9 7 3 1 1 7 4 3 6
7 7 6 0 8 3 5 1 0 2
1 3 1 5 7 6 2 7 9 0
6 6 4 2 6 2 8 3 5 7
2 4 3 8 5 7 1 9 8 9
0 0 9 7 9 0 3 8 2 8
4 8 5 9 4 9 0 6 6 3
9 2 2 6 2 8 6 2 1 5
3 1 8 1 3 5 4 0 7 4
5 5 0 4 0 4 9 5 4 1
8 9 7 3 1 1 7 4 3 6
7 7 6 0 8 3 5 1 0 2
1 3 1 5 7 6 2 7 9 0
6 6 4 2 6 2 8 3 5 7
2 4 3 8 5 7 1 9 8 9
ここで「12」の十の位の一を選ぶ
0
8
2
1
5
9
7
3
6
4
これを上「0」からBE1からBE10へ「8」をBE11からBE20
ここで「12」の一の位の二を選ぶ
9
5
2
8
0
7
6
1
4
3
これは、そのまま「9528076143」の並びでBG1〜BG10にコピー。
「9528076143」でBG11〜BG20にコピー。……同じ
そしてBGがBEとBFを合わせた数字です。
(Please) 2017/06/17(土) 14:18
理由はクジです。
1日に100個の中(00〜99)の1つが当選するクジと
考えてもらえると、わかりやすいと思います。
よろしく願いします。
(Please) 2017/06/17(土) 14:22
ロトかなにかか・・・ 降ります。
そんなランダムに統計も何もないです。 (稲葉) 2017/06/17(土) 14:35
(Please) 2017/06/17(土) 14:39
(Please) 2017/06/17(土) 14:44
余計意味が分からない・・・ クジを引かせたいなら、どんな言語でも乱数位だせるし 統計で出やすいものがあれば、それは乱数じゃないか、試行回数が少ないだけでしょう。
統計を出して何がしたいのですか? (稲葉) 2017/06/17(土) 14:57
稲葉様はエクセルを使いこなせる方ですが、私は乱数の使い方もわからない初心者です。
(統計で出やすいものがあれば、それは乱数じゃないか、試行回数が少ないだけでしょう)
→これをすれば、なにがどうなるのでしょうか?
試行回数とはなにを試せばいいのでしょうか?
無知ですみません。
(Please) 2017/06/17(土) 15:12
話がかみ合わない・・・ 前回の投稿は忘れてください。
話をまとめます。 Pleaseさんの要望は「今ある手段を簡略化」できないか ですよね。
私は結果を求める「手段」を変えようと考えていました。
ヒアリングの結果、十の位が7→1と来たら次は何が出やすいか 一の位が7→2と来たら次は何が出やすいか を知りたがっていることがわかりました。
ではそれを知って何がしたいのか、 もしロトなどのクジであれば意味がないので やめたい。 WEBコンテンツで使いたいのであれば、なんのためにかが知りたい。
とここまでの流れをおさらいしました。
一番最初の話に戻ります。 >これをもっと効率よくできる方法はないでしょうか?
今の手段を効率化するのであれば、マクロの記録で自動化できるところまでしてください。 条件分岐についてなら教えることができます。
(稲葉) 2017/06/17(土) 15:28
「今ある手段を簡略化」できないかですよね。→はい、その通りです。
>これをもっと効率よくできる方法はないでしょうか?
今の手段を効率化するのであれば、マクロの記録で自動化できるところまでしてください。
条件分岐についてなら教えることができます。
ここからの質問に、お答えすればいいのでしょうか?
Sub 数値コピー()
Range("M6:V28").Select Selection.Copy Range("X6").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False ActiveWindow.ScrollColumn = 3 ActiveWindow.ScrollColumn = 4 ActiveWindow.ScrollColumn = 5 ActiveWindow.ScrollColumn = 6 ActiveWindow.ScrollColumn = 7 ActiveWindow.ScrollColumn = 8 ActiveWindow.ScrollColumn = 9 ActiveWindow.ScrollColumn = 10 ActiveWindow.ScrollColumn = 11 ActiveWindow.ScrollColumn = 12 ActiveWindow.ScrollColumn = 13 ActiveWindow.ScrollColumn = 14 ActiveWindow.ScrollColumn = 15 Range("X16").Select Application.CutCopyMode = False ActiveCell.FormulaR1C1 = "" Range("X16:AG18").Select Selection.ClearContents Range("X17").Select End Sub
Sub 昇順()
Range("X6:X15").Select
ActiveWorkbook.Worksheets("統計").Sort.SortFields.Clear ActiveWorkbook.Worksheets("統計").Sort.SortFields.Add Key:=Range("X6"), _ SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal With ActiveWorkbook.Worksheets("統計").Sort .SetRange Range("X6:X15") .Header = xlNo .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With
Range("Y6:Y15").Select
ActiveWorkbook.Worksheets("統計").Sort.SortFields.Clear ActiveWorkbook.Worksheets("統計").Sort.SortFields.Add Key:=Range("Y6"), _ SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal With ActiveWorkbook.Worksheets("統計").Sort .SetRange Range("Y6:Y15") .Header = xlNo .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With
Range("Z6:Z15").Select
ActiveWorkbook.Worksheets("統計").Sort.SortFields.Clear ActiveWorkbook.Worksheets("統計").Sort.SortFields.Add Key:=Range("Z6"), _ SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal With ActiveWorkbook.Worksheets("統計").Sort .SetRange Range("Z6:Z15") .Header = xlNo .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With
Range("AA6:AA15").Select
ActiveWorkbook.Worksheets("統計").Sort.SortFields.Clear ActiveWorkbook.Worksheets("統計").Sort.SortFields.Add Key:=Range("AA6"), _ SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal With ActiveWorkbook.Worksheets("統計").Sort .SetRange Range("AA6:AA15") .Header = xlNo .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With
Range("AB6:AB15").Select
ActiveWorkbook.Worksheets("統計").Sort.SortFields.Clear ActiveWorkbook.Worksheets("統計").Sort.SortFields.Add Key:=Range("AB6"), _ SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal With ActiveWorkbook.Worksheets("統計").Sort .SetRange Range("AB6:AB15") .Header = xlNo .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With
Range("AC6:AC15").Select
ActiveWorkbook.Worksheets("統計").Sort.SortFields.Clear ActiveWorkbook.Worksheets("統計").Sort.SortFields.Add Key:=Range("AC6"), _ SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal With ActiveWorkbook.Worksheets("統計").Sort .SetRange Range("AC6:AC15") .Header = xlNo .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With
Range("AD6:AD15").Select
ActiveWorkbook.Worksheets("統計").Sort.SortFields.Clear ActiveWorkbook.Worksheets("統計").Sort.SortFields.Add Key:=Range("AD6"), _ SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal With ActiveWorkbook.Worksheets("統計").Sort .SetRange Range("AD6:AD15") .Header = xlNo .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With
Range("AE6:AE15").Select
ActiveWorkbook.Worksheets("統計").Sort.SortFields.Clear ActiveWorkbook.Worksheets("統計").Sort.SortFields.Add Key:=Range("AE6"), _ SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal With ActiveWorkbook.Worksheets("統計").Sort .SetRange Range("AE6:AE15") .Header = xlNo .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With
Range("AF6:AF15").Select
ActiveWorkbook.Worksheets("統計").Sort.SortFields.Clear ActiveWorkbook.Worksheets("統計").Sort.SortFields.Add Key:=Range("AF6"), _ SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal With ActiveWorkbook.Worksheets("統計").Sort .SetRange Range("AF6:AF15") .Header = xlNo .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With
Range("AG6:AG15").Select
ActiveWorkbook.Worksheets("統計").Sort.SortFields.Clear ActiveWorkbook.Worksheets("統計").Sort.SortFields.Add Key:=Range("AG6"), _ SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal With ActiveWorkbook.Worksheets("統計").Sort .SetRange Range("AG6:AG15") .Header = xlNo .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With
Range("X19:X28").Select ActiveWorkbook.Worksheets("統計").Sort.SortFields.Clear ActiveWorkbook.Worksheets("統計").Sort.SortFields.Add Key:=Range("X19"), _ SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal With ActiveWorkbook.Worksheets("統計").Sort .SetRange Range("X19:X28") .Header = xlNo .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With
Range("Y19:Y28").Select
ActiveWorkbook.Worksheets("統計").Sort.SortFields.Clear ActiveWorkbook.Worksheets("統計").Sort.SortFields.Add Key:=Range("Y19"), _ SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal With ActiveWorkbook.Worksheets("統計").Sort .SetRange Range("Y19:Y28") .Header = xlNo .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With
Range("Z19:Z28").Select
ActiveWorkbook.Worksheets("統計").Sort.SortFields.Clear ActiveWorkbook.Worksheets("統計").Sort.SortFields.Add Key:=Range("Z19"), _ SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal With ActiveWorkbook.Worksheets("統計").Sort .SetRange Range("Z19:Z28") .Header = xlNo .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With
Range("AA19:AA28").Select
ActiveWorkbook.Worksheets("統計").Sort.SortFields.Clear ActiveWorkbook.Worksheets("統計").Sort.SortFields.Add Key:=Range("AA19"), _ SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal With ActiveWorkbook.Worksheets("統計").Sort .SetRange Range("AA19:AA28") .Header = xlNo .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With
Range("AB19:AB28").Select
ActiveWorkbook.Worksheets("統計").Sort.SortFields.Clear ActiveWorkbook.Worksheets("統計").Sort.SortFields.Add Key:=Range("AB19"), _ SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal With ActiveWorkbook.Worksheets("統計").Sort .SetRange Range("AB19:AB28") .Header = xlNo .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With
Range("AC19:AC28").Select
ActiveWorkbook.Worksheets("統計").Sort.SortFields.Clear ActiveWorkbook.Worksheets("統計").Sort.SortFields.Add Key:=Range("AC19"), _ SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal With ActiveWorkbook.Worksheets("統計").Sort .SetRange Range("AC19:AC28") .Header = xlNo .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With
Range("AD19:AD28").Select
ActiveWorkbook.Worksheets("統計").Sort.SortFields.Clear ActiveWorkbook.Worksheets("統計").Sort.SortFields.Add Key:=Range("AD19"), _ SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal With ActiveWorkbook.Worksheets("統計").Sort .SetRange Range("AD19:AD28") .Header = xlNo .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With
Range("AE19:AE19").Select
ActiveWorkbook.Worksheets("統計").Sort.SortFields.Clear ActiveWorkbook.Worksheets("統計").Sort.SortFields.Add Key:=Range("AE19"), _ SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal With ActiveWorkbook.Worksheets("統計").Sort .SetRange Range("AE19:AE28") .Header = xlNo .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With
Range("AF19:AF28").Select
ActiveWorkbook.Worksheets("統計").Sort.SortFields.Clear ActiveWorkbook.Worksheets("統計").Sort.SortFields.Add Key:=Range("AF19"), _ SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal With ActiveWorkbook.Worksheets("統計").Sort .SetRange Range("AF19:AF28") .Header = xlNo .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With
Range("AG19:AG28").Select
ActiveWorkbook.Worksheets("統計").Sort.SortFields.Clear ActiveWorkbook.Worksheets("統計").Sort.SortFields.Add Key:=Range("AG19"), _ SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal With ActiveWorkbook.Worksheets("統計").Sort .SetRange Range("AG19:AG28") .Header = xlNo .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With
End Sub
Sub 数値コピー2()
Range("AI6:AR15").Select Selection.Copy Range("AT6").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False ActiveWindow.SmallScroll Down:=9 Range("AI19:AR28").Select Application.CutCopyMode = False Selection.Copy Range("AT19").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Range("AO17").Select Application.CutCopyMode = False ActiveCell.FormulaR1C1 = "" Range("AN17").Select End Sub
以上を
Sub 統計抽出()
Call 数値コピー
Call 昇順
Call 数値コピー2
End Sub
で一括処理しています。
これで、
AT〜BC
0 0 9 7 9 0 3 8 2 8
4 8 5 9 4 9 0 6 6 3
9 2 2 6 2 8 6 2 1 5
3 1 8 1 3 5 4 0 7 4
5 5 0 4 0 4 9 5 4 1
8 9 7 3 1 1 7 4 3 6
7 7 6 0 8 3 5 1 0 2
1 3 1 5 7 6 2 7 9 0
6 6 4 2 6 2 8 3 5 7
2 4 3 8 5 7 1 9 8 9
0 0 9 7 9 0 3 8 2 8
4 8 5 9 4 9 0 6 6 3
9 2 2 6 2 8 6 2 1 5
3 1 8 1 3 5 4 0 7 4
5 5 0 4 0 4 9 5 4 1
8 9 7 3 1 1 7 4 3 6
7 7 6 0 8 3 5 1 0 2
1 3 1 5 7 6 2 7 9 0
6 6 4 2 6 2 8 3 5 7
2 4 3 8 5 7 1 9 8 9
まで、進みます。
その後は、「12」ならば 十に一集合、一の二集合と個別ボタンを押しています。
Sub 十の一集合()
Range("AU6:AU15").Select Selection.Copy ActiveWindow.SmallScroll Down:=0 Range("AT6").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Range("AQ3").Select Application.CutCopyMode = False
End Sub
Sub 十の二集合()
Range("AV6:AV15").Select Selection.Copy ActiveWindow.SmallScroll Down:=0 Range("AT6").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Range("AQ3").Select Application.CutCopyMode = False
End Sub
Sub 十の三集合()
Range("AW6:AW15").Select Selection.Copy ActiveWindow.SmallScroll Down:=0 Range("AT6").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Range("AQ3").Select Application.CutCopyMode = False
End Sub
Sub 十の四集合()
Range("AX6:AX15").Select Selection.Copy ActiveWindow.SmallScroll Down:=0 Range("AT6").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Range("AQ3").Select Application.CutCopyMode = False
End Sub
Sub 十の五集合()
Range("AY6:AY15").Select Selection.Copy ActiveWindow.SmallScroll Down:=0 Range("AT6").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Range("AQ3").Select Application.CutCopyMode = False
End Sub
Sub 十の六集合()
Range("AZ6:AZ15").Select Selection.Copy ActiveWindow.SmallScroll Down:=0 Range("AT6").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Range("AQ3").Select Application.CutCopyMode = False
End Sub
Sub 十の七集合()
Range("BA6:BA15").Select Selection.Copy ActiveWindow.SmallScroll Down:=0 Range("AT6").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Range("AQ3").Select Application.CutCopyMode = False
End Sub
Sub 十の八集合()
Range("BB6:BB15").Select Selection.Copy ActiveWindow.SmallScroll Down:=0 Range("AT6").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Range("AQ3").Select Application.CutCopyMode = False
End Sub
Sub 十の九集合()
Range("BC6:BC15").Select Selection.Copy ActiveWindow.SmallScroll Down:=0 Range("AT6").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Range("AQ3").Select Application.CutCopyMode = False
End Sub
Sub 一の一集合()
ActiveWindow.SmallScroll Down:=9 Range("AU19:AU28").Select Selection.Copy Range("AT19").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Range("AG30").Select Application.CutCopyMode = False
End Sub
Sub 一の二集合()
ActiveWindow.SmallScroll Down:=9 Range("AV19:AV28").Select Selection.Copy Range("AT19").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Range("AG30").Select Application.CutCopyMode = False
End Sub
Sub 一の三集合()
ActiveWindow.SmallScroll Down:=9 Range("AW19:AW28").Select Selection.Copy Range("AT19").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Range("AG30").Select Application.CutCopyMode = False
End Sub
Sub 一の四集合()
ActiveWindow.SmallScroll Down:=9 Range("AX19:AX28").Select Selection.Copy Range("AT19").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Range("AG30").Select Application.CutCopyMode = False
End Sub
Sub 一の五集合()
ActiveWindow.SmallScroll Down:=9 Range("AY19:AY28").Select Selection.Copy Range("AT19").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Range("AG30").Select Application.CutCopyMode = False
End Sub
Sub 一の六集合()
ActiveWindow.SmallScroll Down:=9 Range("AZ19:AZ28").Select Selection.Copy Range("AT19").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Range("AG30").Select Application.CutCopyMode = False
End Sub
Sub 一の七集合()
ActiveWindow.SmallScroll Down:=9 Range("BA19:BA28").Select Selection.Copy Range("AT19").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Range("AG30").Select Application.CutCopyMode = False
End Sub
Sub 一の八集合()
ActiveWindow.SmallScroll Down:=9 Range("BB19:BB28").Select Selection.Copy Range("AT19").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Range("AG30").Select Application.CutCopyMode = False
End Sub
Sub 一の九集合()
ActiveWindow.SmallScroll Down:=9 Range("BC19:BC28").Select Selection.Copy Range("AT19").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Range("AG30").Select Application.CutCopyMode = False
End Sub
Sub 十の0集合()
Range("AI6:AI15").Select Selection.Copy Range("AT6").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Range("AR17").Select Application.CutCopyMode = False
End Sub
Sub 一の0集合()
ActiveWindow.SmallScroll Down:=9 Range("AI19:AI28").Select Selection.Copy Range("AT19").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Range("AO17").Select Application.CutCopyMode = False
End Sub
そしてBE1の関数は=$AT$6 BF1の関数は=$AT$19です。
BG=BE1&BF1です。
お察しの通り、ド素人の式です。
お手数だとは、思いますがよろしくお願い致します。
(Please) 2017/06/17(土) 15:48
テスト環境整えてないので、コードのデバッグのみです。 必ずバックアップとってから実行してください。
Option Explicit Sub 統計抽出() Call 数値コピー Call 昇順 Call 数値コピー2 End Sub
Private Sub 数値コピー() Range("M6:V28").Copy Range("X6").PasteSpecial Paste:=xlPasteValues Range("X16:AG18").ClearContents End Sub Private Sub 昇順() Dim i As Long Dim j As Long Dim r As Range '降順か? With Worksheets("統計").Sort For j = 1 To 2 If j = 1 Then Set r = Range("X6:X15") Else Set r = Range("X19:X28") End If For i = 0 To 9 Set r = r.Offset(, i) .SortFields.Clear .SortFields.Add Key:=r(1), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal .SetRange r .Header = xlNo .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply Next i Next j End With End Sub Private Sub 数値コピー2() Range("AI6:AR15").Copy Range("AT6").PasteSpecial Paste:=xlPasteValues Range("AI19:AR28").Copy Range("AT19").PasteSpecial Paste:=xlPasteValues End Sub Sub 集合() Dim Tens As Long Dim Ones As Long Tens = Application.InputBox("「十の位」の数値を入力してください", Type:=1) Ones = Application.InputBox("「一の位」の数値を入力してください", Type:=1) Range("AU6:AU15").Offset(, Tens).Copy Range("AT6").PasteSpecial Paste:=xlPasteValues Range("AU19:AU28").Offset(, Ones).Copy Range("AT19").PasteSpecial Paste:=xlPasteValues MsgBox "完了" End Sub
(稲葉) 2017/06/17(土) 16:43
無事に実行はできましたが、ソートでおかしくなってしまいます。
Sub 統計抽出()
Call 数値コピー Call 昇順 Call 数値コピー2 End Sub
の時点でずれてるように思います。
その後、表示ボックスに十の位と一の位を入力することはエラーなくできました。
何度も、申し訳ありません。
よろしくお願い致します。
(Please) 2017/06/17(土) 17:11
どうおかしくなるかわからんです (稲葉) 2017/06/17(土) 17:24
0 0 9 7 9 0 3 8 2 8
4 8 5 9 4 9 0 6 6 3
9 2 2 6 2 8 6 2 1 5
3 1 8 1 3 5 4 0 7 4
5 5 0 4 0 4 9 5 4 1
8 9 7 3 1 1 7 4 3 6
7 7 6 0 8 3 5 1 0 2
1 3 1 5 7 6 2 7 9 0
6 6 4 2 6 2 8 3 5 7
2 4 3 8 5 7 1 9 8 9
稲葉様のマクロを走らせるとAIからARの間に相違がでるようです。
↓
0 0 0 7 0 0 3 0 0 0
4 8 1 9 1 1 0 1 1 1
9 2 2 6 2 2 6 2 2 2
3 1 3 1 3 3 4 3 3 3
5 5 4 4 4 4 9 4 4 4
8 9 5 3 5 5 7 5 5 5
7 7 6 0 6 6 5 6 6 6
1 3 7 5 7 7 2 7 7 7
6 6 8 2 8 8 8 8 8 8
2 4 9 8 9 9 1 9 9 9
0 0 0 7 0 0 3 0 0 0
4 8 1 9 1 1 0 1 1 1
9 2 2 6 2 2 6 2 2 2
3 1 3 1 3 3 4 3 3 3
5 5 4 4 4 4 9 4 4 4
8 9 5 3 5 5 7 5 5 5
7 7 6 0 6 6 5 6 6 6
1 3 7 5 7 7 2 7 7 7
6 6 8 2 8 8 8 8 8 8
2 4 9 8 9 9 1 9 9 9
よろしくお願いします。
(Please) 2017/06/17(土) 17:30
今で先なので夜以降確認します 範囲を変数にして回しているだけなので、自分で確認された方が早いです (稲葉) 2017/06/17(土) 17:34
以降もよろしくお願い致します。
(Please) 2017/06/17(土) 17:40
一か所コーディングミスってました。 >Set r = r.Offset(, i) を Set r = r.Offset(, 1)
に変更してください。 (稲葉) 2017/06/17(土) 21:01
Set r = r.Offset(, i)
を Set r = r.Offset(, 1)
変更してマクロを走らせたところ
0 0 9 7 9 0 3 8 2 8
1 8 5 9 4 9 0 6 6 3
2 2 2 6 2 8 6 2 1 5
3 1 8 1 3 5 4 0 7 4
4 5 0 4 0 4 9 5 4 1
5 9 7 3 1 1 7 4 3 6
6 7 6 0 8 3 5 1 0 2
7 3 1 5 7 6 2 7 9 0
8 6 4 2 6 2 8 3 5 7
9 4 3 8 5 7 1 9 8 9
0 0 9 7 9 0 3 8 2 8
1 8 5 9 4 9 0 6 6 3
2 2 2 6 2 8 6 2 1 5
3 1 8 1 3 5 4 0 7 4
4 5 0 4 0 4 9 5 4 1
5 9 7 3 1 1 7 4 3 6
6 7 6 0 8 3 5 1 0 2
7 3 1 5 7 6 2 7 9 0
8 6 4 2 6 2 8 3 5 7
9 4 3 8 5 7 1 9 8 9
↓
が、私が細々処理をした結果です。
0 0 9 7 9 0 3 8 2 8
4 8 5 9 4 9 0 6 6 3
9 2 2 6 2 8 6 2 1 5
3 1 8 1 3 5 4 0 7 4
5 5 0 4 0 4 9 5 4 1
8 9 7 3 1 1 7 4 3 6
7 7 6 0 8 3 5 1 0 2
1 3 1 5 7 6 2 7 9 0
6 6 4 2 6 2 8 3 5 7
2 4 3 8 5 7 1 9 8 9
0 0 9 7 9 0 3 8 2 8
4 8 5 9 4 9 0 6 6 3
9 2 2 6 2 8 6 2 1 5
3 1 8 1 3 5 4 0 7 4
5 5 0 4 0 4 9 5 4 1
8 9 7 3 1 1 7 4 3 6
7 7 6 0 8 3 5 1 0 2
1 3 1 5 7 6 2 7 9 0
6 6 4 2 6 2 8 3 5 7
2 4 3 8 5 7 1 9 8 9
多少近づいて来た感があります。
よろしくお願いします。
(Please) 2017/06/17(土) 21:40
set r〜 の位置をnext iの直前に移動してください これでコード上のバグは消えたと思います (稲葉) 2017/06/17(土) 22:02
Sub 統計抽出()
Call 数値コピー Call 昇順 Call 数値コピー2 End Sub
で無事完了致しました。
次の位、入力でずれてしまいます。
私なりに、セルの値を変えましたがダメでした。
↓変えたコードです。
Sub 集合()
Dim Tens As Long Dim Ones As Long Tens = Application.InputBox("「十の位」の数値を入力してください", Type:=1) Ones = Application.InputBox("「一の位」の数値を入力してください", Type:=1) Range("AT6:AT15").Offset(, Tens).Copy Range("AS6").PasteSpecial Paste:=xlPasteValues Range("AT19:AT28").Offset(, Ones).Copy Range("AS19").PasteSpecial Paste:=xlPasteValues MsgBox "完了" End Sub
よろしく、お願い致します。
(Please) 2017/06/17(土) 22:17
最後は頑張ってみてください おやすみなさい (稲葉) 2017/06/17(土) 23:07
こちらの無知でご迷惑をおかけいたしました。
最後、頑張ってみます。
本日は、失礼致します。
(Please) 2017/06/17(土) 23:37
Sub 集合テスト()
Range("A1").Offset(0, 0).Select Range("A1 ").Offset(0, 0).Copy Range("L1").PasteSpecial Paste:=xlPasteValues
Range("A2").Offset(0, 0).Select Range("A2 ").Offset(0, 0).Copy Range("L2").PasteSpecial Paste:=xlPasteValues
Range("A12:A21").Offset(0, 0).Select Range("A12:A21").Offset(0, 0).Copy Range("M1:M100").PasteSpecial Paste:=xlPasteValues ' xlPasteAll , Transpose:=True
Application.CutCopyMode = False
End Sub
私が4日程、使って考えても、これくらいが限界でした。
この(0,0)の値を変えれば上下左右に移動できることは理解できました。
今回は練習用のエクセルを使用しましたので、十の位が入るのがL列で
一の位が入るのがM列です。
&で合体させるたのがN列です。
十の列は上から2行までしかいれていません。
これを繰り返すようなことができることはわかっていますが……私には、わかりませんでした。
さらに、ユーザーフォームに対応させるのも無理でした。
以上、ご報告までです。
(Please) 2017/06/21(水) 21:29
(稲葉) 2017/06/17(土) 16:43の投稿で集合プロシージャが希望通りにならないことがわかりました。
修正するうえで、十の0がAI列で、十の一=九がAU〜BC列の理由がわからないのですが、説明してもらえますか?
http://www.asahi-net.or.jp/~ef2o-inue/vba_k/sub04_030.html
またデバッグまでは自分でお願いできますか。 (稲葉) 2017/06/22(木) 11:49
>修正するうえで、十の0がAI列で、十の一=九がAU〜BC列の理由がわからないのですが、説明してもらえますか?
すみません。ここはだいぶ省略していました。
最初から説明したいと思います。
AT5〜BC15=
十の位の(0〜9)までがソートされた状態であります。
AT19〜BC28=
一の位の(0〜9)までがソートされた状態であります。
BEには十の位が移動する。
BFには一の位が移動する。
BGは、BEとBFが&で結びついた値です。
BEに移動させる方法ですが「十の0」ならば、「十の0」ボタンを押すようにしています。
この時は、AT6〜AT15がコピーで移動します。
コピー方法なのですが、AT6をBE1にコピーし以下を$で固定して10行までコピー。
AT7をBE11にコピーし以下を$で固定して20行までコピー……以下同じ。
これで、十の桁を作りだしています。
一の桁も「一の0」として、AT19〜AT28をBF1〜BF10に、AT19〜AT28をBF11〜BF20
……以下同じ、で一の桁を作りだしています。
このコピー方法を「十の1」「一の2」等、それぞれのボタンに割り当てています。
わかりにくければ、すみません。
デバックは、上記のサイトを見ながら挑戦したいと思います。
よろしくお願い致します。
(Please) 2017/06/22(木) 13:45
だからPleaseさんが提示したコードがそうなっていないから伺っているのです。
>Sub 十の0集合() > Range("AI6:AI15").Select ~~~
(稲葉) 2017/06/22(木) 14:08
確認しました。
BEはAT6で固定しています。
ですので「十の0」が「0」以外の時、「十の一」「十の二」「十の三」……等はATにコピーされて、それがBE列に値が流れます。
そうなると「0」以外のときのAT6〜AT15は常にAU6〜15、AV6〜15、AW6〜15……で埋まっているために「0」だけは、AI6〜15をコピーすることにしました。
一の0集合()も同じ理由で、ATがAU〜BCで埋まっていた時に「0」が出ると、それをクリアにするために「0」のときだけAIから引いています。
すみません。先ほどの投稿が間違いでした。(自分で書いておきながら、だいぶん
混乱しています)
結果的には全てをATに集約させてからBEとBFに割り振ってるという形です。
ですので、ATで固定しています。
よろしくお願いします。
(Please) 2017/06/22(木) 14:41
であれば、(稲葉) 2017/06/17(土) 16:43で投稿した集合プロシージャの基準を AU列からAT列にすれば済む話では? (稲葉) 2017/06/22(木) 15:09
>2017/06/17(土) 22:17
でATに軸を変えたのですが。
少し、考えてみますので、夜までお時間を下さい。
(Please) 2017/06/22(木) 15:23
下が、2017/06/17(土) 16:43に稲葉様にいただいたコードです。
Sub 集合()
Dim Tens As Long Dim Ones As Long Tens = Application.InputBox("「十の位」の数値を入力してください", Type:=1) Ones = Application.InputBox("「一の位」の数値を入力してください", Type:=1) Range("AU6:AU15").Offset(, Tens).Copy Range("AT6").PasteSpecial Paste:=xlPasteValues Range("AU19:AU28").Offset(, Ones).Copy Range("AT19").PasteSpecial Paste:=xlPasteValues MsgBox "完了" End Sub
その後、私が、2017/06/17(土) 22:17
Sub 集合()
Dim Tens As Long Dim Ones As Long Tens = Application.InputBox("「十の位」の数値を入力してください", Type:=1) Ones = Application.InputBox("「一の位」の数値を入力してください", Type:=1) Range("AT6:AT15").Offset(, Tens).Copy Range("AS6").PasteSpecial Paste:=xlPasteValues Range("AT19:AT28").Offset(, Ones).Copy Range("AS19").PasteSpecial Paste:=xlPasteValues MsgBox "完了" End Sub
に変更してダメでした。
そして現在、
Sub 集合()
Dim Tens As Long Dim Ones As Long Tens = Application.InputBox("「十の位」の数値を入力してください", Type:=1) Ones = Application.InputBox("「一の位」の数値を入力してください", Type:=1) Range("AT6:AT15").Offset(, Tens).Copy Range("AT6").PasteSpecial Paste:=xlPasteValues Range("AT19:AT28").Offset(, Ones).Copy Range("AT19").PasteSpecial Paste:=xlPasteValues MsgBox "完了"
End Sub
Range("AS6").PasteSpecial Paste:=xlPasteValues
Range("AS19").PasteSpecial Paste:=xlPasteValues
を↓にすることで無事、成功しました。
Range("AT6").PasteSpecial Paste:=xlPasteValues
Range("AT19").PasteSpecial Paste:=xlPasteValues
>AU列からAT列にすれば済む話では?
をヒントに
頭の中で視覚的にコピーして貼り付ける図が思い浮かんだのできました。
これで無事、全てが解決しました。
また、少しずつ勉強していこうと思います。
こんな私のためにお時間をいただきありがとうございました。
(Please) 2017/06/22(木) 18:48
最初はだれでも初心者ですので、頑張って読み解けるようお互い頑張りましょう。 (稲葉) 2017/06/22(木) 19:03
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.