Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Нужна помощь!!!! / 6 сообщений из 6, страница 1 из 1
18.03.2007, 10:31:13
    #34398409
svetolux
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужна помощь!!!!
Посмотрите задание, можно ли вообще это реализовать на VBA или проще вручную. Если можно - то как (хотя бы алгоритм)
...
Рейтинг: 0 / 0
18.03.2007, 18:04:11
    #34398703
lena_####
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужна помощь!!!!
svetolux

Держите, проверяйте.
...
Рейтинг: 0 / 0
18.03.2007, 21:27:00
    #34398879
KL (XL)
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужна помощь!!!!
lena_#### уже сделала работу, правда не говорит как ;-)

вот мой код-"пятиминутка", который делает основную часть, а дальше надо чистить руками или усложнять процедуру.

В стандартном модуле:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
Option Explicit

Sub Main()
    Dim i As Long
    Dim j As Long
    Dim lngRow As Long
    Dim arrRows As Variant
    Dim arrFields() As String
    Dim arrCodes As Variant
    Dim objSheet As Worksheet
    
    Application.ScreenUpdating = False
    Set objSheet = Worksheets.Add(, Sheets( 1 ))
    With objSheet
        .Name = "Results"
        Sheets( 1 ).Cells.Copy .Cells
        ' Make lines from Alt+Enter symbol
        lngRow = .Cells(.Rows.Count, "B").End(xlUp).Row
        For i = lngRow To  2  Step - 1 
            arrRows = Split(.Cells(i, "B"), Chr( 10 ))
            If UBound(arrRows) >  0  Then
                .Cells(i +  1 , "B").Resize(UBound(arrRows)).EntireRow.Insert
                .Cells(i, "B").Resize(UBound(arrRows) +  1 ) = Application.Transpose(arrRows)
            End If
        Next i
        ' Make headers
        arrCodes = Array("[т]", "[м]", "[д]", "[е]", "[пр]")
        With .Range("C1:G1")
            .Value = arrCodes
            .Font.Bold = True
        End With
        ' Make fields
        ReDim arrFields(UBound(arrCodes)) As String
        lngRow = .Cells(.Rows.Count, "B").End(xlUp).Row
        On Error Resume Next
        For i =  2  To lngRow
            ReDim arrFields(UBound(arrCodes)) As String
            For j =  0  To UBound(arrCodes)
                arrFields(j) = Trim(Replace(ExtractText(.Cells(i, "B"), "(\" & arrCodes(j) & ")[^\[]*"), arrCodes(j), ""))
            Next j
            With .Cells(i, "B")
                .Value = Mid(.Value,  1 , IIf(IsError(InStr(.Value, "[")), Len(.Value), InStr(.Value, "[") -  1 ))
            End With
            .Cells(i, "C").Resize(,  5 ) = arrFields
        Next i
        On Error GoTo  0 
        ' Fill 1st column's empty cells with duplicates
        With .Columns("A:A").SpecialCells(xlCellTypeBlanks)
            .Value = "=R[-1]C"
            .Value = .Value
        End With
        .Range("A:G").Columns.AutoFit
    End With
    Application.ScreenUpdating = True
End Sub

Function ExtractText(strTxt As String, strPattern As String)
    Dim RegExp As Object
    Set RegExp = CreateObject("vbscript.regexp")
    With RegExp
        .Pattern = strPattern
        .Global = True
        ExtractText = .Execute(strTxt)( 0 )
    End With
End Function
KL
[MVP - Microsoft Excel]
...
Рейтинг: 0 / 0
19.03.2007, 10:53:51
    #34399482
svetolux
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужна помощь!!!!
ОГРОМНОЕ мерси
...
Рейтинг: 0 / 0
19.03.2007, 10:56:20
    #34399489
svetolux
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужна помощь!!!!
lena_#### svetolux

Держите, проверяйте.

Большое даже огромное спасибо, но если можно хотелось бы посмотреть программный код, т.к. таких файлов много.
...
Рейтинг: 0 / 0
19.03.2007, 17:02:11
    #34400867
svetolux
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужна помощь!!!!
KL (XL)lena_#### уже сделала работу, правда не говорит как ;-)

вот мой код-"пятиминутка", который делает основную часть, а дальше надо чистить руками или усложнять процедуру.


[MVP - Microsoft Excel]

Работает исправно, но если можно немного комментариев на русском, особенно что касается Function ExtractText
...
Рейтинг: 0 / 0
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Нужна помощь!!!! / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]