Найдите имя заголовка в списке и выполните поиск по каждому имени заголовка на листе 1, как только оно будет найдено, вырежьте весь столбец и перейдите к столбцу А

#excel #vba

Вопрос:

Это снова я! На этот раз я пытаюсь сформировать код, который поможет мне упорядочить столбцы на моем листе 1. В основном то, что я хочу, происходит примерно так

  1. Найдите КАЖДОЕ имя заголовка из списка на листе «Имена столбцов» .
  2. Выполните поиск имени заголовка по всем столбцам «Листа 1».
  3. Если имя заголовка найдено, вырежьте весь столбец с этим именем заголовка и перенесите/вставьте в столбец A
  4. Перейдите к следующему имени заголовка в списке, затем повторите

например:

  1. Найдите «Столбец 1» (как указано в списке имен столбцов). Имя
  2. Найдите имя «Столбец 1» в «Листе 1». Поиск
  3. Если имя «Столбец 1» найдено в «Листе 1», то вырежьте и перенесите весь столбец в столбец А Перемещение
  4. Перейдите к следующему имени столбца, указанному в списке имен. В этом случае «Столбец 2», пока не будут использованы все имена. Петля

I have the code below.. yes it isn’t working yet =(… any help is appreciated!

Example 2:
So it isn’t working because for some reason whenever I change the names list to let’s say «Dates», «Description», etc. as well as the column names to the those, it does not work =(

Also, I can’t seem to find a way to select the names list if I place it in another sheet. Although for this one it’s not much of an issue I just need it to work first =(

После
Тест

 Option Explicit
Sub ArrangeColumns()

    Dim LastColumn As Long, LastRow As Long
    Dim Position As Range
    Dim HeaderName As Range, i As Long

    With ThisWorkbook.Worksheets("Sheet1")
        For Each HeaderName In Range("A2", Range("A" amp; Rows.Count).End(xlUp))
        i = HeaderName.Row
            LastColumn = .Cells(1, .Columns.Count).End(xlToLeft).Column 'Find the last column of row 1

            Set Position = .Range(.Cells(1, 1), .Cells(1, LastColumn)).Find(i) 'Search from column 1 to last column of row 1 for the header

            If Position Is Nothing Then '<- If header does not exist throw a message box
                 MsgBox "Header was not found."
            Else 'If header does exist
                LastRow = .Cells(.Rows.Count, Position.Column).End(xlUp).Row 'Find the last row of the column that header found

                .Range(.Cells(1, Position.Column), .Cells(LastRow, Position.Column)).Cut 'Cut the column that found from row  to last row
                .Columns("A:A").Insert Shift:=xlToRight '<- Move it to column A

            End If
        Next

    End With

End Sub
 

Комментарии:

1. Что еще не работает ? Можете ли вы обновить свой вопрос, чтобы включить пример желаемого результата по сравнению с в настоящее время?

2. Я собирался ответить, но у меня возникло внезапное желание пойти приготовить бургер с сыром.

3. Привет! Я пытался обновить его! Хахахахаха Я надеюсь, что объяснил это правильно, но да, честно говоря, я совсем растерялся, почему это работает не так, как я хочу, чтобы это было хахахахаха Я думаю, я такой плохой программист XD

4. Привет, Майкл! Может быть, вам поможет чизбургер с большим картофелем фри? Hahahahahaha!

5. Помогите пожалуйста 🙂