![](https://iknow-base.cdn.bcebos.com/lxb/notice.png)
EXCEL问题有能解决的吗?
展开全部
Sub 跨列选中()
Dim i, n
Application.ScreenUpdating = False
n = InputBox("输入需要选择多少列", , 2) '此处默认选择2列 即B D
Columns("A:A").Select
Selection.EntireColumn.Hidden = True
For i = 1 To n
Selection.Offset(0, 2 * i).EntireColumn.Hidden = True
Next
Range(Columns(1), Columns(2 * n)).Select
Selection.SpecialCells(xlCellTypeVisible).Select
For i = 1 To 2 * n
Cells.Columns(i).Hidden = False
Next
End Sub
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
既然是整列删除的
为何不按住CTRL键,全部选定欲删除的列,再一起删除
===================
如果懒得用VBA的话
可以用公式来提取你想要的数据
权当原数据的工作表表名为sheet1
在同工作簿下的新工作表中,先将原数据的A、B列复制到新工作
再在C1单元格粘贴以下公式
=OFFSET(Sheet1!$C1,,COLUMN(A1)*2-1,)
右拉、下拉填充公式
如果不想要公式的话
======================================
权当原数据的工作表表名为sheet1,同工作簿下的sheet2为空白工作表
以下代码可以将你要的数据提取到sheet2工作表中
Sub test()
Dim row1, col1, n, arr, brr, i, j, row2, col2
With Sheet1
row1 = .Range("A65536").End(xlUp).Row
col1 = .Range("IV1").End(xlToLeft).Column
arr = .Range(.Cells(1, 1), .Cells(row1, col1))
End With
n = Round((col1 - 2) / 2, 0) + 2
ReDim brr(1 To row1, 1 To n)
For i = 1 To row1
For j = 1 To col1
If j < 3 Then
brr(i, j) = arr(i, j)
ElseIf j > 2 And (j Mod 2) = 1 Then
brr(i, Int(j / 2) + 2) = arr(i, j)
End If
Next j
Next i
Sheet2.Select
row2 = Range("A65536").End(xlUp).Row
col2 = Range("IV1").End(xlToLeft).Column
Range(Cells(1, 1), Cells(row2, col2)).Clear
Range("A1").Resize(row1, n) = brr
End Sub
全选公式所在列--右键--复制--右键--选择性粘贴--数值--确定
为何不按住CTRL键,全部选定欲删除的列,再一起删除
===================
如果懒得用VBA的话
可以用公式来提取你想要的数据
权当原数据的工作表表名为sheet1
在同工作簿下的新工作表中,先将原数据的A、B列复制到新工作
再在C1单元格粘贴以下公式
=OFFSET(Sheet1!$C1,,COLUMN(A1)*2-1,)
右拉、下拉填充公式
如果不想要公式的话
======================================
权当原数据的工作表表名为sheet1,同工作簿下的sheet2为空白工作表
以下代码可以将你要的数据提取到sheet2工作表中
Sub test()
Dim row1, col1, n, arr, brr, i, j, row2, col2
With Sheet1
row1 = .Range("A65536").End(xlUp).Row
col1 = .Range("IV1").End(xlToLeft).Column
arr = .Range(.Cells(1, 1), .Cells(row1, col1))
End With
n = Round((col1 - 2) / 2, 0) + 2
ReDim brr(1 To row1, 1 To n)
For i = 1 To row1
For j = 1 To col1
If j < 3 Then
brr(i, j) = arr(i, j)
ElseIf j > 2 And (j Mod 2) = 1 Then
brr(i, Int(j / 2) + 2) = arr(i, j)
End If
Next j
Next i
Sheet2.Select
row2 = Range("A65536").End(xlUp).Row
col2 = Range("IV1").End(xlToLeft).Column
Range(Cells(1, 1), Cells(row2, col2)).Clear
Range("A1").Resize(row1, n) = brr
End Sub
全选公式所在列--右键--复制--右键--选择性粘贴--数值--确定
追问
你有VBA的方式也可以 方便发我试一试吗
追答
代码放这里会被吃。。。
弄到上面去了
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询