Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
36 / 33 / 1
Регистрация: 11.01.2013
Сообщений: 388
1

Расставить скобки

04.05.2014, 12:21. Показов 1251. Ответов 5
Метки нет (Все метки)

Доброго времени суток!
Подскажите пожалуйста как превратить такую структуру документа:
Ручки
общий отдел 10
бухгалтерия 43
отдел закупок 24
Карандаши
общий отдел 22
инфоцентр 12

в такую

Ручки 77 (общий отдел 10, бухгалтерия 43, отдел закупок 24), карандаши 34 (общий отдел 22, инфоцентр 12)

Буду благодарен за любую помощь!

С уважением.

P.S.
С праздниками Вас!
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.05.2014, 12:21
Ответы с готовыми решениями:

Расставить условия.
Здравствуйте. Подскажите пожалуйста. У меня код, который вроде работает нормально, выполняются...

Расставить скобки
Применив правила приоритета операций с множествами, расставьте скобки в заданном выражении Правила...

Расставить скобки
Расставить скобки так, чтобы получилось 850 1 + 2 * 3 + 4 * 5 + 6 * 7 + 8 * 9 + 10 * 11 + 12 *...

Расставить скобки в строке
Добрый вечер, граждане! Такая проблемка, не могу сообразить как сделать.... Есть начальная...

5
15038 / 6362 / 1726
Регистрация: 24.09.2011
Сообщений: 9,971
04.05.2014, 13:12 2
Цитата Сообщение от SysUnit Посмотреть сообщение
как превратить такую структуру документа
Пока непонятно даже о каком документе идет речь - TXT, XLS, DOC? Приложите документ.

И Вас тоже с праздниками!
1
Модератор
Эксперт функциональных языков программированияЭксперт Python
30012 / 16484 / 3341
Регистрация: 12.02.2012
Сообщений: 27,443
Записей в блоге: 5
04.05.2014, 13:25 3
Лучший ответ Сообщение было отмечено SysUnit как решение

Решение

Visual Basic
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
65
66
67
68
69
70
71
72
73
Sub makeList(fi As Integer, fo As Integer)
 
Dim subj(1 To 200) As String
    
    Line Input #fi, Nam$
    
    Count% = 0
    j% = 0
    
    Do While (Not EOF(fi))
    
       Line Input #fi, Stri$
       
       lex = Split(Stri$, " ")
       n% = UBound(lex, 1)
       
       If IsNumeric(lex(n%)) Then
       
          j% = j% + 1
          
          subj(j%) = subj(j%) & " " & Stri$
          
          Count% = Count% + Val(lex(n%))
              
       Else
    
          Print #fo%, Nam$; " "; Count%; " (";
          
          For i% = 1 To j%
              Print #fo, subj(i%);
              If (i% < j%) Then Print #fo, ",";
              subj(i%) = ""
          Next i%
        
          j% = 0
        
          Print #fo%, "), ";
        
          Nam$ = Stri$
          Count = 0
        
       End If
    
    Loop
        
    Print #fo%, Nam$; " "; Count%; " (";
          
    For i% = 1 To j%
        Print #fo, subj(i%);
        If (i% < j%) Then Print #fo, ",";
    Next i%
        
    Print #fo%, ")"
    
    Close #fi, #fo
 
End Sub
 
Sub main()
 
    HomeDir$ = ThisWorkbook.Path
    
    fi% = FreeFile
    
    Open HomeDir$ + "\inp.txt" For Input As #fi%
    
    fo% = FreeFile
    
    Open HomeDir$ + "\out.txt" For Output As #fo%
    
    makeList fi%, fo%
 
End Sub
1
3208 / 958 / 222
Регистрация: 29.05.2010
Сообщений: 2,076
04.05.2014, 13:38 4
Лучший ответ Сообщение было отмечено SysUnit как решение

Решение

Если данные в Excel, то можно и так:
Visual Basic
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
Sub Sbor()
    Dim a(), i&, t$, Kol$
    Dim re As Object
    Set re = CreateObject("vbscript.regexp")
    With re
        .Global = True
        .Pattern = "\d+"
    End With
    a = ActiveSheet.UsedRange.Value
    With CreateObject("Scripting.Dictionary")
        For i = 1 To UBound(a, 1)
            With re.Execute(a(i, 1))
                If .Count Then
                    Kol = .Item(0)
                Else
                    t = a(i, 1)
                    Kol = 0
                    s = ""
                End If
            End With
            If Kol <> 0 Then
                Kol = .Item(t)(0) + Val(Kol)
                s = .Item(t)(1) & IIf(s = "", "", ", ") & a(i, 1)
            End If
            .Item(t) = Array(Kol, s)
        Next i
        s = ""
        For Each x In .keys
            s = s & IIf(s = "", "", ", ") & x & " " & .Item(x)(0) & " (" & .Item(x)(1) & ")"
        Next
    End With
    MsgBox s
End Sub
2
36 / 33 / 1
Регистрация: 11.01.2013
Сообщений: 388
04.05.2014, 14:51  [ТС] 5
Казанский,
спасибо за ответ! Вы правы - спасибо за замечание! Просто мне бы хоть какой-нибудь... Вообще для Excel или Word, поскольку экспорт поддерживается только для них.

С уважением.

Добавлено через 14 секунд
Catstail,
Ураааа!!! Вот это подарок! СПАСИБО ОГРОМНОЕ!!! Единственно... прошу прощения, а Вы не подскажете как адаптировать Ваш макрос к выделенному диапазону в Word, просто уже много документов в этом формате, но если нет то нет - в любом случае Вам огромное спасибо!!!!

С уважением.

Добавлено через 1 минуту
toiai,
спасибо ОГРОМНОЕ!!! А как можно результат поместить в ячейки? или отправить на новый лист?

С уважением.

Добавлено через 6 минут
toiai,
Вы просто добрый волшебник профессионал А как можно результат поместить в ячейки? или отправить на новый лист? А как можно Ваш макрос для Word адаптировать?

Добавлено через 1 час 1 минуту
У страха глаза велики (С)
Большое Всем Вам СПАСИБО!
С праздниками Вас!
0
3208 / 958 / 222
Регистрация: 29.05.2010
Сообщений: 2,076
04.05.2014, 14:55 6
Цитата Сообщение от SysUnit Посмотреть сообщение
toiai,
спасибо ОГРОМНОЕ!!! А как можно результат поместить в ячейки? или отправить на новый лист?
Конечно можно:
Visual Basic
1
2
3
With Sheets.add
.cells(1,1)=s
End With
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.05.2014, 14:55

Расставить скобки (производительность)
Задача: Расставить скобки (по количеству операций) в выражении, чтобы получить 850 в результате:...

Правильно расставить скобки в операторе while
Есть вот такая конструкция while(String line=buff.ReadLine()) {} мне Netbeans подчёркивает...

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

Расставить скобки в арифметическом выражении
Расставить скобки в выражении по старшинству операций, т.е. операция &quot;возведение в степень&quot; самая...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.