#excel #vba
#excel #vba
Вопрос:
Нужна помощь с кодами vba. Я хочу иметь коды vba для добавления границы ко вторым наборам данных (в столбце R) и удаления 2 значений после общей строки (всего 4) Вот что я получил до сих пор,
Sub Test()
Dim LastRow As Long, x As Long
LastRow = Cells.Find(What:="*", SearchDirection:=xlPrevious, SearchOrder:=xlByRows).Row
x = 2
Rows(LastRow - x 1 amp; ":" amp; LastRow).Delete
Set dat = Sheets("Table F Agencies Combined").Range("M:N")
dat.Replace What:="TRUE", Replacement:=""
End Sub
Теперь я могу удалить последние 2 строки и заменить TRUE ничем, но я не знаю, как удалить 2 значения после первого набора и добавить границу в столбец R для второго набора данных.
Комментарии:
1. Я забыл добавить, что диапазон данных варьируется в зависимости от каждого месяца, поэтому мне нужны коды для перебора набора данных, чтобы добавить границу и соответственно удалить значения.
Ответ №1:
Я думаю, вам лучше обрабатывать каждый блок данных отдельно. Вы можете запускать этот код повторно без потери данных.
Sub Test2()
Dim c As Range, r As Range
' 1st block
Set c = Range("B:B").Find("total", Range("B1"), xlValues, xlWhole, , , False)
'c.Select
c.Offset(1).Resize(2).EntireRow.ClearContents
' 2nd block
Set c = Range("B:B").Find("total", c, xlValues, xlWhole, , , False)
'c.Select
c.Offset(1).Resize(2).EntireRow.ClearContents
Set r = Intersect(c.EntireRow, Columns("R"))
Set r = Range(r, r.End(xlUp))
r.BorderAround xlContinuous, xlThick
End Sub
Комментарии:
1. спасибо, он прекрасно удаляет 4 значения, есть ли способ включить границу вокруг второго столбца набора данных R? почему-то это не отображается. Еще раз спасибо,
2. Хорошо, я изменил свой ответ, чтобы включить добавление границы. Быстро и грязно, но работает с вашим существующим макетом данных.
3. Привет, Дэйв, я думаю, что исправленный вариант сработал частично, так как я хочу, чтобы граница доходила до ячейки LR, если вы видите второе изображение, у него есть граница только вокруг чисел. Я могу исправить xlThick в xlMedium, чтобы там не было ничего особенного
4. Я включил в третью картинку то, как я хочу это представить, и, надеюсь, это быстрое решение
5. О, я вижу, что объединенная ячейка в столбце B сбивала с толку. Попробуйте модификацию.
Ответ №2:
В вашем коде было несколько ошибок (синтаксические ошибки, логические ошибки). Я исправил их для вас.
Sub Test()
Dim dat As Range: Set dat = Sheets("Table F Agencies Combined").Range("M:N")
Dim LastRow As Long, x As Long
Dim myCell As Variant
LastRow = Cells.Find(What:="*", SearchDirection:=xlPrevious, SearchOrder:=xlByRows).Row
x = 2
Rows(LastRow - x 1 amp; ":" amp; LastRow).Delete
For Each myCell In dat
myCell.Value = Replace(UCase(myCell.Value), "TRUE", "")
Next myCell
End Sub