-2

Я хотел бы изменить это:

Filer   ShareName       IPAddress1    IPpaddres2    IPAddress2    ... ... ....
ServerA /share1/tools   192.168.1.52  192.168.1.65  192.168.1.158
ServerA /share/library  192.168.1.65  192.168.1.61  192.168.1.155
ServerB /share/tools    192.168.1.158 192.168.1.159
ServerD /share/misc     192.168.1.7
..
...
.....
.......

Для этого в новом листе:

Filer   ShareName       IPAddress
ServerA /share1/tools   192.168.1.52
ServerA /share1/tools   192.168.1.65
ServerA /share1/tools   192.168.1.158
ServerA /share/library  192.168.1.65 
ServerA /share/library  192.168.1.61 
ServerA /share/library  192.168.1.155
ServerB ... ...
ServerD ... ...
..
...
.....
.......

2 ответа2

2
  1. Перейдите на вкладку разработчика и нажмите "запись макроса"
  2. Затем добавьте новый лист
  3. Прекратить запись
  4. посмотрите на код, сгенерированный нажатием "Visual Basic", он, вероятно, находится в "Модуле 1"

Повторите для следующей проблемы и используйте этот код в качестве основы для того, что вы пытаетесь построить.

Когда вы застряли, Google ваша проблема. Если это не решает проблему, опубликуйте код, который у вас есть, и укажите, что именно вы хотите, чтобы он делал, что вы думаете, и что вы считаете неправильным или не понимаете.

1

Код в VBA / Макро:

Public Sub distribute()
    Application.ScreenUpdating = False
    Dim wkb As Workbook
    Dim wks1 As Worksheet
    Dim wks2 As Worksheet
    Set wkb = ThisWorkbook
    Set wks1 = wkb.Worksheets("Sheet1")
    Set wks2 = wkb.Worksheets("Sheet2")
    wks2.Rows.Clear
    therow = 1
    othersheetrow = 1
    morerows = True
    While morerows
        morecolumns = True
        thecolumn = 3
        abscolumn = thecolumn
        While morecolumns
            a = wks1.Cells(therow, thecolumn)
            If (a = "") And (thecolumn = abscolumn) Then
                morerows = False
                morecolumns = False
            ElseIf (a = "") And (thecolumn > abscolumn) Then
                morecolumns = False
                therow = therow + 1
            Else
                If (therow = 1) Then
                    For i = 1 To abscolumn
                        wks2.Cells(therow, i) = wks1.Cells(therow, i)
                    Next i
                    therow = therow + 1
                    thecolumn = thecolumn - 1
                Else
                    othersheetrow = othersheetrow + 1
                    For i = 1 To abscolumn - 1
                        wks2.Cells(othersheetrow, i) = wks1.Cells(therow, i)
                    Next i
                    wks2.Cells(othersheetrow, i) = wks1.Cells(therow, thecolumn)
                End If
            End If
            thecolumn = thecolumn + 1
        Wend
    Wend
    Application.ScreenUpdating = True
    themessage = MsgBox("Finished", vbInformation)
End Sub

Откройте VBA / Macro con ALT+ F11, затем вставьте новый модуль в ThisWorkbook и вставьте код с правой стороны.

Существует переменная с именем thecolumn которая инициализирована на 3, что означает, что это первый столбец, который необходимо рассмотреть перед созданием новой записи (строки) на Sheet2.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .