Удаление столбцов рабочего листа до диапазона переменных

#excel #vba

#excel #vba

Вопрос:

У меня есть электронная таблица, в которой все столбцы после C относятся к определенным неделям, например, неделя 1, неделя 2. Мне нужно сохранить столбцы A-C, но затем мне нужно удалить все столбцы, кроме номера ТЕКУЩЕЙ недели, и два столбца справа от него.

Это довольно большая электронная таблица, и номер текущей недели теперь равен столбцу CK, но его придется обновлять каждую неделю.

Неделя — нет. отображаются во втором ряду.

Также мне нужно скопировать ячейки с текущей недели и двух соседних с ней столбцов.

Пожалуйста, помогите мне, я везде искал решение и все перепробовал.

Я могу получить номер текущей недели, используя

 iNumberOfTheWeek = DatePart("ww", Now()) 
'// current number of of the week in the year
  

Но я не знаю, как это использовать

Ответ №1:

Я думаю, что SO рекомендует больше усилий, показанных в вопросе, но в любом случае это много для вас:

 Sub Sub1()
  Dim iNumberOfTheWeekamp;, FindColamp;
  Dim FindRange As Range, delRange As Range, copyRange As Range
  iNumberOfTheWeek = DatePart("ww", Now())
  ' the range to search
  Set FindRange = Range(Cells(2, 4), Cells(2, Columns.Count))
  Debug.Print FindRange.Address
  ' find the current week
  Set FindRange = FindRange.Find(iNumberOfTheWeek, LookIn:=xlValues)
  If FindRange Is Nothing Then MsgBox "Not found": End
  Debug.Print FindRange.Address
  FindCol = FindRange.Column
  ' the first (left) range to delete
  Set delRange = Range(Columns(4), Columns(FindCol - 1))
  Debug.Print delRange.Address
  delRange.Delete
  ' the second (right) range to delete
  Set delRange = Range(Columns(7), Columns(Columns.Count))
  Debug.Print delRange.Address
  delRange.Delete
  ' the range to copy
  Set copyRange = Columns(3).Resize(Rows.Count, 3) ' 3, 4, and 5
  Debug.Print copyRange.Address
  copyRange.Copy
  '?? do what
End Sub