1

голосов
1

ответ
250

Просмотры

Python 3.4 / Notepad ++ 6.5 Hex символов Замена

Я использую Python 3.4.2 (Windows 7) и Notepad ++ 6.5.5 (Windows 7). Когда я открываю FILE1.TXT, который содержит строки данных по странам, некоторые символы отображаются в виде XF4 в белый цвет шрифта, окруженный черным фоном прямоугольник. Я хотел бы Python, чтобы заменить те XF4 с правильным характером: ô. Вот что я придумал, до сих пор: f1 = разомкнут ( 'C: \\ ABCD \\ file1.txt', 'г') 2 = открыт ( 'C: \\ ABCD \\ file2.txt', 'ш') для линии в f1: f2.write (line.replace ( 'O', 'O')) f1.close () f2.close () Это не делает работу. Похоже, что так, как я пишу «„O“» является проблемой. Я был бы признателен за вашу помощь по этому вопросу.
clippertm
1

голосов
1

ответ
653

Просмотры

Excel VBA Добавить комментарий из массива

Я не понимаю, почему ниже не добавляет комментарии от А1 до А27 :( Dim aComment As String aComment = Split ( "ABC | DEF | ГХИ | JKL", "|") Для я = 1 Чтобы я = 27 Для х = LBOUND (aComment) Для UBound (aComment) С Таблицах ( "доклад"). Range (Cells (1, я)). AddComment .Visible = False .Text aComment (х) End With Next Next было бы удивительно, если вы могли бы дать мне руку, знаете, я почти там, но не могу понять, что я не так :(
clippertm
1

голосов
1

ответ
866

Просмотры

Объединить строки & Sum значений в рабочем листе

У меня есть Excel лист с ниже (трубы «|», чтобы разграничивать столбцы) данных. A | B | C | Х | 50 | 60 D | E | F | X | 40 | 30 A | B | C | Х | 10 | 20 A | B | C | Y | 20 | 20 A | B | C | X | 20 | 70 D | E | F | X | 10 | 50 A | B | C | Y | 10 | 10 результат я пытаюсь получить это: | B | C | X | 80 | 150 A | B | C | Y | 30 | 30 D | E | F | X | 50 | 80 Значения A, B, C и D, E, F, как уникальные идентификаторы. На самом деле только А или D могут быть рассмотрены. Значения X и Y, как «типы», и целые числа приведены значения суммы. Этот образец был упрощен, есть тысячи уникальных идентификаторов, десятки типов и десятка значений суммы. Строки не сортируется, типы могут быть расположены в более высоких или более низких рядах. Я пытаюсь избежать использования сводной таблицы. Тусклое LastRow As Integer Dim LastCol As Integer Dim I As Integer = LastCol листов (1) .Cells (1, Columns.Count) .END (xlToLeft) .Column LastRow = листы (1) .Cells (Rows.Count, 1). End (xlUp). Строка Для я = 1 Для того, чтобы LastRow ???? Далее я Код выше добирается до точки пробегает по строкам, но я не ясно о том, что после этой точки.
clippertm
1

голосов
1

ответ
4.8k

Просмотры

Outlook .Restrict method does not work with Date

Ограничить (), кажется, не принимает значение даты, когда оно указано снаружи. Public Sub EBS () Dim oMail Как MailItem Dim SPATH As String Dim dtDate As Date Dim dtRecDate Как Дата Dim SNAME As String Dim oNameSpace Как Outlook.NameSpace Dim oInboxFolder Как Outlook.Folder Dim oSentFolder Как Outlook.Folder Dim я As Long Set oNameSpace = Application.GetNamespace ( "MAPI") Set oInboxFolder = oNameSpace.GetDefaultFolder (olFolderInbox) Set oSentFolder = oNameSpace.GetDefaultFolder (olFolderSentMail) dtRecDate = DateAdd ( "d", -180, сейчас) Set setItems = oInboxFolder.Items Set RestrictedItems = setItems. Ограничение ( "[ReceivedTime] <dtRecDate И [MessageClass] = 'IPM.Note'") Для я = RestrictedItems.Count К 1 Шаг -1 Set oMail = RestrictedItems. пункт (I) зЫат = oMail.Subject dtDate = oMail.ReceivedTime зЫат = Формат (dtDate, "ггггммдд", vbUseSystemDayOfWeek, vbUseSystem) и формат (dtDate, "_hhnnss", vbUseSystemDayOfWeek, vbUseSystem) & "_" & зЫате &». тзд»зЫат = Left (зЫат, 256) SPATH = "C: \ ARCHIVE \ OUTLOOK \ Входящие \" Debug.Print dtRecDate oMail.SaveAs SPATH & зЫат, olMSG oMail.Delete Далее я End Sub ограничения работает, когда, например, «2014/06/13» используется вместо dtRecDate. Когда dtRecDate используется, она не ограничивает какой-либо предмет. Можете ли вы помочь? , VbUseSystemDayOfWeek, vbUseSystem) & "_" & зЫате & ".msg" зЫат = Левый (зЫат, 256) SPATH = "C: \ АРХИВ \ Outlook \ Входящие \" Debug.Print dtRecDate oMail.SaveAs SPATH & SNAME, olMSG oMail .Delete Далее я End Sub ограничение работает, когда, например, «2014/06/13» используется вместо dtRecDate. Когда dtRecDate используется, она не ограничивает какой-либо предмет. Можете ли вы помочь? , VbUseSystemDayOfWeek, vbUseSystem) & "_" & зЫате & ".msg" зЫат = Левый (зЫат, 256) SPATH = "C: \ АРХИВ \ Outlook \ Входящие \" Debug.Print dtRecDate oMail.SaveAs SPATH & SNAME, olMSG oMail .Delete Далее я End Sub ограничение работает, когда, например, «2014/06/13» используется вместо dtRecDate. Когда dtRecDate используется, она не ограничивает какой-либо предмет. Можете ли вы помочь? Когда dtRecDate используется, она не ограничивает какой-либо предмет. Можете ли вы помочь? Когда dtRecDate используется, она не ограничивает какой-либо предмет. Можете ли вы помочь?
clippertm
3

голосов
3

ответ
275

Просмотры

Оптимизация контура: объединить две петли в одно,

Value2 листы (2) .Cells (я, 23) = .Value2 листы (2) .Cells (я, 4) .Value2 * Листы (2) .Cells (я, 6) .Value2 листы (2) .Cells (я , 24) .Value2 = Листы (2) .Cells (I, 4) .Value2 * Листы (2) .Cells (я, 9) .Value2 листы (2) .Cells (I, 25) .Value2 = Листы (2 ) .Cells (я, 4) .Value2 * Листы (2) .Cells (я, 19) .Value2 листы (2) .Cells (I, 26) = .Value2 листы (2) .Cells (я, 4). value2 * Листы (2) .Cells (I, 20) .Value2 Далее я Существует две петли, потому что intLstRowA отличается от intLstRowB (как правило, разница составляет от 20 до 50 лет), в противном случае я бы добавил «J» значение (от от 1 до 2) петли между листами (1) и листов (2). Любая идея? Клетки (я, 25) = .Value2 листы (2) .Cells (я, 4) .Value2 * Листы (2) .Cells (я, 19) .Value2 листы (2) .Cells (я, 26) = .Value2 Листы (2) .Cells (я, 4) .Value2 * Листы (2) .Cells (я, 20) .Value2 Далее я Существует две петли, потому что intLstRowA отличается от intLstRowB (как правило, разница составляет от 20 до 50), в противном случае я бы добавил «J» значение (от 1 до 2), чтобы петли между листами (1) и листов (2). Любая идея? Клетки (я, 25) = .Value2 листы (2) .Cells (я, 4) .Value2 * Листы (2) .Cells (я, 19) .Value2 листы (2) .Cells (я, 26) = .Value2 Листы (2) .Cells (я, 4) .Value2 * Листы (2) .Cells (я, 20) .Value2 Далее я Существует две петли, потому что intLstRowA отличается от intLstRowB (как правило, разница составляет от 20 до 50), в противном случае я бы добавил «J» значение (от 1 до 2), чтобы петли между листами (1) и листов (2). Любая идея?
clippertm
2

голосов
2

ответ
3k

Просмотры

Excel VBA Заменить текст с двумя массивами

Я хотел бы заменить значения в столбце A: A, используя массивы: Dim aValueNew () As String Dim aValueOld () As String aValueNew = Split ( "ABC, DEF, GHI",», ") aValueOld = Split (" 123456789" , «») 123 должно быть заменено ABC, 456 от DEF и так далее. Самый эффективный способ сделать это? Я изо всех сил о том, как включить функцию Replace в цикле и ваша помощь будет оценена. Что-то вроде: Для я = 0 до I = 2 Range ( "A:"). Заменить Что: = aValueOld (я), замена: = aValueNew (я), LookAt: = xlWhole, SearchOrder: = xlByRows, MatchCase: = Ложь
clippertm
2

голосов
2

ответ
83

Просмотры

Диапазон производство ошибки во время выполнения 1004 при изменении в клетки

SUMIF (листы (4) .Range ( "Е: Р"), _ листы (6) .Cells (я, 1) .Value2 _ листы (4) .Range ( "Р: Р")) * 0,01 _ «Процент») Далее я я никогда не использую .select, .Active и т.д., и я не могу понять, что вызывает ошибку. Можете ли вы помочь мне здравомыслие проверить это?
clippertm
2

голосов
3

ответ
105

Просмотры

Excel VBA Заменить массив группы

Сейчас я использую ужасно неэффективный способ для функции замены:. Dim Замена As String Dim rngRepVal как объект Set rngRepVal = Sheets ( "данные") Диапазон (Cells (1, 3), Cells (intRowLast, 3)) Замена = ActiveCell.Value rngRepVal.Replace Что: = "123", замена: = "ABC", LookAt: = xlWhole, SearchOrder: = xlByRows, MatchCase: = False rngRepVal.Replace Что: = "234", замена: = "ABC" , LookAt: = xlWhole, SearchOrder: = xlByRows, MatchCase: = False rngRepVal.Replace Что: = "456", замена: = "DEF", LookAt: = xlWhole, SearchOrder: = xlByRows, MatchCase: = False ... [ продолжается в течение 50 строк] Set rngRepVal = Nothing Я интересно, если это может быть достигнуто с массивами. Что-то вроде: Dim aWhat () As String Dim aReplacement () As String aWhat = Split ( "ABC | DEF | ГХИ | JKL", "|"
clippertm
1

голосов
2

ответ
869

Просмотры

скрипт для преобразования всех .txt содержимого файла в нижнем регистре

У меня есть около 700 .txt файлов, разбросанных в 300 каталогах и подкаталогах. Я хотел бы открыть каждый из них, преобразовать весь текст в нижний регистр, в том числе символов Unicode (например, Е в Е), а затем сохранить и закрыть их. Можете ли вы посоветовать, как это можно сделать с помощью PowerShell? Это мой собственный компьютер, и у меня есть права администратора. Я начал с ниже: Get-ChildItem C: \ TMP -Recurse -File | ForEach-Object {}, но я не уверен, что ставить между скобками ForEach-Object {}.
clippertm