문자열을 쉼표로 구분하여 Excel의 수식을 사용하여 셀 내의 값을 정렬 할 수 있습니까?Excel : 셀 내에서 어떻게 정렬합니까?
2
A
답변
6
해결책은 다음과 같습니다 (here에서 도난당한 quicksort 코드). 버튼을 SortVals
매크로에 연결하면 단추를 클릭하기 만하면 활성 셀에서 쉼표로 구분 된 값을 정렬합니다.
Option Explicit
Public Sub SortVals()
Dim i As Integer
Dim arr As Variant
arr = Split(ActiveCell.Text, ",")
' trim values so sort will work properly
For i = LBound(arr) To UBound(arr)
arr(i) = Trim(arr(i))
Next i
' sort
QuickSort arr, LBound(arr), UBound(arr)
' load sorted values back to cell
Dim comma As String
comma = ""
ActiveCell = ""
For i = LBound(arr) To UBound(arr)
ActiveCell = ActiveCell & comma & CStr(arr(i))
comma = ","
Next i
End Sub
Public Sub QuickSort(vArray As Variant, inLow As Long, inHi As Long)
Dim pivot As Variant
Dim tmpSwap As Variant
Dim tmpLow As Long
Dim tmpHi As Long
tmpLow = inLow
tmpHi = inHi
pivot = vArray((inLow + inHi) \ 2)
While (tmpLow <= tmpHi)
While (vArray(tmpLow) < pivot And tmpLow < inHi)
tmpLow = tmpLow + 1
Wend
While (pivot < vArray(tmpHi) And tmpHi > inLow)
tmpHi = tmpHi - 1
Wend
If (tmpLow <= tmpHi) Then
tmpSwap = vArray(tmpLow)
vArray(tmpLow) = vArray(tmpHi)
vArray(tmpHi) = tmpSwap
tmpLow = tmpLow + 1
tmpHi = tmpHi - 1
End If
Wend
If (inLow < tmpHi) Then QuickSort vArray, inLow, tmpHi
If (tmpLow < inHi) Then QuickSort vArray, tmpLow, inHi
End Sub
2
문자열을 분할하고 값을 정렬하고 정렬 된 값에서 새 문자열을 만들어야합니다.
1
이 질문을 받았을 때 LAselect 프레임 워크 애드 인은 일반인에게 공개되지 않았습니다. 하지만 지금은 그렇습니다. 그리고 이런 종류의 문제를 우아한 방식으로 해결합니다.
VBA에 '솔루션'코드를 몇 줄만 입력하면 원하는 항목을 정렬하거나 주문할 수 있습니다.
쉼표로 분리 된 값을 얻으려면 VBA의 Split() 함수를 사용하십시오. 그런 다음 셀에있는 것과 별개의 값을 가질 수 있습니다. splitvalues (1) FIRSTNAME과 splitvalues (0) LASTNAME 경우, 추가 기능은 다음과 같이 당신의 단일 셀 뭔가 정렬 할 수 있습니다 : LA_ISEQUAL에서
Dim splitvalues1 as Variant, splitvalues2 as Variant
While LAselect(ControlSignal, BreakOutBox)
valcol = BreakOutBox.Pins.ColData
splitvalues1 = Split(BreakOutBox.Data.VBArray(BreakOutBox.Pins.RowSource, valcol), ",")
splitvalues2 = Split(BreakOutBox.Data.VBArray(BreakOutBox.Pins.RowDestin, valcol), ",")
If splitvalues1(0) > splitvalues2(0) Then
ControlSignal = LA_ISLARGER
ElseIf splitvalues1(0) < splitvalues2(0) Then
ControlSignal = LA_ISSMALLER
Else
ControlSignal = LA_ISEQUAL
End If
Wend
당신이 splitvalues1을 테스트 할 것을 (1) 등으로 이름에 중복 성을 더 정렬하십시오.
내 추가 기능에 대해 셀 수없이 많은 셀 구분 기호로 구분 된 필드를 넣거나 결정에 포함시킬 다른 셀을 지정하는 것이 중요하지 않다는 것을 분명히 알았습니까? 두 가지 완전한 레코드가 '솔루션'코드로 전달되므로 정렬하려는 속성이 무엇이든 완전히 자유롭게 사용할 수 있습니다.
내 데모는 www.liquorice-allsorts.com에서 찾으실 수 있습니다.
관련 문제
- 1. Excel : 셀 색상 얻기
- 2. 다음 목록을 어떻게 정렬합니까?
- 3. NSMutableArray를 어떻게 정렬합니까?
- 4. 파이썬이 목록을 어떻게 정렬합니까?
- 5. 배열에서 객체를 어떻게 정렬합니까?
- 6. 모든 DataGrid를 어떻게 정렬합니까?
- 7. DataGrid를 어떻게 정렬합니까?
- 8. NSSumber를 NSSortDescriptor와 어떻게 정렬합니까?
- 9. f.select를 어떻게 정렬합니까?
- 10. NSMutableArray를 어떻게 정렬합니까?
- 11. Jinja2에서 어떻게 목록을 정렬합니까?
- 12. Excel 매크로로 셀 범위 찾기
- 13. 함수가 호출 된 Excel 셀
- 14. AdvancedDataGrid 내에서 셀 갭을 제거합니다.
- 15. C에서 Excel 셀 값에 액세스
- 16. Excel 2007에서 조건부로 셀 연결
- 17. Open XML Excel 셀 서식
- 18. Excel 셀 서식 지정 문제
- 19. JasperReport 리포트의 Excel 셀 포맷
- 20. VB6 ComboBox에서 텍스트를 어떻게 정렬합니까?
- 21. MySQL에서 유사도로 어떻게 정렬하고 정렬합니까?
- 22. 어떻게 사전 식으로 ArrayList를 정렬합니까?
- 23. 데이터베이스가 중국어 문자를 어떻게 정렬합니까?
- 24. 어떻게 컨트롤을 TTTableControlItem에서 오른쪽 정렬합니까?
- 25. Perl에서 어떻게 병렬 배열을 정렬합니까?
- 26. PHP에서 다차원 배열을 어떻게 정렬합니까?
- 27. 파이썬은 튜플 목록을 어떻게 정렬합니까?
- 28. 이 NSArray의 요소를 어떻게 정렬합니까?
- 29. hql에서 연결된 목록을 어떻게 정렬합니까?
- 30. PHP와 SQL 배열을 어떻게 정렬합니까?
'ActiveCell = ActiveCell & comma & CStr (arr (i))'... 그냥'Join'을 사용하십시오! –