【问题标题】:Sort strings alphabetically ignoring brackets按字母顺序排序字符串,忽略括号
【发布时间】:2020-02-15 08:30:14
【问题描述】:

我有八个不同的变量,它们可以有值也可以没有值。它们看起来像这样:

A= "h"
B= "(z)"
C= "a"
D= ""
E= "[st]"
F= ""
G= "xx"
H= "(t)"

我需要它们按字母顺序排列在一起(必须包括括号):

Aim= "a,h,[st],(t),xx,(z)"

我知道如何将它们放在一个字符串中,以及如何将“,”放在正确的位置。

如何在忽略括号的情况下按字母顺序排列它们?

排除空值并添加我为每个值使用的逗号:

If IsEmpty(HH) = False Then HHH = HH.Value & ","

为了将它们放在一起,我使用“&”函数

StrHoribez = BBB & CCC & DDD & EEE & FFF & GGG & HHH & III

要删除我使用的最后一个逗号:

If Right$(StrHoribez, 1) = "," Then StrHoribez = Left$(StrHoribez, Len(StrHoribez) - 1)

字母排序可以发生在这些步骤之间。

我该如何解决这个问题?也许有数组的东西,但我没有使用这些的经验。

【问题讨论】:

  • 使用Replace() 删除非文本字符
  • 结果是否必须包含非文本字符?
  • 您将此标记为 Excel 问题。您可以将这些值放入 Excel 工作表中,进行排序,然后再次检索它们。
  • @D_Bester 感谢您的评论。当您在 Excel 中对其进行排序时,它会将所有带括号的变量放在一起,而不是忽略它。这也必须在将来自动工作。我放弃了 Excel-Tag。抱歉,如果这令人困惑。

标签: vba


【解决方案1】:

使用 Excel 工作表:

  1. 将值放入A列
  2. 将不带括号的干净值放入B列
  3. 按 B 列中的值排序
  4. 从 A 列中检索排序后的值,包括括号

使用二维数组:

  1. 将值放入 arr(x, 0)
  2. 将不带括号的干净值放入 arr(x, 1)
  3. 按干净值排序
  4. 从 arr(x, 0) 中检索排序后的值,包括括号

查看多维排序: Sorting a multidimensionnal array in VBA

【讨论】:

    猜你喜欢
    • 2011-04-06
    • 2018-01-14
    • 2017-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多