小编Dir*_*101的帖子

在有连字符的地方对字母数字数据进行排序

我在工作簿中有两张纸,每张纸上都有自己的电子邮件地址列以及其他数据。我将在Sheet1中引用Column1,在Sheet2中引用Column2,其中只有Column1可能列出了重复的电子邮件地址。

我需要确定是否在Column2中找到了Column1中的电子邮件地址,并且每当为true时,都必须运行某些代码。

我用两个嵌套的Do While循环解决了这个问题,其中外部循环从上到下遍历了Column1中名为Cell1的每个单元,内部循环将Cell1与Column2中每个名为Cell2的单元也从上到下进行了比较,如果找到相同的值,则尽早退出内部循环。

为了提高效率,我想按升序对每一列进行排序,并让每个Cell1仅浏览Column2,直到Cell2中的字符串的值大于Cell1中的字符串的值,并迭代下一个Cell1为止。由于先前的Cell2值均小于Cell1并且不能具有相等的值,因此它将从最后循环停止的Cell2继续。

我想出的代码是一个遍历Column1中每个单元格的外部循环,以及一个如下所示的内部循环:

'x1 is the row number of Cell1
'x2 is the row number of Cell2
'below is the code for the internal loop looking through Column2

Do While Sheets(2).Cells(x2, 1).Value <> 0
    If LCase(Sheets(1).Cells(x1, 1).Value) < LCase(Sheets(2).Cells(x2, 1).Value) Then
        Exit Do
    ElseIf LCase(Sheets(1).Cells(x1, 1).Value) = LCase(Sheets(2).Cells(x2, 1).Value) Then

        '... code is run

        Exit Do
    End If
    x2 = x2 + 1
Loop
Run Code Online (Sandbox Code Playgroud)

问题是电子邮件地址可以带有连字符(-)和撇号(')。尽管Excel在对列进行排序时会忽略它们,但VBA在比较字母数字值时不会忽略它们。

如果我有:

     A           B
1  Noemi      Noemi
2  no-reply   no-reply
3  notify     notify …
Run Code Online (Sandbox Code Playgroud)

sorting excel vba loops

6
推荐指数
1
解决办法
1659
查看次数

Excel VBA - 如何使用For Each ... Next语句

我正在学习VBA,我正在尝试理解For Each ... Next语句的语法.如果语法是:

For Each element In group
[statements]
[Exit For]
[statements]
Next [element]
Run Code Online (Sandbox Code Playgroud)

您可以为"元素"和"组"使用哪种变量,并定义它们吗?我问,因为我为函数找到的大多数例子都没有定义"元素".

假设我有一个满是"a","b","c","d"和"N/A"的列,我想确定每个列出现在列中的次数.

到目前为止,我有以下内容:

Sub Count()

Dim lastRow, aCount, bCount, cCount, dCount, NACount As Long

lastRow = Range("A" & Rows.Count).End(xlUp).Row
aCount = 0
bCount = 0
cCount = 0
dCount = 0
NACount = 0

For Each MyCell In Range("A1:A" & lastRow)
    If MyCell.Value = "a" Then
        aCount = aCount + 1
    ElseIf MyCell.Value = "b" Then
        bCount = bCount + 1
    ElseIf MyCell.Value = "c" …
Run Code Online (Sandbox Code Playgroud)

excel vba excel-vba

0
推荐指数
1
解决办法
7294
查看次数

标签 统计

excel ×2

vba ×2

excel-vba ×1

loops ×1

sorting ×1