【发布时间】:2015-10-01 23:42:34
【问题描述】:
我需要通过搜索字符串来找到多行(通常是 156 行)。
示例字符串:'I30112' I 代表 9 月(字母表中的第 9 个字母),30 代表 9 月的第 30 天,112 代表 9 月 30 日的第 112 个单位。
我的用户会说请找出从 I30112 开始的下 x 个单位。这意味着我将搜索 I30112、I30113 等,直到找到 I30156。 I30156 之后的单位是 J01001。所以我需要从I30112到J01111找到。
如何进行循环以从工作表底部进行搜索,以找到对每个单元的最后引用?如果它们都井井有条,我可以找到一个,然后抓住下一个 156,但不幸的是,它们的顺序并不总是正确。
谢谢!
---编辑---
我正在尝试使用 ASC() 方法。但是,鉴于我的用户输入是一个变量,我很难获得正确的字符。目前我有:
Dim Month As String
Dim MonthChar As Integer
Month = Left(UserForm1.TextBox1.Value, 1)
MonthChar = Asc(Month)
但是,尽管 Month 是一个字符串,但我得到了一个错误。如果我切换到 Monthchar = Asc("Month") 那么它总是从 Month 中获取 M 而不是将其视为变量。
【问题讨论】:
-
首先构建一个来回转换日期的函数,然后构建一个包含开始和结束之间所有可能变化的变量数组,并使用它来过滤值。如果这不是一个选项,则对数据进行排序,以便您有机会找到起点和终点。
-
提示:您可以使用
Asc("J") - Asc("A") + 1->74 - 65 + 1 = 10来确定月份。 -
如果您有额外的日期和单位编号列,则可以应用自动筛选来显示结果,而不是循环获取数据。
-
Month是一个函数,请避免使用它作为变量名。请改用Dim sMonth As String。然后MonthChar = Asc(sMonth) - Asc("A") + 1