2017-10-25 3 views
0

알파 숫자 주소의 정수 값이 홀수 값의 순서로 정렬되고 짝수 값이 같은 유형의 데이터가 정렬되도록 데이터 행을 정렬하려고합니다. 주소의 정수가 짝수 또는 홀수 인 경우VBA에서 홀수 짝수 정렬

- 찾아
이 - 추가가 EVEN 또는 ODD 점에서 셀에 대응하는 행을 주소 :

내가 (반) 일에 가지고있는 유일한 방법이 있었다
는 ODD 또는 EVEN 일루 지정

이 접근하여 데이터 -Filter 매크로
은 이상적이지 않다. 필터링을 사용하지 않고도 행을 재정렬하는 데 관심이 있습니다.

다음은 정렬 방법에 대한 예입니다.

UNSORTED   SORTED 
Address Type  Address Type 
1.1p A   1.1p A 
1.2p A   1.2p A 
1.3p A   1.3p A 
1.4p A   1.4p A 
2.1p A   3.1p A 
2.2p A   3.2p A 
2.3p A   3.3p A 
2.4p A   3.4p A 
3.1p A   5.1p A 
3.2p A   5.2p A 
3.3p A   5.3p A 
3.4p A   5.4p A 
4.1p A   2.1p A 
4.2p A   2.2p A 
4.3p A   2.3p A 
4.4p A   2.4p A 
5.1p A   4.1p A 
5.2p A   4.2p A 
5.3p A   4.3p A 
5.4p A   4.4p A 
6.1p B   7.1p B 
6.2p B   7.2p B 
6.3p B   7.3p B 
6.4p B   7.4p B 
7.1p B   9.1p B 
7.2p B   9.2p B 
7.3p B   9.3p B 
7.4p B   9.4p B 
8.1p B   6.1p B 
8.2p B   6.2p B 
8.3p B   6.3p B 
8.4p B   6.4p B 
9.1p B   8.1p B 
9.2p B   8.2p B 
9.3p B   8.3p B 
9.4p B   8.4p B 
10.1p B   10.1p B 
10.2p B   10.2p B 
10.3p B   10.3p B 
10.4p B   10.4p B 

VBA를 처음 사용합니다. 제안 사항에 대해 미리 감사드립니다.

+1

당신은 줄 필요가 도우미 열에서에 전화를 넣어 우리에게 더 구체적인. 데이터가 저장되는 데이터 구조/형식은 무엇입니까? 코드 등을 보겠습니다. – ApolloSoftware

답변

0

당신이 정렬에 사용할 수있는 값을 저장할 수있는 도우미 열을 만들어야한다고 생각합니다.

기본 아이디어는 "주소"열에서 숫자 값을 추출하여 짝수인지 확인하고 예인 경우 높은 값 (예 : 1000)을 곱하여 가능한 가장 높은 가능성보다 높다는 뜻입니다 값.

수식 중 하나를이 셀에 사용할 수 있습니다. 그러나 조금 복잡해 보입니다. 데이터 셀 A2에서 시작한다고 가정 :

Function SortVal(s As String) As Double 
    SortVal = Val(s) 
    If Int(SortVal) Mod 2 = 0 Then SortVal = SortVal * 1000 
End Function 

=VALUE(LEFT(A2, SEARCH("p", A2, 1)-1))*IF(ISODD(VALUE(LEFT(A2, SEARCH("p", A2, 1)-1))),1,1000) 

또는 쓰기 작은 UDF 및

=SortVal(A2)