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

EXCELで星取表を作り勝ち点の計算を自動化させたいと思っています。
今一番難しそうなのは、順位が変わった時に星取表がずれてしまいます。
具体的には
 A B C D
A * O O -
B X * O X
C X X * O
D - O X *
これでもしCが2位になった場合に単純にデータの並び替えを行うと
 A B C D
A * O O -
C X X * O
B X * O X
D - O X *
とおかしな星取表(自分同士の対戦*を斜めに一直線にしたい)になってしまいます。
これを補正するにはどのような方法があるでしょうか?
伝わったか不安ですが、アドバイスお願い致します。

A 回答 (3件)

>縦方向にも勝ち点の欄を置くということですか?


そういうことになります。
邪魔なら、行を非表示にしておいてもいいし、並べ替えをする時だけ、縦の勝ち点の列を行列入れ替えて、コピペしてもいいでしょう(コピペは、行方向の並べ替えをする前にして下さい)。
    • good
    • 0
この回答へのお礼

ありがとうございます。
無事出来たようです。
列の並び替え初めてやりました。

お礼日時:2003/09/25 09:10

ソートだけで出来るものかどうか。


関数式では無理でしょう。
興味が出てVBAでやって見ました。(少数例でテスト済み)
既にある表(A1:G7)の下(A11:G17)のA列(A11:A17)に新順序のチーム(か選手)名を入力する。そして下記を実行する。
A1:G7の勝負を組替えました。
Dim d
Sub test01()
Dim cl As Range
s = 10 '新しい表を作る開始行は11行から
d = Range("a1").CurrentRegion.Rows.Count
' MsgBox d
'----新縦チーム名順序を横にセット
For i = s + 2 To s + 2 + d - 2
Cells(1 + s, i - s) = Cells(i, 1)
Next i
'-----自分自身と交差するセルに*
For Each cl In Range(Cells(s + 2, 2), Cells(s + 2 + d - 2, 2 + d - 2))
' MsgBox Cells(cl.Row, 1) & "=" & Cells(1 + s, cl.Column)
If Cells(cl.Row, 1) = Cells(1 + s, cl.Column) Then
cl = "*"
End If
Next
'------元の表の勝敗を取ってくる
For Each cl In Range(Cells(s + 2, 2), Cells(s + 2 + d - 2, 2 + d - 2))
If cl = "*" Then GoTo p01
r = Cells(cl.Row, 1): c = Cells(1 + s, cl.Column)
cl = shoubu(r, c)
p01:
Next
End Sub
'---勝負を元の表(上部A2:G7から)取ってくる関数
Function shoubu(r, c)
For i = 2 To d
If Cells(i, 1) = r Then
For j = 2 To 2 + d - 2
If Cells(1, j) = c Then
shoubu = Cells(i, j)
End If
Next j
End If
Next i
End Function
    • good
    • 0

こんにちは。

maruru01です。

行方向(上下)に並べ替えて、さらに列方向(左右)に並べ替えればいいと思います。

この回答への補足

並び替えは勝ち点を優先してますが、縦方向にも勝ち点の欄を置くということですか?

補足日時:2003/09/24 15:54
    • good
    • 0

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