Буквено-цифрове сортування в Excel


11

Чи можливо в Excel сортувати буквено-цифрові знаки від a-1, a-2, a-3 ... a-123 замість a-1, a-10, a-100, a-11?

Сортування від найдавнішого до найновішого або через AZ, безумовно, не дасть мені бажаного результату. Я спробував форматувати комірки як число, але це не допомогло.

Я застряг.


Привіт @beccabecca, прийміть відповідь, оскільки це не лише корисно для людей, які мають подібне до вас питання, але також нагороджує тих, хто працював над тим, щоб запропонувати вам рішення. Ура!
Девід Майкл Грегг

Відповіді:


4

Результат

Користувач @ fixer1234 має рацію, ймовірно, ви хочете використовувати рядкові функції. Ось один із способів зробити це.

Крок 1

[Оновлено]

У стовпці "Числа" виділіть діапазон, а потім розділіть текст за дефісом: зробіть ...

Data> Text to Columns> Delimited> Next> Other: ->Finish

Зверніть увагу, що вам потрібен дефіс ( - ) у Other:текстовому полі. І переконайтеся, що сусідній стовпець (праворуч) порожній перед цим, щоб не перезаписати важливі дані.

Ви також можете скористатися цією функцією, щоб отримати число з стовпця A:

=RIGHT(A2,LEN(A2)-SEARCH("-",A2))

Крок 2

Тепер, що ми будемо робити на наступному кроці, як ви можете зрозуміти із скріншоту вище, - додавати нулі до початку кожного числа, що має менше цифр, ніж найбільше число. Це дозволить вам сортувати ці числа за вашим бажанням.

Але спочатку нам потрібно зробити трохи з'ясування фактів. Якщо ви зможете легко сказати, що таке найбільша кількість, то просто порахуйте цифри у цій найбільшій кількості - це буде число нулів, яке ви хочете використовувати в нашій наступній функції. Є ще один спосіб визначити найдовше число, без необхідності рахувати цифри найбільшого числа вручну.

[ОНОВЛЕННЯ] Ви можете використовувати таку функцію (хоча поки що ми не зовсім знаємо чому ) для визначення найдовшого числа:

=MAX(INDEX(LEN(C2:C14),,1))

Крім того, ви можете просто ввести наступну формулу в комірку (ви бачите це на зображенні вище як осередок, виділений помаранчевим кольором), але замість того, щоб просто натиснути ENTERклавішу, щоб встановити клітинку, натисніть гарячу клавішу CTRL-SHIFT-ENTER. Це змінить характер функції, перетворивши її у формулу масиву , без необхідності грати з такими функціями, як INDEX().

=MAX(LEN(C2:C14))

(Переконайтеся, що діапазон точний для конкретної електронної таблиці, яку ви використовуєте.)

Після натискання CTRL-SHIFT-ENTERвміст комірки зміниться на це, але введення цього тексту вручну нічого не зробить:

{=MAX(LEN(C2:C14))}

Однак ти хочеш це зробити добре. Просто визначте, скільки цифр становлять найбільшу кількість у вашому списку: "1" звичайно має 1 цифру, "10" - 2 цифри, "100" - 3 цифри тощо.

Крок 3

Нарешті, у стовпці "Розгорнути" ця функція перетворить цифри зі стовпця "Числа" в текст із кількістю попередніх нулів, яку ви визначили, що слід використовувати на кроці 2.

=TEXT(C2,"000")

Переконайтесь, що ви ставите лапки навколо нулів.

Якщо найбільше число має 8 цифр, то ваша функція буде виглядати приблизно так:

=TEXT(C2,"00000000")

2

Просте рішення - використовувати функції рядків, щоб розмістити числові значення в новому стовпчику як число. Потім сортуйте цей стовпець. Ви не вказали, як можуть змінюватися значення або як вони розташовані, але приклад:

Припустимо, префікс "a-" ніколи не змінюється, записи знаходяться в колонці A, починаючи з другого ряду, і колонка B доступна. У B2 ви поставите щось на зразок: = value (mid (a2,3, len (a2) -2)), а потім скопіюйте формулу за потребою. Для сортування виділіть обидва стовпці та сортуйте B.

Якщо можуть бути інші префікси, скажімо, b-, c- тощо, аналогічно розділіть текстову частину на інший стовпчик. Потім сортуйте текстовий стовпець як перший стовпчик сортування, а стовпчик числа - як другий.

Все, що ви виділите, буде сортоване відповідно до стовпців сортування.

Щоб пояснити рядкові функції, почніть з функції mid, яка витягує рядок символів з рядка символів. mid (a2,3, len (a2) -2) дивиться на текст у a2, починається з третього символу (перша цифра передбачає, що всі префікси є "a-"), а потім приймає кількість символів, тобто на два менше числа в початковому тексті (довжина оригінального тексту мінус символи "a-"). Функція значення потім перетворює отриманий результат у число замість рядка числових символів.


Вибачте, ви могли б пояснити трохи детальніше? Що таке строкова функція?
бекабекка

Отже, для B3 було б = значення (середина (a3,3, len (a3) ​​-2))? Чи правий я? Тоді так буде і так далі? Вибачте, я сподіваюся, що я не задавав тупих питань ...
beccabecca,

Ти зрозумів. Після створення формули у B2, ви можете просто скопіювати її, виділити клітинки B на стільки рядків, скільки вам потрібно, і вставити. Це автоматично змінить посилання на комірки, щоб відповідати рядок за рядком.
fixer1234

2

У мене є такі дані:

[Student Name]  [Regn. No (AlphaNum)]    [Test Score]

Lisa            DD38                      90

Aletta          BC36                      85

Ava             AB40                      95

Sunny           BB34                      91

Sofia           CD36                      89

Johnny          CM07                      80

Початкові дані мають бути відсортовані за AlphaNumeric String

Я хочу, щоб студенти та позначки були розташовані відповідно до їх реєстраційних номерів, які є буквено-цифровими рядками. Кінцевий результат має бути таким:

[Student Name]  [Regn. No (AlphaNum)]    [Test Score]

Ava             AB40                      95

Sunny           BB34                      91

Aletta          BC36                      85

Sofia           CD36                      89

Johnny          CM07                      80

Lisa            DD38                      90

Кінцевий результат повинен виглядати приблизно так

Як:

Кроки для перетворення буквено-цифрових рядків в чисті числа

Хоча наведений вище знімок є очевидним, проте кроки такі:

  1. Витягніть алфавітну частину в стовпчик, використовуючи =LEFT(B4, 2)як формулу, де '2' показує кількість алфавітів у рядку і починаються з моїх рядків B4.

  2. Призначте номер цієї алфавітної частини за допомогою =COLUMN(INDIRECT(E4&1))

  3. Витягніть числову частину реєстраційного номера, використовуючи =RIGHT(B4,2)формулу. Тут "2" - це "ні". чисел у рядку.

  4. З’єднайте дві частини в 2 і 3

  5. Перетворіть їх у "чисті" числа за допомогою =VALUE(H4)

  6. Скопіюйте останній стовпець у вихідну таблицю та скористайтеся опцією Вставити як "Значення"

    Початкові дані додаються буквено-цифровими рядками, перетвореними на числа

  7. Тепер відсортуйте відповідно до останнього стовпця та оберіть "Розгорнути вибір"

    Сортування 1

    Сортування 2

  8. Готово !!!

    Кінцевий результат

Важливо: Підказка -> Поєднайте кроки від 1 до 5 за допомогою =VALUE(CONCATENATE(COLUMN(INDIRECT(LEFT(B4,2)&1)),RIGHT(B4,2)))


Убік: як і в цьому прикладі, всі реєстраційні номери мають однакову довжину, непогано використовуючи провідні нулі для числової частини : чи не вийде звичайний сортування з поля?
Ар’ян
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.