2017-01-25 3 views
0

私は何千もの列を持つExcelシートを持っていますが、そのうちのいくつかを選択したいのですが、それぞれに列番号があります。特定の条件を満たす列を選択する方法はありますか?例えば、数字が50,70,120,154,200の列。2000列のExcelファイルからそれらを選択する方法は?そこにはマクロがありますか? ありがとう列番号に基づいてExcelシートから特定の列を選択できる方法はありますか?

+0

質問を明確にすることができます。 50番、70番、120番などの列が必要なのですか?または50,70,120などを含む列?また、それらを選択するか、それらで何かをしたいですか?これまでに試みたVBAはありますか? – CLR

+0

@ CLRに感謝します。はい、私は50番、70番、120番を意味します。私はそれらを選択するだけでいいです。このマクロSub Macro() 範囲( "a1、b1、d1、e1、g1、h1")EntireColumn.Select End Subただし、これは列のヘッダーが文字の場合のみ有効です。 –

答えて

0

unionを使用して複数の列を選択できます。私はちょうどそれがどのように動作するかをあなたに知らせるために短いマクロを作成しました。

その上にWujaskunの答えと建物@撮影
Sub select_columns() 

Dim myColumns, myColumn(1 To 5) As Range 

Set myColumn(1) = Columns(1).EntireColumn 
Set myColumn(2) = Columns(3).EntireColumn 
Set myColumn(3) = Columns(5).EntireColumn 
Set myColumn(4) = Columns(7).EntireColumn 
Set myColumn(5) = Columns(9).EntireColumn 

Set myColumns = Union(myColumn(1), myColumn(2), myColumn(3), myColumn(4), myColumn(5)) 

myColumns.Select 

End Sub 
+0

@Wujaszkunに感謝します。少数の列を選択したいのであればこれはかなり良いですが、let's 50 columnsを選択したい場合、コードはかなり長くなります。 –

+0

@Data Miner - これは単なるサンプルコードでしたが、最終版では、CLRが答えてくれたように、より柔軟にし、何らかのループを使って 'Union'に列を追加したいと思うでしょう。 – Wujaszkun

1

- あなたはあなただけの1行の列番号を指定して、繰り返しのコーディングの必要性を取り除くためにできるようになる次のことを行うことができます:

Sub select_columns() 

Dim myColumns As Range 

myColumnNumbers = Array(1, 5, 9, 13, 17) '.. and on and on.. 

ReDim myColumn(UBound(myColumnNumbers)) As Range 

For Each c In myColumnNumbers 

    If myColumns Is Nothing Then 
     Set myColumns = Columns(c).EntireColumn 
    Else 
     Set myColumns = Union(myColumns, Columns(c).EntireColumn) 
    End If 

Next 

myColumns.Select 

Set myColumns = Nothing 

End Sub 

ワンわずかな警告で、列番号(または最初の列番号)を繰り返さないでください。これは、連合がリセットされるためです。

EDIT - 最初の列番号が繰り返されている場合は、コードを改善して(少なくとも問題を引き起こさないように)修正しました。

+0

ありがとう@CLR。すごく良かった。 –

関連する問題