Я только что загрузил файл Micosoft CSV из Контактов Google и хотел бы изменить его, чтобы я мог упорядочить контакты в своем телефоне. Я возвращаюсь к своему "тупому" телефону в рамках моего эксперимента, чтобы упростить мою жизнь, и на "немом" телефоне нет места для всех контактов в файле.

С учетом вышесказанного, я думаю, что Google, ну, глупо перечислять почти всех, кого я когда-либо писал по электронной почте в жизни моей учетной записи Gmail, и других, которых у меня нет (полагаю, это из списков адресов электронной почты, в которых я нахожусь). Таким образом, в результате у меня огромный список контактов, но большинство из них я почти не знаю, и у меня нет номера телефона. Я не отправляю электронные письма на свой телефон (и я, очевидно, не буду отправлять их на свой телефон), поэтому они мне не нужны.

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

R,S,T,U,V,W,AL,AM,AN,AO,AP,BG,BH,BR,BS,BU,BV

Итак, позвольте мне немного упростить проблему. Предположим, что имя, отчество и фамилия находятся в столбцах A , B и C соответственно. Затем номер мобильного телефона находится в столбце D , номер домашнего телефона - в столбце E , а адрес электронной почты - в столбце F Для каждого контакта в списке я хочу удалить его строку, если у него нет данных в столбце D или E или ОБА, но мне было все равно, есть ли у него данные в столбце F

Я написал следующий макрос, но кажется, что он удаляет всю мою электронную таблицу, чего не следует делать. Я очень плохо знаком с Excel Macros и VBA, это первый раз, когда я что-либо делал с ними, поэтому я был бы признателен за помощь.

Sub deleteBlankRows()
On Error Resume Next
Columns("R:R").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
Columns("S:S").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
Columns("T:T").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
Columns("U:U").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
Columns("V:V").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
Columns("W:W").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
Columns("AL:AL").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
Columns("AM:AM").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
Columns("AN:AN").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
Columns("AO:AO").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
Columns("AP:AP").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
Columns("BG:BG").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
Columns("BH:BH").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
Columns("BR:BR").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
Columns("BS:BS").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
Columns("BU:BU").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
Columns("BV:BV").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
End Sub

1 ответ1

1

Я думаю, что ваша идея хороша, просто VBA не хочет работать. Я бы попробовал это с такой петлей -

Sub deleterows()

Dim intcount As Integer
Dim introw As Integer

intcount = ActiveSheet.UsedRange.Rows.Count

For introw = intcount To 1 Step -1
    If Range("B" & introw) = "" Or Range("C" & introw) = "" Then
    Range("B" & introw).EntireRow.Delete
    End If

Next

End Sub

В if просто определите столбцы, которые вы хотите проверить, как Range("X" & introw) = "" разделенные Or .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .