#excel #vba
Вопрос:
Это снова я! На этот раз я пытаюсь сформировать код, который поможет мне упорядочить столбцы на моем листе 1. В основном то, что я хочу, происходит примерно так
- Найдите КАЖДОЕ имя заголовка из списка на листе «Имена столбцов» .
- Выполните поиск имени заголовка по всем столбцам «Листа 1».
- Если имя заголовка найдено, вырежьте весь столбец с этим именем заголовка и перенесите/вставьте в столбец A
- Перейдите к следующему имени заголовка в списке, затем повторите
например:
- Найдите «Столбец 1» (как указано в списке имен столбцов).
- Найдите имя «Столбец 1» в «Листе 1».
- Если имя «Столбец 1» найдено в «Листе 1», то вырежьте и перенесите весь столбец в столбец А
- Перейдите к следующему имени столбца, указанному в списке имен. В этом случае «Столбец 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. Помогите пожалуйста 🙂