当前位置: 首页 > 知识库问答 >
问题:

如何删除包含文本和数字的excel表中任意列中有空单元格的整行

昌琪
2023-03-14
(col1  col2 col3) 
OAS01   0   74
OAS02   0   55
OAS03   0.5 73
OAS04       24
OAS05       21
OAS06       20
OAS07   0   74
OAS08   0   52
OAS09   1   30
OAS01       81

我想通过删除整个行和所有有任何空单元格的行来获得如下输出

(col1 col2 col3) 
OAS01 0 74 
OAS02 0 55
OAS03 0.5 73 
OAS07 0 74 
OAS08 0 52 
OAS09 1 30 

我试过,但工作不好

[num, text, a] = xlsread('data.xlsx');

for i = 1:size(data,1)

if isnan(num(i,1))

    a(i,:) =[];

    num(i,:) =[];

else 
   a(i,:) =a(i,:);   
   num(i,:) =num(i,:);   
end

end

xlswrite('newfile.xlsx', a);

共有1个答案

蒋嘉实
2023-03-14

更优雅的方式:

T = {'a','b';'','c';'d','e'}

>> T = 

'a'    'b'
''     'c'
'd'    'e'

 T(any(cellfun(@isempty,T),2),:) = []

>> T =

'a'    'b'
'd'    'e'

----编辑----

OP说它不起作用,所以我检查了,这是因为空单元格被xlsread函数加载为NAN,所以这行应该可以修复它:

 [num, text, a] = xlsread('data.xlsx');
 a(any(cellfun(@(x) any(isnan(x)),a),2),:) = [];
 类似资料:
  • 我是新的VBA和不是非常熟练的编程,所以我希望在这里得到一些帮助。 提前谢了。

  • 我有一个,它是通过解析一些excel电子表格创建的。具有空单元格的列。例如,下面是该列的频率输出,32320条记录缺少租户的值。 我试图删除缺少租户的行,但是选项无法识别缺少的值。 该列具有数据类型"Object"。这案子是怎么回事?如何删除租户失踪的记录?

  • 我需要VBA代码,可以删除整个行,如果两个单元格(可以在工作表的任何列)包含一个特定的文本。 我有一个每日生成的打印报告文件,该文件中的文本(在一个非特定列中)和也在任何列中。 #代表一个数字,所以在我的文件中可以有0-99999…,这取决于打印了多少页。 该文件包含从到的列和数千行,和文本可以位于每列上,具体取决于打印作业。 我希望VBA查看整个工作表,如果一行包含和,则应该删除整行。

  • 我试图创建一个脚本,如果单元格包含但不完全匹配条件,它将自动删除该行。例如,如果单元格包含gmail.com,脚本将删除行,作为较大电子邮件的一部分 这两封yahoo电子邮件将被保存,因为它们不符合条件。但是,我不确定在编写脚本时使用适当的条件听写。这是我到目前为止所拥有的。 我会把a==,但这只会删除与gmail完全匹配的行。com。我将使用什么来代替==使其本质上成为一个包含条件的文本?

  • 我一直试图创建一个宏来格式化从特定外部源复制的表,问题是,一些单元格似乎从右向左填充,剩余的空间向左填充空格:

  • 假设我有一张工作表--第一张--有5000多行(例如,每行“a”-“H”)。 在另一个工作表--第2号--中,我有一个“to-remove-list”--一个包含400个值的单列“a”,每个值包含字母数字字符串(例如:xxx1234)。 如果第'e'列包含“to-remove-list”(第2页的第'a'列)中的任何值,则必须删除第1页中的每一行。 删除整行,我的意思是删除该行并向上移动(不离开空