• ベストアンサー

エクセルVBA セルの値で、複数の列範囲を同時に

セルの値を利用して複数の列範囲を選択したいです セルA1に 3 と入力されていて、AA列がアクティブの場合 Range("AD:AF,AJ:AL").Select の様に、アクティブ列から3列空けて、3列選択、3列空けて、3列選択の様にしたいです AA、アクティブ AB AC AD、選択 AE、選択 AF、選択 AG AH AI AJ、選択 AK、選択 AL、選択 AM

質問者が選んだベストアンサー

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.1

丁寧に拾っていくだけです sub macro1()  dim i as long  i = range("A1").value  union( _   activecell.offset(0, i).resize(1, i).entirecolumn, _   activecell.offset(0, i * 3).resize(1, i).entirecolumn _  ).select end sub

48946
質問者

お礼

ありがとう御座います 拾っていきます

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • セル範囲の指定方法について教えて下さい

    エクセルマクロ勉強中です。 いつも皆様のご回答をもとに勉強させて頂いております。 下記を行いたいのですが、うまくいきません。 AA列を検索(AA1から最終セルまでは空白セル無し)し、AA1からAEまでをコピー したいです。AEの最終行はAAで検索した最終行となります。 AA10が最終行であったならば、コピー範囲はRange("AA1:AE10")。   AA    AD AE 1  1     0 空白 2  1.5    2 空白 3  2     4  0.0 4  2.5    6  0.0 ・  ・     ・  ・ ・  ・     ・  ・ 11  空白 Range("AA1", Range("AA1").End(xlDown).End(xlToRight)).Select Selection.Copy 上記ですとAD列までは選択されますが、AEまで列までを選択するには どうしたらよいのでしょうか? ご教示頂きたく宜しくお願い致します。

  • 表中の記号から行と列の値を取り出すには

    表の列(月)行が(年)の表があります。中央の記号を探し、年月を読み取りたいのですがどのようなマクロを組めばいいのか見当がつかず質問させてもらいます。         1   2   3   4   5   6   7   8   9   10    11   12 2009  aa ab ac ad ae af ag ah ai aj ak al 2010  ak ba bb bc bd be   bf bg bh bi bj bk 2011  bl bk ca cb cc cd  ce cf cg ch ci cj                               2012 ck cl ck da db dc   dd de df dg dh di 2013 dj dk dl ea eb ec   ed ee ef eg eh ei 表の中から”cc”を選ぶと2011年5月と出るようなマクロを組みたいのです。 1つづつならばvlook upを使いできるのですが、10個を一括入力で変換し転記するマクロの見当がつかず悩んでいます。教えていただけないでしょうか。

  • Excel 平均スコアの出し方。

    作業中に詰みました。ご助力願えませんでしょうか。。。 下の添付画像をご覧頂きながら、読み進めて頂ければ幸いです。 ■状況 ・AD4~AF34 までは、(見えませんが)左にある表から抽出した担当者の名前だけ並んでいます。 ・ADは1人目、AEは2人目、AFは3人目の名前が入りますが、2人目以降空欄の場合もあります。 ・AD4~AF34 の空欄は、表から名前を抽出する為、関数が入っています。 ・AD4~AF34 内の行は上から埋まっていき、34行まで埋まらないこともあります。 ・AH4~AH34 までは、スコア(数字のみ)が入っており、左の担当者1人分のスコアになっています。 ■したいこと ・AD4~AF34 内の担当者全員の名前をAI4~AI34に重複せず並べたい。   →AD4~AF34内に担当者は多く記入される予定ですが、AI4~AI34の31行を超えることはありません。(31人以下しか担当者がいないため) ・AJ4~AJ34 内に、AI4~AI34に並べた担当者の平均スコアを入れたい。   →例として、A氏の平均スコアは、(54.7+63.7+63.5+53.3)/4=58.8 となるので、58.8と入れたい。   →例として、AI4に「A氏」と入れたなら、AJ4には「58.8」と入れたい。 ■そのほか ・AG列には何も入っていません。AI列、AJ列がベストですが、このあとの作業はまたがんばりますのでAH列より右であればどこでも構いません。 何卒宜しくお願い致します。

  • エクセルで全組合せを抽出したい

    A1セルにA A2セルにB A3セルにC・・・とA10セルまで続きます。(A10セルはJ) これの重複無く全組合せを抽出する関数を教えてください。 2文字→AB,AC,AD,AE,AF,AG,AH,AI,AJ 3文字→ABC,ABD,ABE・・・ 4文字→ABCD,ABCE,ABCF・・・ 10文字→ABCDEFGHIJ よろしくお願いします。

  • エクセルの複数条件関数

    エクセル関数の複数条件について初歩的な質問だと思うのですが、どうか関数式を教えていただけないでしょうか? IF関数でできるのではないか?と思ったのですが、うまくいかずうまくいく関数式を教えていただければ助かります。 ・AD列は作業担当者になりATSかPCTSDを選択できる(ここは既存で設定済み)<例>=IF(B21=1,VLOOKUP(Y21,作業担当!$A$2:$B$30,2,FALSE),0) ・AE列は分類コードで100/200/400のどれかが表示されるようになる(ここは設定済み)<例>=IF(B21=1,VLOOPLUP(J21,分類!$A$2:$B$8,2,FALSE),0) ・AF列はATS onlyとして<例>(AD21="ATS",AE21,"")と入力している。ここも設定済み。ATS only列はPCTSDであれば空白になるようにしている。 ・AG列はATS 100 to 500で以下のような条件式にしたいです。ここがうまくいっていません。AD列がATSでAE列が200であれば500、AD列がATSでAE列が100であれば300、AD列がPCTSDでAE列が100/200/400であれば空白にしたいです。 ・AG列の結果をもってAH列のファイナル分類コードに引き継ぎたいです。既に設定済みで<例>=IF(AG39="",AE39,AE39)としています。 AG列の条件を満たす関数式を教えていただけないでしょうか? よろしくお願いいたします。

  • EXCELの列複数削除

    VB6.0で開発しています。 下のようにEXCELの列を複数削除していますが 思うように削除されません。 削除はされるのですが B列を削除してから次C列を削除となってしまっているので C列を削除する時は元々のC列ではなく B列を削除してからのC列を削除してしまいます。 どう直せばいいのでしょうか? お願いします。 Private Sub Command2_Click() Dim xlApp As Excel.Application Dim xlBook As Excel.Workbook Dim xlSheet As Excel.Worksheet Dim B As Integer Dim C As Integer Dim D1 As Integer Dim E As Integer Dim G As Integer Dim H As Integer Dim K As Integer Dim L As Integer Dim M As Integer Dim N As Integer Dim P As Integer Dim R As Integer Dim T As Integer Dim U As Integer Dim V As Integer Dim Y As Integer Dim Z As Integer Dim AA As Integer Dim AB As Integer Dim AC As Integer Dim AD As Integer Dim AE As Integer Dim AF As Integer Dim AG As Integer Dim AH As Integer Dim AI As Integer Dim AJ As Integer Dim AL As Integer Dim AM As Integer Dim AP As Integer Dim AQ As Integer Dim AR As Integer Set xlApp = CreateObject("Excel.Application") Set xlBook = xlApp.Workbooks.Open("C:\Users\maki\Documents\Book1") Set xlSheet = xlBook.Worksheets("Sheet1") xlApp.Visible = True B = 2 C = 3 D1 = 4 E = 5 G = 7 H = 8 K = 11 L = 12 M = 13 N = 14 P = 16 R = 18 T = 20 U = 21 V = 22 Y = 25 Z = 26 AA = 27 AB = 28 AC = 29 AD = 30 AE = 31 AF = 32 AG = 33 AH = 34 AI = 35 AJ = 36 AL = 38 AM = 39 AP = 42 xlSheet.Cells(1, C).EntireColumn.Delete xlSheet.Cells(1, D1).EntireColumn.Delete xlSheet.Cells(1, E).EntireColumn.Delete xlSheet.Cells(1, G).EntireColumn.Delete xlSheet.Cells(1, H).EntireColumn.Delete xlSheet.Cells(1, K).EntireColumn.Delete xlSheet.Cells(1, M).EntireColumn.Delete xlSheet.Cells(1, N).EntireColumn.Delete xlSheet.Cells(1, P).EntireColumn.Delete xlSheet.Cells(1, R).EntireColumn.Delete xlSheet.Cells(1, T).EntireColumn.Delete xlSheet.Cells(1, U).EntireColumn.Delete xlSheet.Cells(1, V).EntireColumn.Delete xlSheet.Cells(1, Y).EntireColumn.Delete xlSheet.Cells(1, Z).EntireColumn.Delete xlSheet.Cells(1, AA).EntireColumn.Delete xlSheet.Cells(1, AB).EntireColumn.Delete xlSheet.Cells(1, AC).EntireColumn.Delete xlSheet.Cells(1, AD).EntireColumn.Delete xlSheet.Cells(1, AE).EntireColumn.Delete xlSheet.Cells(1, AF).EntireColumn.Delete xlSheet.Cells(1, AG).EntireColumn.Delete xlSheet.Cells(1, AH).EntireColumn.Delete xlSheet.Cells(1, AI).EntireColumn.Delete xlSheet.Cells(1, AJ).EntireColumn.Delete xlSheet.Cells(1, AL).EntireColumn.Delete xlSheet.Cells(1, AM).EntireColumn.Delete xlSheet.Cells(1, AP).EntireColumn.Delete Set xlApp = Nothing Set xlBook = Nothing Set xlSheet = Nothing End Sub

  • 図の平行六面体ABCD-EFGHにおいて・・・

    図の平行六面体ABCD-EFGHにおいて、→AB=→a、→AD=→b、→AE=→cとするとき、次の問いに答えよ。ただし、△EBDの重心をKとする。 (1)→AKを→a、→b、→cで表せ。 (2)対角線AGは点Kを通ることを証明せよ。 (1)AK=AB+AD+AE / 3 =A+B+C / 3 ↑なぜこうなるのですか? 説明お願いします。 (2)AG=AB+AD+AE =A+B+C より AK=1/3AG よって、3点A,K,Gは一直線上にある すなわち対角線AGは△EBDの重心Kを通る。 ↑なぜAK=1/3AGになるのですか? 説明お願いします。

  • 日付の入ったセル範囲から、ある日付を選択したい(再

    今日、表題のとおりの質問に次のとおり教えていただきました。 自分としては、8月の21でなく、9月の21を選びたいです。 Sub 日付選択() Range("AL4:CU4").Select Selection.Name = "日付範囲" Range("日付範囲").Find(What:=Day(Range("AJ2")), LookIn:=xlValues).Select End Sub セルAJ2には、2015/9/21が入っています。 AL4からCU4には 8月18日から10月17日の間の、日にちだけが、はいっています。 上のコードを実行すると、8月21日を選択します。 これを9月21日のところを選択するようにしたいです。よろしくご教示お願いします。

  • Excelにて、列の幅をマクロで変えるには?

    今、提出用の資料作成にて、 従業員の稼動実績を記載した表部分を隠して A3にかたち良く収まるように印刷できるよう列の調整をしようと マクロの記録を行い、下記のようなプログラムを得ました。 ところが、実行すると("U:AD")の部分は隠れているのですが、 それ以外は全て、列の幅が"20"になってしまいます。 一体どのようにすれば列の幅を記載通りに調整できるのでしょうか? お教え下さい。宜しくお願いします。 * * * * * * * * * * * * * * * * * Sub 稼動実績を隠す() ' ' 稼動実績を隠す Macro ' マクロ記録日 : 2007/9/27 ユーザー名 : ######## ' ' Columns("A:M").Select Range("A2").Activate Selection.ColumnWidth = 8 Columns("N:O").Select Selection.ColumnWidth = 16 Columns("P:P").Select Selection.ColumnWidth = 20 Columns("R:T").Select Selection.ColumnWidth = 20 Columns("U:AD").Select Selection.ColumnWidth = 0 Columns("AE:AF").Select Selection.ColumnWidth = 20 Columns("AG:AG").Select Selection.ColumnWidth = 8 Columns("AH:AH").Select Selection.ColumnWidth = 54 Columns("AI:AP").Select Selection.ColumnWidth = 20 Columns("AQ:AQ").Select Selection.ColumnWidth = 8 Columns("AR:AS").Select Selection.ColumnWidth = 20 Range("A2").Select End Sub

  • Excel関数について

    A列にある関数をB列にコピーする場合、 A列=SUM(AA12+AD12)が、B列=SUM(AB12+AE12)となりますが、 +7(週ごとに関数をコピーしたい)した関数をB列にコピーすることは可能でしょうか? A列をコピーした時にB列に=SUM(AH12+AK12)としたいのですが、教えてください。

専門家に質問してみよう