首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

crystal report公式按数字排序字符串

Crystal Report是一款强大的报表生成工具,可以帮助开发人员创建丰富、交互式的报表。在Crystal Report中,公式是一种非常重要的功能,可以用于计算、转换和处理报表中的数据。

按数字排序字符串是指将包含数字和字母的字符串按照数字的大小进行排序。在Crystal Report中,可以使用公式来实现按数字排序字符串的功能。以下是一个示例公式:

代码语言:txt
复制
// 输入参数:字符串列表
// 返回值:按数字排序后的字符串列表
Function SortStringList(strings: Array[String]): Array[String]
    Local NumberVar i;
    Local NumberVar j;
    Local StringVar temp;
    Local NumberVar num1;
    Local NumberVar num2;
    
    For i := 1 to UBound(strings) do
        For j := i + 1 to UBound(strings) do
            // 提取字符串中的数字部分
            num1 := ToNumber(ExtractNumeric(strings[i]));
            num2 := ToNumber(ExtractNumeric(strings[j]));
            
            If num1 > num2 then
                // 交换字符串位置
                temp := strings[i];
                strings[i] := strings[j];
                strings[j] := temp;
            End If;
        Next j;
    Next i;
    
    // 返回排序后的字符串列表
    SortStringList := strings;
End Function;

// 提取字符串中的数字部分
Function ExtractNumeric(str: String): String
    Local StringVar result := "";
    Local NumberVar i;
    
    For i := 1 to Length(str) do
        If IsNumeric(Mid(str, i, 1)) then
            result := result + Mid(str, i, 1);
        End If;
    Next i;
    
    ExtractNumeric := result;
End Function;

上述公式定义了一个名为SortStringList的函数,该函数接受一个字符串列表作为输入参数,并返回按数字排序后的字符串列表。在函数内部,使用了两层循环来比较字符串中的数字部分,并根据数字的大小进行交换排序。同时,还定义了一个名为ExtractNumeric的函数,用于提取字符串中的数字部分。

在Crystal Report中,可以将该公式应用于报表中的字段或变量,以实现按数字排序字符串的功能。例如,可以创建一个公式字段,使用SortStringList函数对字符串列表进行排序,并将排序后的结果显示在报表中。

腾讯云提供了一系列与云计算相关的产品和服务,其中包括云服务器、云数据库、云存储等。您可以根据具体需求选择适合的产品来支持您的云计算应用。具体产品介绍和相关链接如下:

  1. 云服务器(CVM):提供可扩展的云服务器实例,支持多种操作系统和应用场景。了解更多:云服务器产品介绍
  2. 云数据库MySQL版(CDB):提供高性能、可靠的云数据库服务,适用于各种规模的应用。了解更多:云数据库MySQL版产品介绍
  3. 云对象存储(COS):提供安全、可靠的对象存储服务,适用于存储和管理各种类型的数据。了解更多:云对象存储产品介绍
  4. 人工智能(AI):提供丰富的人工智能服务,包括图像识别、语音识别、自然语言处理等。了解更多:人工智能产品介绍

请注意,以上链接仅供参考,具体产品选择应根据实际需求进行评估和决策。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Excel公式技巧10: 从字符串中提取数字——数字位于字符串开头

本文主要研究从字符串开头提取数字的技术: 1. 这些数字是连续的 2. 这些连续的数字位于字符串的开头 3....COUNT函数忽略错误值,得到: =0+LEFT(A1,3) 结果为: 123 下面,尝试一个公式2可不可以处理除字符串开头外其他位置还存在数字的情形,例如如果单元格A1中的数据是“123ABC45”,...原因是字符串的末尾有其他数字,因此COUNT函数统计的数字个数大于字符串开头的数字个数,这样LEFT取值仍是字母数字混合的字符串。...;FALSE},0)-1) 转换为: =0+LEFT(A1,4-1) 转换为: =0+LEFT(A1,3) 结果为: 123 在公式3中,MATCH/ISNUMBER组合确保字符串中除开头以外的数字不会影响最终的结果...3一样,字符串中除开头有数字外其它部位存在数字时不影响结果。

3.1K20
  • Excel公式技巧11: 从字符串中提取数字——数字位于字符串末尾

    上篇文章讲解了提取位于字符串开头的数字公式技术,本文研究从字符串开头提取数字的技术: 1. 这些数字是连续的 2. 这些连续的数字位于字符串的末尾 3....因此,上述公式转换为: =0+MID("ABC456",MIN({7,19,13,14,4,5,6,21,11,17}),LEN("ABC456")) MIN函数返回字符串数字开始的位置4,因此,上述公式转换为...这样,上述公式转换为: =0+MID("ABC456",4,6) 得到结果: 456 下面我们看看如果单元格A1中的字符串包含其它数字例如123ABC456,公式1是否有效。...LOOKUP与RIGHT 公式2: =-LOOKUP(0,-RIGHT(A1,ROW(INDIRECT("1:"& LEN(A1))))) 这个公式与上一篇文章《Excel公式技巧10:从字符串中提取数字...——数字位于字符串开头》中的公式1相似,只是使用RIGHT函数代替了LEFT函数。

    2.7K20

    Excel经典公式:提取位于字符串后面的数字

    标签:公式与函数 有时候,可能有一个数据集,单元格中包含着文本和数字,其中数字字符串的右侧,如下图1所示,你希望删除所有文本,而只保留数字。...图1 下面的公式将删除数字左侧的所有文本,因此只剩下字符串中的数字部分。...图2 上面的公式移除了单元格中左侧的文本部分,只剩下右侧的数字公式中: FIND({0,1,2,3,4,5,6,7,8,9},A2) 将在单元格中查找这10位数字,并返回这些数字的位置组成的数组。...此时,IFERROR公式在单元格中找到数字时将返回一个数字,如果找不到数字,则将返回该单元格中字符串的长度(使用LEN公式完成)。...现在,知道了数字在单元格中的起始位置,接着需要知道需要从左侧删除多少个字符。为此,使用LEN函数来计算单元格中字符串的总长度,并从中减去刚才得到的结果,这样就可以知道左侧有多少个文本字符。

    2.7K40

    Excel公式:删除字符串中的所有数字

    标签:Excel公式,SUBSTITUTE函数 有时候,可能是由于输入的原因,也可能是由于从网上直接下载的数据,数据中的字符串中夹杂着一些数字,而我们又不想要这些数字,因此,需要从字符串中删除这些数字。...例如,字符串“My2017Excel2022”删除其中的数字后,成为“MyExcel”。 使用什么公式能够达到我们的目的呢?...这样,假设字符串在单元格B2中,我们可以编写出下面的公式: =SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE...,但基本原理很简单,就是使用SUBSTITUTE函数依次替换字符串中的数字1、2、3、4、5、6、7、8、9、0。...由于有十个数字,因此使用了SUBSTITUTE函数10次。 幸好只有10个数字,只需替换操作10次,如果更多的话,公式岂不很长。不知道有没有更简单的通用公式,期待朋友们一起探讨。

    2.9K30

    Excel公式技巧46: 出现的频率依次提取列表中的数据并排序

    导语:在《Excel公式技巧44:对文本进行排序》中,我们使用COUNTIF函数并结合SMALL/MATCH/INDEX函数对一系列文本进行排序,无论这些文本中是否存在重复值。...在《Excel公式技巧45:出现的频率依次提取列表中的数据》中,我们使用MATCH/ISNA/IF/MODE/INDEX函数组合提取一系列文本中不重复的数据并按出现的频率且原数据顺序来放置数据。...本文将在此基础上,提取不重复的数据,并按出现的次数和字母顺序排序数据。...,如果有多个数字出现的次数最多且相同,则将其全部返回。...因此,上述公式代入中间结果后为: MODE.MULT({5,5;1,1;6,6;2,2;6,6;2,2;6,6;2,2}) 有两个数字出现的次数最多,返回: {6;2} 6.

    8.2K20

    Excel公式练习86:找出字符串中最大的数字

    本次的练习是:从一个由文本和数字组成的文本字符串中,提取出连续最长的数字。如下图1所示,在单元格B2中包含一个由文本和数字组成的字符串,很显然,其最长数字是9367。 ?...图1 如何使用公式获得结果? 解决方案 在单元格C2中输入数组公式: =MAX(IFERROR(MID(B2,ROW(A1:A50),COLUMN(A1:Z1))*1,"")) 结果如下图2所示。...图2 公式解析 在公式中,使用了MID函数,通常,我们使用MID函数如下: =MID(B2,5,2) 返回单元格B2中从第5个字符开始的2个字符,在图1的示例中,返回“2E”。...公式中共3个部分:单元格引用,起始位置,要提取的字符数。 然而,现在要从单元格B2内的每个起始位置提取多个值! 在上面解决方案的公式中: ROW(A1:A50) 创建了50个起始位置。...图3 由于我们仅需要纯数字,例如6、62、622,等等。于是,对MID函数获得的数组乘以1,这样,数字文本转换成数字,而其它则为错误,如下图4所示。 ?

    1.2K40

    用一行Python代码实现字符串数字大小排列字符串顺序

    熟悉编程的朋友应该不难理解,为什么字符串排序"10"会排在"2"的前面。因为字符串大小比较是对各字符的编码值逐个进行比较,"1"<"2",所以"10"<"2"。...微软的排序囊括了¼字符、注音字符、拉丁文等特殊字符,也按照了一定规律进行排序。 (然而却有人吐槽这一点,甚至希望把这个“Bug”去掉:Windows名称排序问题) 那么微软是如何实现排序逻辑的呢?...+"只能匹配非数字,"(\D+)(\d+)"可以取出所有的数字和非数字,但是却匹配不到字符串首的数字字符串尾的非数字。...当对列表内的字符串进行排序时,会按照传入key的排序函数进行计算,分别计算得到的结果(每一个字符串对应一个数组),对结果进行排序。...数组的比对就是各元素逐一比较大小了,这样可以得到对字符串预期的排序结果。

    4.2K30

    WordPress自定义字段字符串类型转数字排序

    开发中遇到的一个情况做个技术分享,WordPress 本身已经具备很好的二次开发接口,但是还是无可避免有时候会用到,就像子凡给我们的网站开发了一个标签页访问统计功能,但是在后台访问量却无法准确的安装访问量排序...经过一番排除发现给 WordPress 标签自定义字段的参数在数据库中默认都是字符串类型,而对于访问量这种数字排序就需要将字符串转换一下类型,才能够正常的排序。...当然 WordPress 在 wp_query 查询中需要对自定义类型做数据类型排序的可以直接把 meta_value 换成 meta_value_num 就行了。...$pieces['orderby'] = ' ORDER BY CAST(tm.meta_value AS UNSIGNED) ';//转换类型排序(这才是本文要分享的重点) break;...} return $pieces; } 注意查看代码中的注释信息,其实就是使用了 SQL 中的 CAST 方式,本来想要转换成数字类型发现居然报错了,后来换成 UNSIGNED 就成功了,我自己也比较懵

    65240

    Excel公式技巧13: 从字符串中提取数字——将所有数字提取到单个单元格

    前三篇文章分别讲解了提取位于字符串开头和末尾的数字公式技术、提取字符串中所有的数字并放在不同的单元格中的公式技术,本文研究从字符串中提取所有数字并将这些数字作为单个数字放置在单个单元格中的技术。...本文使用与上一篇文中相同的字符串: 81;8.75>@5279@4.=45>A?...A; 我们希望公式能够返回: 818755279445 解决方案 相对简洁的数组公式: =NPV(-0.9,IFERROR(MID(A1,1+LEN(A1)-ROW(INDIRECT("1:"& LEN...,本例中A1里的字符串长度为24,因此得到: {1;2;3;4;5;6;7;8;9;10;11;12;13;14;15;16;17;18;19;20;21;22;23;24} 由1+LEN(A1)=25...NPV函数具有一个好特性,可以忽略传递给它的数据区域中的空格,仅从左至右的顺序操作数据区域内的数值。

    2.6K40

    Excel公式技巧22: 从字符串中提取指定长度的连续数字子串

    本文给出了一种从可能包含若干个不同长度的数字字符串中提取指定长度的数字的解决方案。在实际的工作表中,存在着许多此类需求,例如从字符串中获取6位数字账号。...在字符串中正确定位一个6位数字,需要考虑在与任意6个连续数字字符串相邻的之前和之后的字符,并验证这两个字符都不是数字。...假设字符串在单元格A1中,则公式为: =0+MID("ζ"&A1&"ζ",1+MATCH(26,MMULT(N(ISERR(0+MID(MID("ζ"&A1&"ζ",ROW(INDEX(A:A,1):INDEX...但是,这里使用5而不是7的原因是,必须确保首先在字符串的开头和结尾连接单个非数字字符。...由于解决方案的关键之处在于有效地测试所有长度为8个字符的子字符串,并验证其中的子字符串依次由1个非数字、6个数字和1个非数字组成。对于6个数字处于字符串的开头或结尾的情况,进行适当调整。

    3K20
    领券