powered by simpleCommunicator - 2.0.58     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Добавить столбец
13 сообщений из 13, страница 1 из 1
Добавить столбец
    #37862381
plus_stick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте.
Есть таблицы в Excel'е.
Названия столбцов идут отдельной строкой, как например: ВА001, ВА002, ВА003 ... ВА038 и т.д.
Но бывает такие случаи, когда какого то номера не хватает, например идут ВА001 и сразу ВА004.
В разных таблицах по разному.
Нужно добавлять столбцы вместо каждого нехватающего номера.
Таблиц много, а как это можно сделать автоматически ума не приложу.
Прошу помощи. Заранее спасибо.
...
Рейтинг: 0 / 0
Добавить столбец
    #37862384
PlanB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
надо бы пример с данными глянуть..
...
Рейтинг: 0 / 0
Добавить столбец
    #37862400
plus_stick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PlanB,

Вот пример с данными.
Между столбцами нужно добавить пустые столбцы в соответствии с нумерацией.
...
Рейтинг: 0 / 0
Добавить столбец
    #37862616
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
Sub AddCols()
Dim col As Integer
col = 1
    Do
        If Val(Mid(Range(Cells(1, col), Cells(1, col)).Text, 3)) > col Then
            ActiveSheet.Columns(col).Select
            Selection.Insert Shift:=xlToRight
            Range(Cells(1, col), Cells(1, col)) = "BA" & Format(col, "000")
        Else
            col = col + 1
        End If
        
    Loop Until Trim(Range(Cells(1, col), Cells(1, col)).Text) = ""
Range("A1").Select
End Sub
...
Рейтинг: 0 / 0
Добавить столбец
    #37862657
plus_stick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Akina,

Офигеть, спасибо огромное !!!
...
Рейтинг: 0 / 0
Добавить столбец
    #37862978
plus_stick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Akina,

Если диапазон начинается скажем с 7-го столбца, то нужно корректировать range.
Пробовал по разному, плюсовал 6, но ничего не выходит.
Подскажите пожалуйста решение. Спасибо.
...
Рейтинг: 0 / 0
Добавить столбец
    #37865113
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Например, так:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
Sub AddCols()
' Считаем, что активна ячейка с первым названием столбца
Dim nRow As Long, nCol As Long, nCount As Long, cPref As String
nRow = ActiveCell.Row
nCol = ActiveCell.Column
nCount = Val(Mid(Cells(nRow, nCol), 3))
If nCount = 0 Then Exit Sub
cPref = Left(Cells(nRow, nCol).Value, 2)
    Do
        If Val(Mid(Cells(nRow, nCol), 3)) > nCount Then
            ActiveSheet.Columns(nCol).Insert Shift:=xlToRight
            Cells(nRow, nCol) = cPref & Format(nCount, "000")
        Else
            nCol = nCol + 1
        End If
        nCount = nCount + 1
    Loop Until Trim(Cells(nRow, nCol)) = ""
End Sub

При желании, можно, например, вместо использования ActiveCell - передать процедуре адрес ачейки с "начальным именем"
...
Рейтинг: 0 / 0
Добавить столбец
    #37865408
plus_stick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AndreTM,

Спасибо за ответ. Всё работает.
Вот только чтобы привести таблицу в нужный вид, код нужно выполнять несколько раз почему то.
...
Рейтинг: 0 / 0
Добавить столбец
    #37865936
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
plus_stickчтобы привести таблицу в нужный вид, код нужно выполнять несколько раз почему то.Дайте пример (достаточно строчки с именами столбцов)...
...
Рейтинг: 0 / 0
Добавить столбец
    #37866141
plus_stick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Исходный
...
Рейтинг: 0 / 0
Добавить столбец
    #37866143
plus_stick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
После первого выполнения
...
Рейтинг: 0 / 0
Добавить столбец
    #37866144
plus_stick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
После нескольких выполнений
...
Рейтинг: 0 / 0
Добавить столбец
    #37866612
Cursky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AndreTM,
Немного подправил ваш код:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
Sub AddCols()
' Считаем, что активна ячейка с первым названием столбца
Dim nRow As Long, nCol As Long, nCount As Long, cPref As String
nRow = ActiveCell.Row
nCol = ActiveCell.Column
nCount = Val(Mid(Cells(nRow, nCol), 3))
If nCount = 0 Then Exit Sub
cPref = Left(Cells(nRow, nCol).Value, 2)
    Do
        If Val(Mid(Cells(nRow, nCol), 3)) > nCount Then
            ActiveSheet.Columns(nCol).Insert Shift:=xlToRight
            Cells(nRow, nCol) = cPref & Format(nCount, "000")
'        Else
'            nCol = nCol + 1
        End If
        nCol = nCol + 1
        nCount = nCount + 1
    Loop Until Trim(Cells(nRow, nCol)) = ""
End Sub
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Добавить столбец
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]