プロが教えるわが家の防犯対策術!

社員旅行の写真の申込みを振分けるのに、Excelで注文番号を整理しています。注文番号を昇順に並び替えたいと思いますが、下記Aさんの様に1行の並び替えは出来たのですが、Bさんの様に2行以上の並び替えで、
1行目左端→1行目右端→2行目左端…→最終行右端(枚数によっては右端までいかない)というようにするにはどの様にしたらよいのでしょうか?

Aさん  12 15 21 18 30

Bさん  14 27  7 31 16
      6  35 19 41  2

A 回答 (3件)

かなり限定的な機能のヤツですが、マクロを作成してみました。


数値の入っているセルを矩形で選択して実行
Public Sub sort() 'ソートモドキ
Dim x As Range, i, wk
Dim NumList, max
Set NumList = CreateObject("Scripting.Dictionary")
max = 0 '0以下の数字はない
For Each x In Selection
If Not NumList.Exists(x.Value) Then '重複チェック
NumList.Add x.Value, x.Value
If max < x.Value Then max = x.Value '空白は0扱い
End If
Next
i = 1
Selection.ClearContents
For Each x In Selection
Do Until NumList.Exists(i)
i = i + 1
If i > max Then Exit Sub
Loop
x.Value = NumList.Item(i)
i = i + 1
Next
End Sub
    • good
    • 0
この回答へのお礼

うまくいきました!
朝早くにご返事頂いたようですね。
有難うございました(m_m)

お礼日時:2004/12/09 13:58

回答ではないですが。


この場合、写真番号を書いてその横にチェックを入れるような表にすれば、書く写真の枚数も自動で計算できるし良いと思いますよ
    • good
    • 0
この回答へのお礼

この方法も考えましたが、なんせ番号が800番まであるので……(^^;ゞ
有難うございました。

お礼日時:2004/12/09 14:02

この問題はエクセルでは、意外に手強いですね。


それでVBAになってしまいました。ご参考に
Z列を作業列として使っています。したがって25写真以内の仮定が入ります。写真が25枚以上なら、作業列を枚数以上の更に右列に移してください。その場合下記コードの中のZを全て変える必要あり。
Sub test01()
Dim cl As Range
s = 2 '最初データ行
d1 = Range("A65536").End(xlUp).Row 'A列最下行
d2 = Range("B65536").End(xlUp).Row 'B列最下行
d = Application.WorksheetFunction.Max(d1, d2) '最下データ
endsgn = "N"
'------
For i = s + 1 To d
If Cells(i, "A") <> "" Then '人が途切れたら
shori:
j = 1
For Each cl In Cells(s, "B").CurrentRegion '申し込み明細につき
If cl.Column <> 1 And cl <> "" Then 'A列や空白行以外を
'----Z列に貯め込み
Cells(j, "Z") = cl
j = j + 1
End If
Next
'---Z列ソート
Range(Cells(1, "Z"), Cells(j - 1, "Z")).Sort _
Key1:=Range("Z1"), Order1:=xlAscending
'----元のセルに戻し
j = 1
For Each cl In Cells(s, "B").CurrentRegion '申し込み明細につき
If cl.Column <> 1 And cl <> "" Then 'A列や空白行以外を
'----Z列に貯め込み
cl = Cells(j, "Z")
j = j + 1
End If
Next
'---Z列クリア
Range(Cells(1, "Z"), Cells(j - 1, "Z")).ClearContents
'-----
s = i '次のブロックの始まり
End If
If endsgn = "Y" Then End
Next i
'----最後のブロックの処理-----------------------
s = d2
endsgn = "Y"
GoTo shori
End Sub

(テストデータ)A2:F7でソート後
大川2891217

島田35516
182334

木村516
    • good
    • 0
この回答へのお礼

すごい!(@_@;)
簡単に出来そうで、出来ないんですね。
もっとマクロを勉強します。
参考になりました。
有難うございました(m_m)

お礼日時:2004/12/09 14:07

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