2010-03-08 5 views
2

"항목 번호"열을 기준으로 정렬중인 스프레드 시트가 있습니다. 항목 번호 열은 다음과 같은 값을 가지고 그래서 만약 :Excel에서 값 정렬

2.2 
2.1.b 

나는 2.1.b있는 행이 2.2 행의 전에 싶어요. 그러나 Excel의 정렬 함수는 2.2를 앞에 둡니다. 문자 수에 따라 값을 결정해야합니다.

VBA에서 열을 정렬하는 방법이 있습니까?

답변

2

이 쉽게 할 수있는 등 ... 첫 번째 자리 = 10000*NUM(SUBSTRING(A1;FIND(".", A1)) :

0

나는 10000*(first digit) + 100*(second digit) + (ascii(letter) - 'a')처럼, 간단한, 정렬 숫자 값으로 2.1.b 형식을 변환하는 공식 숨겨진 열을 추가합니다 "사용자 지정 목록"을 만든 다음 해당 목록에서 정렬하여 Excel에서 수행됩니다.

사용자 지정 목록을 사용하면 고유 한 기본 정렬 순서를 만들 수 있습니다. 새 맞춤 목록을 만들려면 "0,1,2,3,4,5,6,7,8,9,., a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z " 정렬에 추가 논리가 필요한 경우 추가 할 수 있습니다.

이 새로운 목록은 숫자에 따라 먼저 마침표 다음 문자를 정렬합니다.

처음으로 정렬 할 때 "맞춤 정렬"을 선택하고 새 목록을 선택하면 완료됩니다. 이제 정렬 할 때 데이터가 새 기준에 따라 정렬됩니다.

1

이 작업을 수행하는 코드를 사용할 필요가 없습니다 - 엑셀이 내장 된 지원 : 텍스트가 아닌 일반으로

  1. 형식 열 전체의 "숫자 형식을".
  2. 이전에 입력 한 모든 숫자 전용 항목을 다시 입력해야합니다.

(이미 기존 항목이 많은 경우) 대안 2 단계로, 당신은 원래의 열 값을 덮어 해당 열에서 TEXT 기능과 두 종류를 사용하거나 붙여 넣기 - 값을 복사 할 수 있습니다 .

Excel 2007에서 이것을 테스트했지만,이 동작이 잠시 동안 있었음을 확신합니다.

1

각 값 앞에 아포스트로피를 붙이면 Excel에 값이 숫자가 아니라 텍스트임을 나타냅니다.

적어도 그것은 이론입니다.

Excel은 숫자처럼 보이는 텍스트를 수정하려고 시도 할 때 꽤 공격적입니다. 각 셀에 텍스트 ("duh!") 형식의 숫자가 있음을 알리고 "Ignore error"를 선택해야합니다 ("실제로 숫자가 아님"옵션이 없습니다).

그런 다음 좋은 측정을 위해 숫자 형식을 "일반"에서 "텍스트"로 변경하십시오.

그런 다음 정렬하려고하면 손을 잡고 "실수"를 수정하려고 시도합니다. "숫자와 숫자를 별도로 텍스트로 정렬"을 선택하면 원하는대로 할 수 있습니다. (슬프게도, "모든 형용사 설명 문구! [interjective explicative]!"옵션이 없습니다.)

관련 문제