按字母数字排序文本列(数字前的字母)

时间:2017-12-05 20:06:38

标签: excel sorting openoffice-calc alphanumeric libreoffice-calc

我试图按照部件号按字母顺序对库存清单进行排序,以便在数字之前对字母进行排序。这可以在Excel(或Calc)中使用吗?

例如,给定列表

Foo = EDATE(Dates[EventDate], 10)

排序列表应为

var searchValue = $('#myTextbox').val();

function checkSearchChanged() {
    var currentValue = $('#myTextbox').val();
    if ((currentValue) && currentValue != searchValue && currentValue != '') {
        searchValue = $('#myTextbox').val();
       console.log(searchValue)
    }
    setTimeout(checkSearchChanged, 0.1);
}

$(function () {
    setTimeout(checkSearchChanged, 0.1);
});

目前,我只能在字母前对数字进行排序,因此列表看起来像

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

(注意esp AN4H16A AN42B10 & AN414A 之后,而不是之前。)

我尝试添加自定义列表(A,B,C,...,7,8,9),但按列表排序的结果相同。

1 个答案:

答案 0 :(得分: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中字符串的第一个字符,然后确定该字符的排序值,“A”变为0(排序顺序中的第一个),“9”变为36(排序顺序中的最后一个)。

现在,拖动并填充到J15以获取字符串中的其余字符,然后向下移动到J15以获取其他字符串。

然后,转到数据 - &gt;排序。排序键1是B列,排序键2是C列,依此类推.J。

sort menu

或者,选择A1到A15,然后运行以下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,