Για το ζητούμενο, ο πιο κάτω κώδικας είναι αρκετός.
Κώδικας:
Sub ExtractInts()
Dim lrow As Long
lrow = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
Dim i As Long
Dim cellVal As Double
Dim intPart As Long
Dim k As Long
Application.ScreenUpdating = False
ActiveSheet.Range("b1:b" & lrow).ClearContents
For i = 1 To lrow
cellVal = ActiveSheet.Range("a" & i).Value
intPart = Int(cellVal)
If intPart = cellVal Then
k = k + 1
ActiveSheet.Range("b" & k).NumberFormat = ActiveSheet.Range("a" & i).NumberFormat
ActiveSheet.Range("b" & k).Value = ActiveSheet.Range("a" & i).Value
End If
Next i
' ActiveSheet.Sort.SortFields.Clear
' ActiveSheet.Sort.SortFields.Add Key:=Range("b1"), _
' SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
' xlSortTextAsNumbers
' With ActiveSheet.Sort
' .SetRange Range("b1:b" & lrow)
' .Header = xlNo
' .MatchCase = False
' .Orientation = xlTopToBottom
' .SortMethod = xlPinYin
' .Apply
' End With
End Sub
Λειτουργεί, στο ενεργό φύλλο (ActiveSheet).
Γιά άλλο φύλλο, αντικαταστήστε με το κωδικό του όνομα.
Η ταξινόμηση (αύξουσα), είναι απενεργοποιημένη (ενεργοποιήστε αν χρειάζεται).
Για ταξινόμηση φθίνουσα, το κόκκινο να γίνει xlDescending.
Πριν ξεκινήσει, καθαρίζει την Β στήλη.
Η τελευταία γραμμή της Α, είναι πάντα μεγαλύτερη (το πολύ ίση) με της Β.
Για το λόγο αυτό, δεν χρειάζονται (στο ζητούμενο αυτό και μόνο), δύο μεταβλητές lrow.
Το NumberFormat του αριθμού που θα αντιγραφεί (Β),
είναι ίδιο με το NumberFormat του πρωτότυπου (Α).