MS Excel, Makro menambahkan karakter tambahan


0

Menggunakan makro, saya bergabung dengan 2 set kolom terpisah dengan titik dua menggunakan fungsi sederhana, seperti =A2&":"&B2

Ini berfungsi dengan baik sampai sampai ke baris terakhir, di mana makro menambahkan dua sel tambahan masing-masing hanya dengan : di dalamnya. Sepertinya makro dipilih secara otomatis melewati bidang yang berisi data dan bergabung dengan konten sel kosong dengan :.

Saya telah meninjau makro beberapa kali dan tidak melihat apa yang menyebabkannya. Dapatkah seseorang melihat ini untuk saya?

Sub NetworkStatisticsFilter()
'

' NetworkStatisticsFilter Macro
' Format and Filter Data from Get-NetStatTCP to simplify port discovery
'

'
'Suppress alerts
'
    Application.DisplayAlerts = False

'
'Delete empty header rows that resulted from Get-NetStatTCP export
'
    Rows("1:1").Select
    Selection.Delete Shift:=xlUp
    Rows("2:2").Select
    Selection.Delete Shift:=xlUp

'
'Text-to-Columns, space-delimited
'
    Columns("A:A").Select
    Selection.TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _
    TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=True, Tab:=True, _
    Semicolon:=False, Comma:=False, Space:=True, Other:=False, FieldInfo _
    :=Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1)), _
    TrailingMinusNumbers:=True

'
'Join LocalAddress & LocalPort with a ":" then copy results and replace both columns w/a paste-value
'
    Columns("C:C").Select
    Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
    Columns("C:C").Select
    Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
    Range("D1").Select
    ActiveCell.FormulaR1C1 = "SRC"
    Range("C2").Select
    ActiveCell.FormulaR1C1 = "=RC[-2]&"":""&RC[-1]"
    Range("C2").Select
    Selection.AutoFill Destination:=Range("C2:C77")
    Range("C2:C77").Select
    Selection.Copy
    Range("D2").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
    :=False, Transpose:=False
    Columns("A:C").Select
    Range("C1").Activate
    Application.CutCopyMode = False
    Selection.Delete Shift:=xlToLeft

'
'Join RemoteAddress & RemotePort with a ":" then copy results and replace both columns w/a paste-value
'
    Columns("D:D").Select
    Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
    Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
    Range("E1").Select
    ActiveCell.FormulaR1C1 = "DST"
    Range("D2").Select
    ActiveCell.FormulaR1C1 = "=RC[-2]&"":""&RC[-1]"
    Range("D2").Select
    Selection.AutoFill Destination:=Range("D2:D77")
    Range("D2:D77").Select
    Selection.Copy
    Range("E2").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
    :=False, Transpose:=False
    Columns("B:D").Select
    Range("D1").Activate
    Application.CutCopyMode = False
    Selection.Delete Shift:=xlToLeft

'
'Auto-fit columns
'
    Columns("A:D").Select
    Columns("A:D").EntireColumn.AutoFit

'
'Auto-filter loopback address/port combinations and delete resulting rows
'
    Columns("A:A").Select
    Selection.AutoFilter
    ActiveSheet.Range("$A$1:$A$79").AutoFilter Field:=1, Criteria1:="=127.0.0.1*", Operator:=xlFilterValues
    ActiveSheet.UsedRange.Offset(1, 0).Resize(ActiveSheet.UsedRange.Rows.Count - 1).Rows.Delete
    ActiveSheet.ShowAllData

'
'Remove duplicate values in DST column
'
    Selection.AutoFilter
    ActiveSheet.Range("$A$1:$C$67").RemoveDuplicates Columns:=2, Header:=xlYes
    ActiveWindow.SmallScroll Down:=-9

'
'Allow Alerts
'
    Application.DisplayAlerts = True


End Sub

Pikiran awal saya adalah bahwa ada beberapa ruang kosong tambahan yang diimpor - Ada perbedaan antara sel kosong dan kosong di Excel. Saya akan mempertimbangkan menulis kode untuk melihat berapa banyak baris data yang Anda miliki, kemudian hanya melakukan banyak baris.
Selkie

Jawaban:


1

Anda menyalin rumus menggunakan kolom Range.AutoFill(). Jadi, jika makro membuat rumus di sel yang salah itu berarti rentang yang Anda berikan salah Anda menggunakan Range("C2:C77"), yang asli mungkin Range("C2:C76") sebagai contoh.

Anda dapat menemukan baris yang terakhir digunakan dalam rentang (di sini kolom C) menggunakan ini:

LastRow = Range("C" & Rows.Count).End(xlUp).Row

Selanjutnya saat Anda menghapus tajuk kosong Anda adalah:

(a) Menghapus baris 1

(B) Menghapus baris 2 yang merupakan baris 3 sebelum (a) dieksekusi.

Apakah itu disengaja? Jika Anda ingin menghapus baris pertama dan kedua Anda dapat melakukannya:

Rows("1:2").EntireRow.Delete

EDIT:

Karena Anda memang ingin menghapus baris 1 dan 3:

Rows(1).EntireRow.Delete
Rows(2).EntireRow.Delete

Terima kasih, saya akan memodifikasi untuk menggunakan LastRow membantu Anda termasuk. Juga, ketika data diimpor, baris 1 & amp; 3 kosong karena ekspor dari PowerShell. Saya menghapus Baris 1 & amp; bergeser ke atas, yang mengubah Baris 3 ke Baris 2 dan kemudian menghapus Baris 2. yang diperbarui. Saya akan bermain dengan Rows().EntireRow.Delete cuplikan dan lihat apakah saya dapat melompati baris 2 dan menghapus 1 & amp; 3 secara bersamaan.
Conan Stuart

Oke, jadi apakah saya kehilangan sesuatu untuk membuat paragraf dan kalimat baru di bagian komentar di sini?
Conan Stuart

Jika sengaja, maka Anda tidak dapat memiliki satu baris kode (karena ini adalah pilihan "berganda"). Lihat edit
Lich4r
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.