2015-03-03 3 views
0

Здравствуйте, я пытаюсь удалить все строки, где в столбце B значение членов больше 1000. Я пробовал это шаг за шагом и попытался сначала избавиться от всех ненужных данных из В-ячеек и оставить только строку с члены. Я заметил, что есть 5 строк, а строка членов - 6-я. Я искал часы, и я до сих пор не получаю его. КАК УДАЛИТЬ ПЕРВЫЕ 5 ЛИНИЙ. Не могли бы вы предложить мне руку помощи? Я уверен, что его soo легко, но я не могу найти его.SIMPLE Удалить строку из ячейки?

У меня есть это:

Option Explicit 
Sub Delete5TextLines() 
Dim c As Range, s 
Application.ScreenUpdating = False 
For Each c In Range("B1", Range("B" & Rows.Count).End(xlUp)) 

********** 

Next c 
Application.ScreenUpdating = True 
End Sub 

это файл .csv: http://we.tl/vNcyfg9Wus

enter image description here

+0

Ничего не происходит, когда я загружаю ваш пример. – Davesexcel

+0

@Davesexcel привет. Я знаю, что он не работает. Загруженный файл содержит только необработанные данные, которые необходимо обработать. –

+0

Я говорю вам, что я не могу загрузить ваш файл, ничего не происходит, когда я нажимаю загрузку. – Davesexcel

ответ

2

Хорошо, это не очень элегантно, но первое, что я придумал, это работает.

использовать эту формулу, чтобы удалить последнее слово в вашем объеме текста («членов»)

Если предположить, что текст находится в A1:

=LEFT(A1,FIND("|",SUBSTITUTE(A1," ","|",LEN(A1)-LEN(SUBSTITUTE(A1," ",""))))-1) 

Эта формула получает вас последнее слово текста в этом случае число членов (потому что мы удалили слово «членов)

Предполагая, что вы поставите выше формулу в A2

=IF(ISERR(FIND(" ",A2)),"",RIGHT(A2,LEN(A2)-FIND("*",SUBSTITUTE(A2," ","*",LEN(A2)-LEN(SUBSTITUTE(A2," ","")))))) 

Теперь вы должны были извлечь количество членов. Если это значение < 5000 вы можете удалить строку с петлей Vba, который должен выглядеть следующим образом:

Sub deleteRowsAfterMembers 

Dim i as Integer 

i = ThisWorkbook.Sheets(1).Rows.Count 

While i > 0 Do 

If (CellWithMemberCount).Value < 5000 Then 

ThisWorkbook.Sheets(1).Rows(i).Delete 

End If 

i = i-1 

Loop 

End Sub 

что будет (надеюсь) сделать это.

+0

Я нашел это: http://www.ozgrid.com/forum/showthread.php?t=171305 удаляет вторую строку столбца. Я просто не знаю, как приспособить его, чтобы удалить первый и запустить его 5 раз –

+0

это должно удалить первую строку http://www.mrexcel.com/forum/excel-questions/565574-remove-firstline -inside-cell.html, но он не работает для меня. -_- –

+0

Что именно вы пытаетесь удалить? Ряд? Как в строке 25 или вы хотите удалить строки текста внутри ячейки? Если вы хотите удалить первые 5 строк (!), Вы можете просто написать (не так изящно) Листы (1) .Rows (1) .delete 5 раз. –

2

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

РЕДАКТИРОВАТЬ # 1:

Если предположить, что существует, по крайней мере, пять линий в пределах соты и линии отделены друг от друга Chr (10) то это будет удалить первые 5 строк:

Sub marine() 
    ary = Split(ActiveCell.Value, Chr(10)) 
    t = "" 
    For i = 5 To UBound(ary) 
     t = t & Chr(10) & ary(i) 
    Next i 

    If Len(t) > 1 Then 
     t = Mid(t, 2) 
    Else 
     t = "" 
    End If 
    ActiveCell.Value = t 
End Sub 
+0

Спасибо за это, но мне нужно удалить первые 5 строк внутри ячейки :) –

+0

@AlexStanese Посмотреть мой ** EDIT # 1 ** –

+0

Спасибо вам большое! Он отлично работает. Не могли бы вы также показать мне, как реализовать это в цикле для всех В-ячеек? Я пробовал вот так: http: // pastie.org/9996015, но кажется, что он идет в бесконечную петлю, потому что excel является crusing. –

Смежные вопросы