私は列F、G、H、およびIでデータを受け取りました。すべてを列Eに入れ、複製と空白セルを取り出す必要があります。私はこれまでのコードは動作しますが、それらはすべて同じ行に配置され、適切な行にそれらを保持しません。私は彼らが現在いる同じ行にとどまるが、もう一方の列に転記する必要がある。これはこれまで私が持っているものです:vbaでデータを移動
Sub Sample()
Dim ws As Worksheet
Dim LastRow As Long, lastCol As Long, i As Long
Dim Rng As Range, aCell As Range, delRange As Range '<~~ Added This
Dim MyCol As New Collection
~~> Change this to the relevant sheet name
Set ws = Sheets("Sheet1")
With ws
'~~> Get all the blank cells
Set delRange = .Cells.SpecialCells(xlCellTypeBlanks) '<~~ Added This
'~~> Delete the blank cells
If Not delRange Is Nothing Then delRange.Delete '<~~ Added This
LastRow = .Cells.Find(What:="*", After:=.Range("A1"), _
Lookat:=xlPart, LookIn:=xlFormulas, SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious, MatchCase:=False).Row
lastCol = .Cells.Find(What:="*", After:=.Range("A1"), _
Lookat:=xlPart, LookIn:=xlFormulas, SearchOrder:=xlByColumns, _
SearchDirection:=xlPrevious, MatchCase:=False).Column
Set Rng = .Range("A1:" & Split(.Cells(, lastCol).Address, "$")(1) & LastRow)
'Debug.Print Rng.Address
For Each aCell In Rng
If Not Len(Trim(aCell.Value)) = 0 Then
On Error Resume Next
MyCol.Add aCell.Value, """" & aCell.Value & """"
On Error GoTo 0
End If
Next
.Cells.ClearContents
For i = 1 To MyCol.Count
.Range("A" & i).Value = MyCol.Item(i)
Next i
'~~> OPTIONAL (In Case you want to sort the data)
.Columns(1).Sort Key1:=.Range("A1"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
End With
End Sub
はこのhttps://stackoverflow.com/questions/28958879/macro-to-merge-and-concatenate-cells-in-excel-for-rows-in-which-に答えを見てみましょう(セルループの代わりに)行をループする方法の一般的なアイデアを得るために、情報オンにすることができます。これにより、セルが同じ行の1つのセルに正しくマージされます。 –
あなたの問題がわからない。あなたのコードはすべてを1つの列に入れ、それぞれを別々の行に置きます。そして、正確に何が。あなたは "同じ行"を意味しますか? –
最初は同じ行です。うまくいけば、これらの写真が役に立ちます。最初のものは前のもので、2番目のものは後のものです。 http://tinypic.com/r/dqtc5/9 http://tinypic.com/r/zmfvy0/9。 – cboykin