No.2です。
>昨日の質問の回答に続いてまた・・・
とありますので・・・
実は前回のコードの場合、A列が文字列であれば問題なかったのですが、表示形式だけがユーザー定定義の "0000"
となっているとちゃんと動作しなかったと思います。
訂正のコードを投稿しようとしたのですが、すでに回答受付を打ち切られていらっしゃったので
今回の質問とは全く関係なくて申し訳ありませんが、この場を借りて昨日のコードの訂正版を投稿させてもらおうと思います。
Sub test()
Dim i, j As Long
Dim str As String
Dim c As Range
For i = 1 To Cells(Rows.Count, 1).End(xlUp).Row
For j = 1 To 4
If j <= Len(Cells(i, 1)) Then
Cells(i, j + 1) = Mid(Cells(i, 1), j, 1)
Else
Cells(i, j + 1) = 0
End If
Next j
Set c = Range(Cells(i, 2), Cells(i, 5))
str = WorksheetFunction.Min(c) & _
WorksheetFunction.Small(c, 2) & _
WorksheetFunction.Small(c, 3) & _
WorksheetFunction.Max(c)
With Cells(i, 2)
.Value = str
.NumberFormatLocal = "0000"
End With
Next i
Columns("C:E").Delete
End Sub
これでA列の桁数表示が4桁で実際の桁数が何桁でも対応できると思います。m(_ _)m
こんにちは!
VBAでの一例です。
Alt+F11キー → 画面左側にある「This Workbook」をダブルクリック → VBE画面が出ますので
↓のコードをコピー&ペーストしてマクロを実行してみてください。
(Alt+F8キー → マクロ → マクロ実行です)
Sub test() 'この行から
Dim i, j, k As Long
Dim ws1, ws2 As Worksheet
Set ws1 = Worksheets("抽選結果シート")
Set ws2 = Worksheets("sheet2") '←「sheet2」の部分は実際のSheet名に!
For k = 1 To 7
ws2.Cells(1, k) = ws1.Cells(1, k)
Next k
j = ws2.Cells(Rows.Count, 1).End(xlUp).Row
If j > 1 Then
Range(ws2.Cells(2, 1), ws2.Cells(j, 7)).Delete
End If
j = InputBox("間隔数を入力してください。")
For i = ws1.Cells(Rows.Count, 1).End(xlUp).Row To 2 Step -j
For k = 1 To 7
ws2.Cells(Rows.Count, k).End(xlUp).Offset(1) = ws1.Cells(i, k)
Next k
Next i
j = ws2.Cells(Rows.Count, 1).End(xlUp).Row
Range(ws2.Cells(2, 1), ws2.Cells(j, 7)).Sort key1:=ws2.Cells(2, 1), order1:=xlAscending
ws2.Columns("A:G").AutoFit
End Sub 'この行まで
こんなんではどうでしょうか?m(_ _)m
お礼
画像付きの回答を頂きありがとうございます。 早速、試してみます。