Есть ли в Excel способ добавить строки или переместить строку с помощью формулы, VB или C # - PullRequest
0 голосов
/ 19 июня 2019

У меня есть таблица Excel с упорядоченным текстовым столбцом и столбцом MoveToRow. Таблица в правильном порядке, но мне нужно разнести строки, добавив пустые строки между значениями, используя столбец MoveToRow.

Ex:

1. cat 2
2. dog 3
3. Rat  5

Есть ли способ в Excel использовать формулу или код vb или c # для перемещения или копирования поля животных в нужную строку, указанную во втором столбце?

Результаты:

1.    
2.cat    
3.dog    
4.
5.rat

или я могу изменить столбец MoveToRow на столбец InsertThisManyRowsAfter, если это возможно.

я бы подумал, что-то вроде этого кода циклы по целочисленному столбцу, который содержит количество строк для вставки ниже текущей, и если значение равно 0, пропустите его, но если значение> = 1, он вставляет это количество строк , Но это не работает должным образом, добавляя слишком много строк и все в одном диапазоне. Где здесь неправильная логика?

Sub Test1()
  Dim x As Integer
  Dim y As Integer
  Dim z As Integer
  ' Set numrows = number of rows of data.
  ' NumRows = Range("A2", Range("A2").End(xldown)).Rows.Count
  NumRows = 100
  ' Select cell a1.
  Range("I1").Select
  ' Establish "For" loop to loop "numrows" number of times.
  For x = 1 To NumRows
     ' Insert your code here.
     ' Selects cell down 1 row from active cell.
     y = ActiveCell.Row
     z = ActiveCell.Value
     If z >= 1 Then
        Rows(y & ":" & y + z).Insert Shift:=xlShiftDown
        ActiveCell.Offset(1, 0).Select
     Else
        ActiveCell.Offset(1, 0).Select
     End If
  Next

End Sub

1 Ответ

0 голосов
/ 25 июня 2019

Это прекрасно работает для меня, учитывая приведенный вами пример.

Public Sub ReverseLoop()

Dim sht As Worksheet
Dim LastRow As Long
Dim r As String
Dim x As Long
Dim NumList As Variant  'Array
Dim RegExpObj As Object
Dim NumStr As Integer

Set sht = ActiveSheet

'Ctrl + Shift + End
LastRow = sht.Cells(sht.Rows.Count, "A").End(xlUp).Row

'Loop Through 0-100 in Reverse Order
For x = LastRow To 1 Step -1

    strIn = Range("A" & x).Value

        Set RegExpObj = CreateObject("vbscript.regexp")
        With RegExpObj
            .Global = True
            .Pattern = "[^\d]+"
            NumStr = .Replace(strIn, " ")
        End With

    Cells(x, 1).EntireRow.Select
    Selection.Cut
    Cells(NumStr, 1).Select
    ActiveSheet.Paste

Next x

End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...