如果该列中单元格中的值低于阈值,则使用macros删除列并在Excel中左移?

我有一个无关的分类问题的数据集,我是真的,我想减less属性总数。 我已经把我的数据集转换为excel处理的CSV格式了,但是我需要做一些修改 – 而且我从来没有做过任何VBA,所以对我来说语法看起来非常陌生。

基本上,我有7071列(属性)和70行(实例)。 每列下方的单元格(对于列A来说,A75)包含一定的属性评估统计方法。 我想要做的是检查这个单元格中的值(在这个例子中是“A75”),如果它低于一个特定的阈值,删除整个列以及把所有的东西都移到左边。 所以如果我有这样的东西:

o ABCD ... XYZ

1 2 5 4 9 ... 2

2 3 9 0 1 ... 3

3 1 1 5 6 ... 0

...

75 0.23 0.5 0.6 0.44 ... 0.8

我的计算结果确定最小的门槛是0.3,那么这个macros将摆脱A列,并将其他列转移到左边:

o ABC ... XYZ

1 5 4 9 ... 2

2 9 0 1 ... 3

3 1 5 6 ... 0

...

75 0.5 0.6 0.44 ... 0.8

任何帮助都将不胜感激。

这应该为你做。 如果删除行或列开始从结尾删除并移动到开始(即从右到左或从下到上)。

 Option Explicit Sub RemoveColumns() Dim vEvalRange As Variant, ii As Integer 'NOTE: This assumes the usedrange starts at cell A1! 'Screen updating when deleting cells slows things down Application.ScreenUpdating = False 'Set your evaluation row to an array. It's faster to sort through variables than sheet ranges vEvalRange = ActiveSheet.Range(ActiveSheet.Cells(ActiveSheet.UsedRange.Rows.Count, 1), ActiveSheet.Cells(ActiveSheet.UsedRange.Rows.Count, ActiveSheet.UsedRange.Columns.Count)).Value 'count from right to left otherwise your columns will shift and mess up your array For ii = UBound(vEvalRange, 2) To LBound(vEvalRange, 2) Step -1 If vEvalRange(1, ii) < 0.3 Then ActiveSheet.Columns(ii).Delete End If Next ii Application.ScreenUpdating = True End Sub