【问题标题】:Excel remove row with invalid emailExcel 删除包含无效电子邮件的行
【发布时间】:2017-05-24 00:17:27
【问题描述】:

我有一个大型联系人电子表格,其中包含姓名、电话、电子邮件等列... 其中有这么多行包含无效电子邮件,所以我想删除包含无效电子邮件的行,有什么建议吗?

【问题讨论】:

  • 写一些VBA代码。如果您要删除行,请从底部开始并向上处理。
  • 你知道任何 VBA sn-ps 吗?请提供...
  • 好的 np,我刚刚在一些 php 代码的帮助下解决了这个问题,我会将它添加到答案部分,我知道这不是确切的答案,但对某人有帮助。

标签: excel delete-row email-validation


【解决方案1】:

最好的方法是使用 VBA 的 RegExp55 库编写一个用户定义的函数来验证单元格是否包含有效的电子邮件地址 (TRUE) 或不 (FALSE)。

您可以开始使用此代码:

Option Explicit

Const MODULE_NAME As String = "modMail"

'' Validate email address
Public Function ValidateEmailAddress(ByVal strEmailAddress As String) As Boolean
    On Error GoTo Catch

    Dim objRegExp As New RegExp
    Dim blnIsValidEmail As Boolean

    objRegExp.IgnoreCase = True
    objRegExp.Global = True
    objRegExp.Pattern = "^([a-zA-Z0-9_\-\.]+)@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$"

    blnIsValidEmail = objRegExp.Test(strEmailAddress)
    ValidateEmailAddress = blnIsValidEmail

    Exit Function

Catch:
    ValidateEmailAddress = False
    MsgBox "Module: " & MODULE_NAME & " - ValidateEmailAddress function" & vbCrLf & vbCrLf _
        & "Error#:  " & Err.Number & vbCrLf & vbCrLf & Err.Description
End Function

我从这个tutorial 中获取的。如果您查看链接,您可以找到如何使用它的说明。

【讨论】:

  • 感谢您的代码,看起来您的代码可以验证电子邮件,但如果它在电子邮件列中包含无效电子邮件,我正在寻找删除行,我刚刚创建了一些对我来说工作正常的 php 代码,它可以很好地使用批量列表...但必须使用 php 平台才能运行,无论如何我都会在答案部分添加这些代码....
【解决方案2】:

有一个解决方案,它与我的大列表完美配合,这不是确切的答案,需要一个 PHP 平台来运行。

Input_List.csv

姓名 |电子邮件 |电话

这是我的上表代码:

<?php 
    $input_file = "Input_List.csv"; //source file
    $output_file = "Output_List.csv"; //cleaned output file
    $fp1 = fopen($input_file, "r"); 
    $fp2 = fopen($output_file, 'w'); 
    if ($fp1) {
        while (($lines = fgetcsv($fp1)) !== false) {
            //print_r($lines);
            $inv_flag = 1; 
            $cf_x_c_d = ''; 
            $co = 0; //incrimenting tocken for column
            foreach ($lines as $cf_x) {
                if($co == 1){ //check if 2nd column, 2nd column is the email column
                    if(validate_email($cf_x)){
                        $cf_x_c_d .= $cf_x.",";
                    }else{
                        $inv_flag = 0;
                    }
                }elseif($inv_flag == 1){
                    $cf_x_c_d .= $cf_x.",";
                }
                $co = $co + 1;

            }   
            if($inv_flag == 1){
                $cf_x_c_d_arr = explode(',', $cf_x_c_d);
                fputcsv($fp2, array_values($cf_x_c_d_arr));
            }
        }

        fclose($fp1);
        fclose($fp2);
    }   

    function validate_email($email){
        $email = str_replace(' ', '', $email);
        if(filter_var($email, FILTER_VALIDATE_EMAIL)) {
            return true;
        }else{
            return false;
        }
    }

  ?>

【讨论】:

    猜你喜欢
    • 2021-10-15
    • 2012-12-12
    • 2010-11-19
    • 2013-10-28
    • 1970-01-01
    • 1970-01-01
    • 2019-12-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多