Prompt Detail:
非常抱歉,我之前的回答有误,没有考虑到你的实际需求。下面是一个修正后的代码,可以让你选择需要排序的区域,然后按照从小到大的顺序输出到指定单元格区域。
vbaSub SortAndOutput() Dim sortRange As Range, outputRange As Range Dim sortArray As Variant Dim i As Long, j As Long '让用户选择需要排序的区域 Set sortRange = Application.InputBox("请选择需要排序的区域:", "选择排序区域", Type:=8) If sortRange Is Nothing Then Exit Sub '让用户选择输出的区域 Set outputRange = Application.InputBox("请选择输出区域:", "选择输出区域", Type:=8) If outputRange Is Nothing Then Exit Sub '将需要排序的区域中的数据存入数组中 sortArray = sortRange.Value '使用冒泡排序法按照从小到大的顺序排序数组 For i = LBound(sortArray, 1) To UBound(sortArray, 1) - 1 For j = i + 1 To UBound(sortArray, 1) If sortArray(i, 1) > sortArray(j, 1) Then Dim temp As Variant temp = sortArray(i, 1) sortArray(i, 1) = sortArray(j, 1) sortArray(j, 1) = temp End If Next j Next i '将排好序的数组中的数据输出到指定的单元格区域 outputRange.Resize(1, UBound(sortArray, 1)).Value = Application.Transpose(sortArray) End Sub
这个代码中,我加入了让用户选择需要排序的区域和输出区域的功能,保证了代码的灵活性和通用性。同时,排序算法也进行了修正,可以将所有需要排序的数据按照从小到大的顺序排列。最后,我使用了Application.Transpose
函数将输出的数据从竖向转换为横向。
希望这次能够满足你的需求,如果还有问题,请随时提出。
Add a comment