2017-12-05 15 views
-1

숫자 이전에 문자가 정렬되도록 부품 번호로 영숫자로 목록을 정렬하려고합니다. Excel (또는 Calc)에서도 가능합니까? 정렬 된 목록텍스트 열을 영숫자로 정렬하십시오 (숫자 앞의 문자)

AN4H16A 
AN414A 
AN42B10 
J961393 
MS21042L3 
SR22SCW20 
STD1410 
0004006 
0004006A 
0400975 
15KE51CA 
1968 
21 
4914 
560 

현재해야

0004006A 
AN42B10 
0400975 
1968 
MS21042L3 
0004006 
AN414A 
J961393 
AN4H16A 
SR22SCW20 
STD1410 
4914 
15KE51CA 
21 
560 

목록 주어진 예를 들어

, 난 단지 목록이

처럼 보이는 그래서 문자 전에 숫자를 정렬 할 수 있습니다
004006 
0004006A 
0400975 
15KE51CA 
1968 
21 
4914 
560 
AN414A 
AN42B10 
AN4H16A 
J961393 
MS21042L3 
SR22SCW20 
STD1410 

(주의 esp AN4H16AAN42B10 & AN414A보다 전에).

난 지정리스트 (추가 시도 A, B, C, ..., 7, 8, 9) 그러나 동일한 결과가 그리스트로 정렬 얻는다.

+0

'0004006A'는 '0004006'이전 또는 이후에 필요합니까? '0004006A'이 예상 결과에서 누락되었습니다. – Jeeped

+0

나는 그것을 놓쳤다. 나는 그걸 좋아할거야. – Pockets

답변

1

다음 솔루션은 LO Calc입니다. 데이터가 A1에서 A15 사이 인 경우 B1에 다음 수식을 입력합니다.

=IF(LEN($A1)<COLUMN()-1;-1;IF(CODE(MID($A1;COLUMN()-1;1))<=CODE(9);MID($A1;COLUMN()-1;1)+27;CODE(MID($A1;COLUMN()-1;1))-CODE("A"))) 

이 A1에서 문자열의 첫 번째 문자를 취득하고 0 (정렬 된 순서로 상기 제) 및되고 "A"로, 그 문자의 정렬 값을 결정 "9"36 (마지막되고 정렬 된 순서).

이제 문자열의 나머지 문자는 J15로 드래그 한 다음 채우고 다른 문자열은 J15로 내려갑니다.

그런 다음 데이터 -> 정렬로 이동하십시오. 1 정렬 키가 열 B이고, 2 정렬 키 컬럼 C, 등으로 다르게

sort menu

J.

통해 A15 통해 A1을 선택하고 Python macro 추종 주행.

import uno 

def custom_sort(): 
    oSelect = XSCRIPTCONTEXT.getDocument().getCurrentSelection() 
    rowTuples = oSelect.getDataArray() 
    rowTuples = sorted(rowTuples, key=letters_then_numbers) 
    oSelect.setDataArray(rowTuples) 

def letters_then_numbers(rowTuple): 
    strval = str(rowTuple[0]) 
    sresult = "" 
    for c in strval: 
     if c in (str(i) for i in range(10)): # if character is a number 
      c = chr(ord('z') + int(c))  # then order it after z 
     sresult += c 
    return sresult 

g_exportedScripts = custom_sort, 
+0

수식을 가져올 수 없었습니다 (아마도 내 문서와 일치하도록 셀 참조를 변경하는 것을 놓쳤을 수 있습니다). 그러나 파이썬 매크로는 그 트릭을 수행했습니다. 고맙습니다! – Pockets