애들센스


엑셀 숫자 오름차순 정렬 질문드립니다 오피스/VBA/Office.JS

모 커뮤니티에 갔다가 다음과 같은 질문이 있길래 답변을 해주고 블로그로 옮겨 봅니다
안녕하세요. 엑셀 숫자 오름차순에 질문이 있어요..
엑셀 숫자가 오름차순을 하면

2018-2-100
2018-2-1000
2018-2-1001
2018-2-101

이렇게 되는데요ㅜㅜㅠ

2018-2-100 다음에 101이 나왔으면 좋겠거든요..
ㅠㅠㅠㅠ방법이 없을까요..?
감사합니다...도와주세요..

핵심은 데이터 길이가 같은 것끼리 정렬을 하게 해주는 것인듯 하다. 그래서 컬럼을 하나 추가해 LEN()함수로 길이를 구한 후, 1차 정렬기준으로 길이, 2차 정렬기준으로 데이터를 해주면 길이가 같은 데이터끼리 정렬되어 전체적으로 원하는 결과가 나온다.

덧글

  • dex 2019/07/10 15:40 # 삭제 답글

    right(len() - 7)을 사용하면 마지막 수자만 남으니, 이 값으로 정렬하면 됩니다.
  • 우왕 2019/07/11 08:13 # 삭제 답글

    -기준으로 분할한뒤에 정렬하는게 나을듯 싶어요
    중간 숫자가 자릿수가 늘어나면 같은 문제 다시 발생할듯
  • 타임버드 2019/07/11 08:47 # 답글

    두 분의 해결책도 생각해보았는데, "2018-2-"가 공통분모라서 나머지만 가지고 정렬해도 되지만, 만일 그부분이 제 각각인 상황에서 셀 내용을 분리해두면 정렬할때 분리된 두 개의 데이터가 따로 따로 놀지 않을 까 싶어요. 만능 해결책은 딱히 생각안나네요.
  • 우왕 2019/07/12 16:18 # 삭제 답글

    조금 멍청한 질문 하나 올립니다
    본문과는 관계 없고요
    요즘 varptr을 사용해서 값 검증을 하는 걸 좀 해보고 있는데
    상수중에 msotrue랑 true는 varptr로 보니 주소값이 다른데도
    ? msotrue=true >> true가
    vbok는 msotrue와 varptr은 같은데
    ? vbok=msotrue >> false 가 뜨더라구요
    혹시 이유 아시는지...ㅠ
  • 타임버드 2019/07/12 16:33 #

    msoTrue, True, vbOk의 값을 찍어보면 -1, True, 1로 나옵니다. 실제 msoTrue와 vbOk는 Long형 정수타입이구, True는 Boolean타입입니다. 비교연산에서 정수값 0은 false이고 0이아닌 값은 true입니다. 그래서 msoTrue=-1이므로 True과 같은 거구요, vbOk는 1이라서 당연히 -1인 msoTrue와 다르죠. 주소값은 의미가 없습니다. 메모리는 고정된 것이 아니라서 일반적으로 프로그램 실행할때 마다 할당된 메모리주소는 달라지니까요...
  • 우왕 2019/07/13 21:07 # 삭제

    아... 그렇군요.. 자세한 답변 감사합니다


댓글 입력 영역