|
▼こうちゃん さん:
字下げ注意します。
ところでまだ問題があります。解決法をご教示いただけないでしょうか?
1.あるシートに書きこまれるべきレコードが書きこまれていない。
2.あるシートにレコードが重複して書きこまれている。
3.あるシートにおいて、書きこまれたレコードと次のレコードの間に空白行がある。
4.あるシートにおいて、シート名とCells(8, 5)に書きこまれた名が異なっている。
Sub test()
Dim i As Long
Dim A As Integer
Dim d As String
Dim ws1 As Worksheet
Dim ws2 As Worksheet
Dim wsFlg As Boolean
Set ws1 = Worksheets("一覧")
For i = 2 To ws1.Range("A65535").End(xlUp).Row
d = ws1.Cells(i, 10).Value
wsFlg = False
For Each ws2 In Worksheets
If ws2.Name = d Then
wsFlg = True
Exit For
End If
Next
If Not wsFlg Then
Worksheets("a").Copy after:=Worksheets(Worksheets.Count)
Worksheets(Worksheets.Count).Name = d
A = 13
Else
A = Worksheets(d).Range("A65536").End(xlUp).Row + 1
End If
ActiveSheet.Cells(8, 2).Value = ws1.Cells(i, 9).Value
ActiveSheet.Cells(8, 5).Value = ws1.Cells(i, 10).Value
ActiveSheet.Cells(A, 1).Value = ws1.Cells(i, 4).Value
ActiveSheet.Cells(A, 2).Value = ws1.Cells(i, 5).Value
ActiveSheet.Cells(A, 3).Value = ws1.Cells(i, 6).Value
ActiveSheet.Cells(A, 4).Value = ws1.Cells(i, 7).Value
ActiveSheet.Cells(A, 5).Value = ws1.Cells(i, 11).Value
ActiveSheet.Cells(A, 11).Value = ws1.Cells(i, 12).Value
ActiveSheet.Cells(A, 12).Value = ws1.Cells(i, 13).Value
A = A + 1
Next
End Sub
なお「一覧」のレイアウトはこうです。(左部分のみ)
+---+---+---+---+---+---+---+---+---+---+-----+
| | A| B| C| D| E| F| G | H | I| J |
+---+---+---+---+---+---+---+---+---+---+-----+
|1 | 店|課 |担 |CD | 客 |CD2|客2|得 | 卸|営 |
+---+---+---+---+---+---+---+---+---+---+-----+
|2 | xx|xx |xx | 01|xx |31 | xx| xx| K | 川崎|
+---+---+---+---+---+---+---+---+---+---+-----+
|3 | xx|xx |xx | 01|xx |32 | xx| xx| F | 宮前|
+---+---+---+---+---+---+---+---+---+---+-----+
|4 | xx|xx |xx | 02|xx |33 | xx| xx| F | 宮前|
+---+---+---+---+---+---+---+---+---+---+-----+
|5 | xx|xx |xx | 03|xx |34 | xx| xx| K | 中原|
+---+---+---+---+---+---+---+---+---+---+-----+
2行目と5行目のレコードは別シートに、
3行目と4行目のレコードは同一シートにしなければなりません。
卸が異なるのに営が同じケースはありません。
なおxxはCHARです。
|
|