помощь по макросу

Автор Онлайн-Магазин Электроинструмента, 24.05.2013, 11:42

« назад - далее »

Онлайн-Магазин Электроинструмента

Добрый день гуру Excel
необходима помощь в написании макроса, в столбце А имеются текстовые и числовые данные такого вида:
1.Точило Makita GB 801 (GB801)
2. Пылесос Makita 440 + 7 мешков
3. Пылесос Makita 445X(6) + 6 мешков
4. Пила цепная электрическая Bosch GKE 35 BCE 0.601.597.603
5. Углошлифмашина AEG WS 6-125 (413490)

выполнение макроса должно привести строки к такому виду:

1.Точило Makita GB 801
2. Пылесос Makita 440
3. Пылесос Makita 445X
4. Пила цепная электрическая Bosch GKE 35 BCE
5. Углошлифмашина AEG WS 6-125

исходник прилагаю

Poltava

Пока Вы не предоставите четкого алгоритма того что должно отсекаться! вам никто не поможет
Не пытайтесь спорить с дебилом. Иначе вы опуститесь до его уровня. Где он задавит вас своим опытом.

Онлайн-Магазин Электроинструмента

Вроде, все написал, что должно отсекаться для примера указал: то что в скобках (GB801),(413490)
                                                                                            то что написано через "+"
                                                                                            то что написано "0.601.597.603"

kuklp

#3
Воспользуйтесь комбинацией ctrl+h и запишите все это макрорекордером.
Тему закрываю из-за некорректного названия.
Я, как всегда, чертовски адекватен... Email: pilipnikop@yandex.ua WM Z206653985942, R334086032478, U238399322728, E332314026771

GWolf

#4
Цитата: KuklP от 24.05.2013, 16:17
Воспользуйтесь комбинацией ctrl+h и запишите все это макрорекордером.
Тему закрываю из-за некорректного названия.

Доброго дня!
Да не обидится на меня уважаемый KukIP. К сожалению не всегда посетители форума могут правильно сформулировать тему задаваемого вопроса! К тому же макрорекордером возникшую у топикстартера проблему не решить, увы!
Если позволите, вот один из вариантов решения:

Sub otsek()
    '
    Dim nR As Long, stroka As String, nSimw As Integer
   
    With ThisWorkbook
        With .ActiveSheet
            nR = 1
            Do
                stroka = .Cells(nR, 1).Text
                nSimw = 0
                If InStr(1, stroka, "(", vbTextCompare) > 0 Then
                    nSimw = InStrRev(stroka, "(", , vbTextCompare)
                ElseIf InStr(1, stroka, " +", vbTextCompare) > 0 Then
                    nSimw = InStr(1, stroka, " +", vbTextCompare)
                ElseIf InStr(1, stroka, " 0.", vbTextCompare) > 0 Then
                    nSimw = InStr(1, stroka, " 0.", vbTextCompare)
                End If
               
                If nSimw = 0 Then
                    .Cells(nR, 4) = stroka
                Else
                    .Cells(nR, 4) = Left(stroka, nSimw - 1)
                End If
                stroka = ""
                nR = nR + 1
            Loop While .Cells(nR, 1).Text <> ""
            nSimw = 0
            nR = 0
        End With
    End With
End Sub
Путей к вершине - множество. Этот один из многих!

Wasilic

Ну и еще вариант (из моей папки примеров).
Может и я на что сгожусь ... Если сгодился, можете меня по+благодарить+.