2016-11-19 1 views
-2

Я получил 3000 строк данных в Excel. Каждая строка содержит один и тот же тип информации, но не в правильном порядке. Что мне нужно сделать, это собрать тот же тип информации в соответствии с тем же column.I хотел бы создать макрос, который собирается:VBA Excel - поиск строк для строки и, если найден, копировать всю ячейку в определенное место.

  • Выберите строку для частичной строки (некоторые значения имеют схожие строки, но подпадают под разные категории)

  • Если строка является частью ячейки скопировать всю ячейку в новом месте

  • Повторить для следующей строки

Заранее спасибо

+1

Пожалуйста, введите код своей заявки и попросите помочь устранить ее. – bzimor

ответ

2
Sub MoveColumns() 
Dim LastRow As Long 
Dim rFind As Range 
Dim r As String 
Dim m As Integer 
LastRow = ActiveSheet.UsedRange.Rows(ActiveSheet.UsedRange.Rows.Count).Row 
MsgBox (LastRow) 
For n = 1 To LastRow 
    r = n & ":" & n 
    Range(r).Select 
    With Range(r) 
     Set rFind = .Find(What:="Spain*", LookAt:=xlWhole, MatchCase:=False, SearchFormat:=False) 
     If Not rFind Is Nothing Then 
      If rFind.Column < 6 Then 
       m = 6 - rFind.Column 
       Range(Cells(n, 1), Cells(n, m)).Insert Shift:=xlToRight 
      ElseIf rFind.Column > 6 Then 
       m = rFind.Column - 6 
       Range(Cells(n, 1), Cells(n, m)).Delete Shift:=xlToLeft 
      End If 
     End If 
    End With 
Next 
End Sub 

ОБНОВЛЕНО Если строка не содержит каких-либо значение начинается с «Испания», эта строка просто игнорируется и пропускается. Надеюсь, вы можете изменить и настроить способ, подходящий для ваших данных.

+0

Что делать, если я получил информацию, такую ​​как «Испания_1: 10» и «Испания_2: 20», где Spain_1 и Spain_2 принадлежат к разным колонкам? –

+0

Вы должны найти значение ключевого столбца, которое существует в каждой строке (в моем примере «Испания»). Это значение ключа может отличаться от других значений с помощью суффикса или префикса, поэтому вам необходимо изменить код. Например, если «Испания1» и «Испания2» являются ключевыми значениями, это может быть «.Find (What: =« Spain * »' – bzimor

+0

Хорошо, но сценарий не оставляет пустым ячейки строк, в которых ни Spain_1 или Spain_2, вместо этого он воспроизводит последнее действительное значение до тех пор, пока не найдет новое. –