Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Автоматически вставить новый столбец. - Мир MS Excel

  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_, DrMini  
Автоматически вставить новый столбец.
Новичёк Дата: Четверг, 30.07.2015, 16:22 | Сообщение № 1
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 121
Репутация: 2 ±
Замечаний: 0% ±

Всем "Здравствуйте".
Подскажите, возможно ли в экселе сделать, что бы в таблицу автоматически вставлялся новый столбец после прошествия определённой даты?
Заранее спасибо.
 
Ответить
СообщениеВсем "Здравствуйте".
Подскажите, возможно ли в экселе сделать, что бы в таблицу автоматически вставлялся новый столбец после прошествия определённой даты?
Заранее спасибо.

Автор - Новичёк
Дата добавления - 30.07.2015 в 16:22
KSV Дата: Четверг, 30.07.2015, 16:54 | Сообщение № 2
Группа: Друзья
Ранг: Ветеран
Сообщений: 770
Репутация: 255 ±
Замечаний: 0% ±

Excel 2013
Добрый день!
Например так:[vba]
Код
Private Sub Workbook_Open()
     If Date >= #8/1/2015# Then Лист1.Columns(3).Insert: Cells(1, 3) = Date
End Sub
[/vba]
Послезавтра (01.08.2015) или позже, при открытии книги между столбцами В и С будет вставлен новый столбец.
К сообщению приложен файл: AddColumn.xls (33.5 Kb)


KSV.VBA@gmail.com
Яндекс.Деньги: 410011921213333
 
Ответить
СообщениеДобрый день!
Например так:[vba]
Код
Private Sub Workbook_Open()
     If Date >= #8/1/2015# Then Лист1.Columns(3).Insert: Cells(1, 3) = Date
End Sub
[/vba]
Послезавтра (01.08.2015) или позже, при открытии книги между столбцами В и С будет вставлен новый столбец.

Автор - KSV
Дата добавления - 30.07.2015 в 16:54
Новичёк Дата: Четверг, 30.07.2015, 18:48 | Сообщение № 3
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 121
Репутация: 2 ±
Замечаний: 0% ±

KSV, спасибо.
 
Ответить
СообщениеKSV, спасибо.

Автор - Новичёк
Дата добавления - 30.07.2015 в 18:48
Новичёк Дата: Вторник, 11.08.2015, 18:22 | Сообщение № 4
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 121
Репутация: 2 ±
Замечаний: 0% ±

Всем ещё раз "здравствуйте". Возникла проблема со скриптом. Он каждый раз вставляет новый столбец после сохранения и открытия по-новой документа. А есть возможность это как-то исправить? Чтобы только один раз добавлялся после определённой даты? Спасибо.
P.S. Файл выше в теме.
 
Ответить
СообщениеВсем ещё раз "здравствуйте". Возникла проблема со скриптом. Он каждый раз вставляет новый столбец после сохранения и открытия по-новой документа. А есть возможность это как-то исправить? Чтобы только один раз добавлялся после определённой даты? Спасибо.
P.S. Файл выше в теме.

Автор - Новичёк
Дата добавления - 11.08.2015 в 18:22
Udik Дата: Вторник, 11.08.2015, 18:40 | Сообщение № 5
Группа: Друзья
Ранг: Старожил
Сообщений: 1588
Репутация: 192 ±
Замечаний: 0% ±

Excel 2016 х 64
Условие изменить, типа чтобы разность дат была 1, хотя если в нужный день не откроют, то пролёт. Тогда самое простое - завести служебную ячейку и добавить доп. условие к if.


вот вам барабан
яд 41001231307558 wm R419131876897
udik1968@gmail.com


Сообщение отредактировал Udik - Вторник, 11.08.2015, 18:46
 
Ответить
СообщениеУсловие изменить, типа чтобы разность дат была 1, хотя если в нужный день не откроют, то пролёт. Тогда самое простое - завести служебную ячейку и добавить доп. условие к if.

Автор - Udik
Дата добавления - 11.08.2015 в 18:40
Новичёк Дата: Вторник, 11.08.2015, 19:00 | Сообщение № 6
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 121
Репутация: 2 ±
Замечаний: 0% ±

Udik, извините, не силён в VBA. А можно какой-нибудь хотя-бы примитивный пример?
 
Ответить
СообщениеUdik, извините, не силён в VBA. А можно какой-нибудь хотя-бы примитивный пример?

Автор - Новичёк
Дата добавления - 11.08.2015 в 19:00
Manyasha Дата: Вторник, 11.08.2015, 19:08 | Сообщение № 7
Группа: Модераторы
Ранг: Старожил
Сообщений: 2198
Репутация: 902 ±
Замечаний: 0% ±

Excel 2010, 2016
Новичёк, я правильно понимаю, что на каждый день Вам нужен новый столбец? Если да, то так можно
[vba]
Код
Private Sub Workbook_Open()
     Dim existDate: existDate = Application.WorksheetFunction.CountIf(Rows(1), Date)
'    If Date >= #8/1/2015# Then Лист1.Columns(3).Insert: Cells(1, 3) = Date
     If existDate = 0 Then Лист1.Columns(3).Insert: Cells(1, 3) = Date
End Sub
[/vba]


ЯД: 410013299366744 WM: R193491431804
 
Ответить
СообщениеНовичёк, я правильно понимаю, что на каждый день Вам нужен новый столбец? Если да, то так можно
[vba]
Код
Private Sub Workbook_Open()
     Dim existDate: existDate = Application.WorksheetFunction.CountIf(Rows(1), Date)
'    If Date >= #8/1/2015# Then Лист1.Columns(3).Insert: Cells(1, 3) = Date
     If existDate = 0 Then Лист1.Columns(3).Insert: Cells(1, 3) = Date
End Sub
[/vba]

Автор - Manyasha
Дата добавления - 11.08.2015 в 19:08
KSV Дата: Вторник, 11.08.2015, 20:02 | Сообщение № 8
Группа: Друзья
Ранг: Ветеран
Сообщений: 770
Репутация: 255 ±
Замечаний: 0% ±

Excel 2013
или чуть корректнее (вдруг, при открытии книги, активным листом будет не Лист1): [vba]
Код
Private Sub Workbook_Open()
      If WorksheetFunction.CountIf(Лист1.UsedRange.Rows(1), Date) Then Exit Sub
      Лист1.Columns(3).Insert: Лист1.Cells(1, 3) = Date
End Sub
[/vba]


KSV.VBA@gmail.com
Яндекс.Деньги: 410011921213333


Сообщение отредактировал KSV - Вторник, 11.08.2015, 20:08
 
Ответить
Сообщениеили чуть корректнее (вдруг, при открытии книги, активным листом будет не Лист1): [vba]
Код
Private Sub Workbook_Open()
      If WorksheetFunction.CountIf(Лист1.UsedRange.Rows(1), Date) Then Exit Sub
      Лист1.Columns(3).Insert: Лист1.Cells(1, 3) = Date
End Sub
[/vba]

Автор - KSV
Дата добавления - 11.08.2015 в 20:02
Udik Дата: Вторник, 11.08.2015, 20:05 | Сообщение № 9
Группа: Друзья
Ранг: Старожил
Сообщений: 1588
Репутация: 192 ±
Замечаний: 0% ±

Excel 2016 х 64
на каждый день Вам нужен новый столбец

вроде совсем наоборот требуется:
только один раз добавлялся


Если правильно понял то в первом приближении:
[vba]
Код

Private Sub Workbook_Open()
Call insCln
End Sub

Public Sub insCln()
Const fDone = "!"
Const lName = "buff"
       If Sheets(lName).Cells(1, 1).Value <> fDone Then
       If Date >= #8/1/2015# Then
           Sheets(lName).Cells(1, 1).Value = fDone
           Sheets("Лист1").Columns(3).Insert: Cells(1, 3) = Date
           ThisWorkbook.Save
           End If
       End If
End Sub
[/vba]

Ручками надо завести лист по имени buff, хотя если допилить макрос, можно автоматом делать. Ну и скрыть его от греха подальше.
К сообщению приложен файл: AddColumn_II.xls (39.0 Kb)


вот вам барабан
яд 41001231307558 wm R419131876897
udik1968@gmail.com


Сообщение отредактировал Udik - Вторник, 11.08.2015, 20:07
 
Ответить
Сообщение
на каждый день Вам нужен новый столбец

вроде совсем наоборот требуется:
только один раз добавлялся


Если правильно понял то в первом приближении:
[vba]
Код

Private Sub Workbook_Open()
Call insCln
End Sub

Public Sub insCln()
Const fDone = "!"
Const lName = "buff"
       If Sheets(lName).Cells(1, 1).Value <> fDone Then
       If Date >= #8/1/2015# Then
           Sheets(lName).Cells(1, 1).Value = fDone
           Sheets("Лист1").Columns(3).Insert: Cells(1, 3) = Date
           ThisWorkbook.Save
           End If
       End If
End Sub
[/vba]

Ручками надо завести лист по имени buff, хотя если допилить макрос, можно автоматом делать. Ну и скрыть его от греха подальше.

Автор - Udik
Дата добавления - 11.08.2015 в 20:05
Новичёк Дата: Среда, 12.08.2015, 10:28 | Сообщение № 10
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 121
Репутация: 2 ±
Замечаний: 0% ±

А если мне надо добавить, что бы ещё один столбец появился после следующей даты? Попробовал вставить ещё одно условие-не работает.
[vba]
Код
Option Explicit

Private Sub Workbook_Open()
Call insCln
End Sub

Public Sub insCln()
Const fDone = "!"
Const lName = "buff"
If Sheets(lName).Cells(1, 1).Value <> fDone Then
If Date >= #8/1/2015# Then
Sheets(lName).Cells(1, 1).Value = fDone
Sheets("Лист1").Columns(3).Insert: Cells(1, 3) = Date
If Date >= #8/11/2015# Then
Sheets(lName).Cells(1, 1).Value = fDone
Sheets("Лист1").Columns(4).Insert: Cells(1, 4) = "Новый столбец"
ThisWorkbook.Save
End If
End If
End If
End Sub
[/vba]
К сообщению приложен файл: 0310022.xls (39.5 Kb)


Сообщение отредактировал Manyasha - Среда, 12.08.2015, 10:40
 
Ответить
СообщениеА если мне надо добавить, что бы ещё один столбец появился после следующей даты? Попробовал вставить ещё одно условие-не работает.
[vba]
Код
Option Explicit

Private Sub Workbook_Open()
Call insCln
End Sub

Public Sub insCln()
Const fDone = "!"
Const lName = "buff"
If Sheets(lName).Cells(1, 1).Value <> fDone Then
If Date >= #8/1/2015# Then
Sheets(lName).Cells(1, 1).Value = fDone
Sheets("Лист1").Columns(3).Insert: Cells(1, 3) = Date
If Date >= #8/11/2015# Then
Sheets(lName).Cells(1, 1).Value = fDone
Sheets("Лист1").Columns(4).Insert: Cells(1, 4) = "Новый столбец"
ThisWorkbook.Save
End If
End If
End If
End Sub
[/vba]

Автор - Новичёк
Дата добавления - 12.08.2015 в 10:28
AndreTM Дата: Среда, 12.08.2015, 11:23 | Сообщение № 11
Группа: Друзья
Ранг: Старожил
Сообщений: 1762
Репутация: 501 ±
Замечаний: 0% ±

2003 & 2010
А может, просто имеет смысл перестать придумывать свои методы хранения данных (и учить такому!) ?
Сделаем обычную плоскую таблицу, необходимые выборки получим сводной, а данные по нужной дате просто будем дописывать в конец таблицы... Ну и дальше - простор фантазии для написания кода по добавлению/удалению/корректировке записей в таблице.
К сообщению приложен файл: 2-18583-1.xls (8.5 Kb)


Skype: andre.tm.007
Donate: Qiwi: 9517375010
 
Ответить
СообщениеА может, просто имеет смысл перестать придумывать свои методы хранения данных (и учить такому!) ?
Сделаем обычную плоскую таблицу, необходимые выборки получим сводной, а данные по нужной дате просто будем дописывать в конец таблицы... Ну и дальше - простор фантазии для написания кода по добавлению/удалению/корректировке записей в таблице.

Автор - AndreTM
Дата добавления - 12.08.2015 в 11:23
Udik Дата: Среда, 12.08.2015, 13:34 | Сообщение № 12
Группа: Друзья
Ранг: Старожил
Сообщений: 1588
Репутация: 192 ±
Замечаний: 0% ±

Excel 2016 х 64
что бы ещё один столбец появился после следующей даты

Просто очистите ячейку и откройте файл заново. Или разделить макрос, собственно вставку столбца выделить в отдельную процедуру и вызывать её по мере надобности.
перестать придумывать свои методы хранения данных

И чем создание отдельной таблицы (на отдельном листе) + сводная принципиально отличается от хранения данных в 1 ячейке? Изначально вопрос был в добавлении столбца макросом только и всего, а зачем это делается я не разбирался.


вот вам барабан
яд 41001231307558 wm R419131876897
udik1968@gmail.com


Сообщение отредактировал Udik - Среда, 12.08.2015, 13:41
 
Ответить
Сообщение
что бы ещё один столбец появился после следующей даты

Просто очистите ячейку и откройте файл заново. Или разделить макрос, собственно вставку столбца выделить в отдельную процедуру и вызывать её по мере надобности.
перестать придумывать свои методы хранения данных

И чем создание отдельной таблицы (на отдельном листе) + сводная принципиально отличается от хранения данных в 1 ячейке? Изначально вопрос был в добавлении столбца макросом только и всего, а зачем это делается я не разбирался.

Автор - Udik
Дата добавления - 12.08.2015 в 13:34
Новичёк Дата: Среда, 12.08.2015, 13:38 | Сообщение № 13
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 121
Репутация: 2 ±
Замечаний: 0% ±

AndreTM, спасибо, конечно. Но если бы мне надо было сделать сводную, я бы сделал сводную. Я в данный момент прошу подсказать, как реализовать несколько другое решение.
 
Ответить
СообщениеAndreTM, спасибо, конечно. Но если бы мне надо было сделать сводную, я бы сделал сводную. Я в данный момент прошу подсказать, как реализовать несколько другое решение.

Автор - Новичёк
Дата добавления - 12.08.2015 в 13:38
AndreTM Дата: Среда, 12.08.2015, 14:12 | Сообщение № 14
Группа: Друзья
Ранг: Старожил
Сообщений: 1762
Репутация: 501 ±
Замечаний: 0% ±

2003 & 2010
Новичёк, ну тогда другое дело.
Только вот зачем заставлять программу делать всё автоматически, да ещё и по неясным условиям? Ведь неизветно же, что вы подразумеваете под "определенной датой" :)
Давайте сделаем так, что будет иметься возможность просто "добавить столбец после последнего заполненного датой столбца"...
К сообщению приложен файл: 2-18583-1-2.xls (45.0 Kb)


Skype: andre.tm.007
Donate: Qiwi: 9517375010
 
Ответить
СообщениеНовичёк, ну тогда другое дело.
Только вот зачем заставлять программу делать всё автоматически, да ещё и по неясным условиям? Ведь неизветно же, что вы подразумеваете под "определенной датой" :)
Давайте сделаем так, что будет иметься возможность просто "добавить столбец после последнего заполненного датой столбца"...

Автор - AndreTM
Дата добавления - 12.08.2015 в 14:12
Новичёк Дата: Среда, 12.08.2015, 15:21 | Сообщение № 15
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 121
Репутация: 2 ±
Замечаний: 0% ±

AndreTM, мне просто надо понять, как можно сделать так, как я спрашивал. Решение данного вопроса является одной из подзадач при реализации глобальной задачи.
[p.s.]Определённая дата-это дата, забиваемая или в макрос или вручную в отдельной ячейке, после прошествия которой должно произойти действие в документе.


Сообщение отредактировал Новичёк - Среда, 12.08.2015, 15:26
 
Ответить
СообщениеAndreTM, мне просто надо понять, как можно сделать так, как я спрашивал. Решение данного вопроса является одной из подзадач при реализации глобальной задачи.
[p.s.]Определённая дата-это дата, забиваемая или в макрос или вручную в отдельной ячейке, после прошествия которой должно произойти действие в документе.

Автор - Новичёк
Дата добавления - 12.08.2015 в 15:21
AndreTM Дата: Среда, 12.08.2015, 15:53 | Сообщение № 16
Группа: Друзья
Ранг: Старожил
Сообщений: 1762
Репутация: 501 ±
Замечаний: 0% ±

2003 & 2010
P.S.Определённая дата-это дата, забиваемая или в макрос или вручную в отдельной ячейке, после прошествия которой должно произойти действие в документе.

Так в том-то всё и дело! Вы смешали несколько событий, а пытаетесь реагировать на них не в комплексе, а вообще по неким третьим признакам ("давайте добавим столбец при открытии файла" :) )
Первое, есть некая "определенная дата", которую мы получим каким-либо методом. Вопрос: если и когда "дата" меняется, именно эта самая ваша дата в документе, а не мировое течение времени - что должно происходить? Причем "дата" может быть изменена различными способами? каким-то одним?
Второе, надо добавить столбец. Допустим, у вас уже есть данные в таблице, и там написаны какие-то даты. Добавить столбец - но в какое место? В конец таблицы? где-то в середину? какую дату надо прописать в заголовок добавленного столбца?
Третье, непонятен именно момент связи событий "прошествие оределенной даты" и "добавить столбец". "Прошествие даты" само по себе событие, оперирующеее минимум двумя датами - "определенной" и некоей, в нашем случае, текущей.
Поэтому вам бы надо составить таблицу состояний триггеров ("дата определенная и некая дата то-то и то-то", "нужный столбец с данными есть/нет/где должен быть", что-то ещё по действиям пользователя, возможно) и определить моменты, при которых у вас должно исполняться именно добавление столбца; либо условия, при которых добавление как раз не требуется. Множественное условие у вас просто, - так вы сведите действие с моментом исполнения именно нужных условий, и никаких более...
Я понимаю, что вы скажете "так я и прошу помочь мне определиться с этими условиями". Тут уж извините - недостаточность исходных данных никто не отменял. Или вы уж рассказывайте задачу поконкретнее и ближе к вашей реальности.


Skype: andre.tm.007
Donate: Qiwi: 9517375010
 
Ответить
Сообщение
P.S.Определённая дата-это дата, забиваемая или в макрос или вручную в отдельной ячейке, после прошествия которой должно произойти действие в документе.

Так в том-то всё и дело! Вы смешали несколько событий, а пытаетесь реагировать на них не в комплексе, а вообще по неким третьим признакам ("давайте добавим столбец при открытии файла" :) )
Первое, есть некая "определенная дата", которую мы получим каким-либо методом. Вопрос: если и когда "дата" меняется, именно эта самая ваша дата в документе, а не мировое течение времени - что должно происходить? Причем "дата" может быть изменена различными способами? каким-то одним?
Второе, надо добавить столбец. Допустим, у вас уже есть данные в таблице, и там написаны какие-то даты. Добавить столбец - но в какое место? В конец таблицы? где-то в середину? какую дату надо прописать в заголовок добавленного столбца?
Третье, непонятен именно момент связи событий "прошествие оределенной даты" и "добавить столбец". "Прошествие даты" само по себе событие, оперирующеее минимум двумя датами - "определенной" и некоей, в нашем случае, текущей.
Поэтому вам бы надо составить таблицу состояний триггеров ("дата определенная и некая дата то-то и то-то", "нужный столбец с данными есть/нет/где должен быть", что-то ещё по действиям пользователя, возможно) и определить моменты, при которых у вас должно исполняться именно добавление столбца; либо условия, при которых добавление как раз не требуется. Множественное условие у вас просто, - так вы сведите действие с моментом исполнения именно нужных условий, и никаких более...
Я понимаю, что вы скажете "так я и прошу помочь мне определиться с этими условиями". Тут уж извините - недостаточность исходных данных никто не отменял. Или вы уж рассказывайте задачу поконкретнее и ближе к вашей реальности.

Автор - AndreTM
Дата добавления - 12.08.2015 в 15:53
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2025 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!