powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Нужна помощь!!!!
6 сообщений из 6, страница 1 из 1
Нужна помощь!!!!
    #34398409
svetolux
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Посмотрите задание, можно ли вообще это реализовать на VBA или проще вручную. Если можно - то как (хотя бы алгоритм)
...
Рейтинг: 0 / 0
Нужна помощь!!!!
    #34398703
lena_####
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
svetolux

Держите, проверяйте.
...
Рейтинг: 0 / 0
Нужна помощь!!!!
    #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
Нужна помощь!!!!
    #34399482
svetolux
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ОГРОМНОЕ мерси
...
Рейтинг: 0 / 0
Нужна помощь!!!!
    #34399489
svetolux
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lena_#### svetolux

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

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

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


[MVP - Microsoft Excel]

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


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