Я просматриваю несколько тысяч писем, проверяющих ошибки. Код синтаксического анализа выгружает результат в excel unsorted в 4 столбца. A: Hits, B: Total, C: Percentage, D: User.Как сортировать столбцы excel из Outlook через VBA. Код excutes не сортируется
Это прекрасно работает. Однако я хочу сортировать эти данные по общим хитам (или процентам) без необходимости делать это вручную в excel. Это связано с тем, что это создает отчет с несколькими другими группами полей, которые я хочу сортировать по каждому набору.
Проблема в том, что я не придумал, способный к фактическому сортировке из перспективы. Код выполняется без ошибок, но ничего не происходит. Я смог использовать следующее, чтобы успешно сортировать макрос excel.
Sub test()
With ActiveSheet
Call .Range("A3:D30").Sort(Key1:=Range("A3"), Order1:=xlDescending, Header:=xlNo)
End With
End Sub
я затем помещаюсь только телефонная линия в мою внешнем виде УВУ, определяются все (Excel Object ссылается библиотека)
With xlSheet
If i > 0 Then hitp = Round(hits/i * 100, 1) Else hitp = "0"
Dim vstr As Variant
Dim temph As String
j = 2
.Range("A1:D1").Merge
.Range("A1:D1").Value = "Basic Errors"
.cells(j, 1).Value = "Total Hits:"
.cells(j, 2).Value = "Total Sent:"
.cells(j, 3).Value = "Percentage:"
.cells(j, 4).Value = "Agent:"
For Each vstr In userhit.Keys()
j = j + 1
temph = userhit(vstr)
If temph = "" Then temph = "0"
.cells(j, 1).Value = temph
.cells(j, 2).Value = userhit(vstr) + userclean(vstr)
.cells(j, 3).Value = Round(userhit(vstr)/(userhit(vstr) + userclean(vstr)) * 100, 1) & "%"
.cells(j, 4).Value = vstr
DoEvents
Next
Call .Range("A3:D30").Sort(Key1:=Range("A3"), Order1:=xlDescending, Header:=xlNo)
End With
Я использую словари (14 из них), чтобы отслеживать различные вещи поэтому сортировка их в vba до демпинга была бы намного более утомительной, хотя, возможно, выполнимой, если я отчаялся. К сожалению, это ничего не делает в Excel, несмотря на работу без ошибок и работу, если я скопирую его в макрос Excel.
Я также видел другой способ делать вид, как показано на этом посту https://stackoverflow.com/questions/22220127/sorting-excel-range-in-class-module-from-outlook-or-access-vba
With xlSheet.Sort
.SetRange Range((LeftColStr & RowStart & ":" & RightColStr & RowEnd))
.Header = xlGuess
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
Но в конце концов, что не работает для него или меня, когда я пытался. Поэтому я переключился на этот метод, считая, что это будет проще, но это не так. Код работает, если он находится в макросе excel, но, несмотря на выполнение в Outlook, он не работает. Любая помощь будет широко присвоена.
Вы пытались ввести правильный код: 'Key1: =. Range (" A3 ")' (точка перед диапазоном)? Вам все равно придется делать эту модификацию, даже если она не устраняет проблему. –
@ A.S.H Думаю, вы нашли проблему. Это работает в Excel без "." поскольку он по умолчанию соответствует действующей таблице. Мне придется подождать, пока я вернусь к работе завтра, чтобы проверить это. Я буду обновлять здесь, если это сработает. –
он работает для меня, если вы используете '.Range (« A3: D30 »). Sort Key1: =. Range (« A3 »), Order1: = xlDescending, Header: = xlNo', то есть: удалить' Call', удалить скобки и добавить эту точку перед появлением 2-го диапазона – user3598756