2017-02-20 4 views
0

У меня есть проблемы в этом форматеВставьте всю строку, используя особое значение ячейки с помощью VBA

from hrs to hrs quantum rate 
12:00:00 6:00:00 100  1.8 
12:00:00 5:00:00 125  1.6 

Я хочу, чтобы эти данные в заданном формате, как

from hrs to hrs  quantum rate 
12:00:00 6:00:00  -50  1800.00 
12:00:00 6:00:00  -50  1800.00 
12:00:00 5:00:00  -50  1600.00 
12:00:00 5:00:00  -50  1600.00 
12:00:00 5:00:00  -25  1600.00 

и я использую следующий код:

Option Explicit 

Sub main() 
    Dim data As Variant 
    Dim iData As Long, datum As Long, iRow As Long 
With Range("A1", Cells(Rows.Count, 1).End(xlUp)) 
    data = .Resize(, 4).Value 
    iData = LBound(data) 
    Do 
     datum = data(iData, UBound(data, 2) - 1) 
     Do While datum > 0 
      iRow = iRow + 1 
      .Cells(iRow).Resize(, 4) = Application.Index(data, iData, 0) 
      .Cells(iRow, UBound(data, 2) - 1).Value = WorksheetFunction.Min(50, datum) 
      datum = datum - 50 
     Loop 
     iData = iData + 1 
    Loop While iData <= UBound(data) 
    .Resize(1).Copy 
    .Resize(iRow).PasteSpecial xlPasteFormats 
    Application.CutCopyMode = False 
End With 
End Sub 
+0

@ пользователь3598756 recoginze этот код? –

+0

@ShaiRado, да, я :-) – user3598756

+0

Вы не задали конкретный вопрос. – Squashman

ответ

1

здесь:

Option Explicit 

Sub main() 
    Dim data As Variant 
    Dim iData As Long, datum As Long, iRow As Long 
    With Range("A1", Cells(Rows.Count, 1).End(xlUp)) 
     data = .Resize(, 4).Value 
     iData = LBound(data) 
     Do 
      datum = data(iData, UBound(data, 2) - 1) 
      Do While datum > 0 
       iRow = iRow + 1 
       .Cells(iRow).Resize(, 4) = Application.Index(data, iData, 0) 
       .Cells(iRow).Offset(, 3).Value = .Cells(iRow).Offset(, 3).Value * 1000 
       .Cells(iRow, UBound(data, 2) - 1).Value = -WorksheetFunction.Min(50, datum) 
       datum = datum - 50 
      Loop 
      iData = iData + 1 
     Loop While iData <= UBound(data) 
     .Resize(1, 4).Copy 
     .Resize(iRow, 4).PasteSpecial xlPasteFormats 
     Application.CutCopyMode = False 
    End With 
End Sub 
+0

@satyendrasharma, после проверки этого кода взгляните на [ЗДЕСЬ] (http://stackoverflow.com/help/someone-answers) – user3598756

+0

sir, когда я запускаю макрос, он показывает ошибку несоответствия типа, поскольку я использую заголовок столбца PLS help –

+0

Не получите вас точно, но вы можете попытаться изменить «Range (« A1 », Cells (... 'to' Range (« A2 », Cells (...». Сообщите мне – user3598756

Смежные вопросы