• 締切済み

VBA オートフィルタ後のセル色付け

いつも大変お世話になっております。 VBA初心者です。Excel2007、XPを使用しております。 データの状態ですが、 AからQ列まである顧客データ(1行目は見出し、2行目以降がデータ)を、 Sheet2へ参照で並び変えしてます。 Sheet2はAからM列になっており、こちらも1行目見出し、2行目以降データです。 見出しのみ色付けしており、このSheet2はデータを蓄積していってます。 Sheet1は新規データ貼付用 Sheet2は参照されたデータの蓄積 Sheet3はcsv保存用 目的は、Sheet2でオートフィルにより、色なしを表示し、2行目以降をコピー、 Sheet3へ値貼付、csv保存。値削除。 Sheet2の色なしを色付け(濃いグレー)。 以上の動作をしたいのですがうまくいかず、大変困っております。 お手数ですがご教授お願い致します。

みんなの回答

  • ap_2
  • ベストアンサー率64% (70/109)
回答No.1

「マクロの記録」だけで作れそうですが・・・ セルの選択は、「Alt+Shift+↓」みたいなキー操作を駆使すると、データ数に関係なく動かせますよ。 具体的に分からない点があれば、補足してください。

mitsunori32
質問者

補足

ありがとうございます! フィルタ後の行が変数な為、記録ではうまくいきません。 とりあえず記録したものが下記ですので、ご覧頂けますでしょうか。 Sub test() Sheets("Sheet2").Select Range("A1").Select Selection.AutoFilter ActiveSheet.Range("$A$1:$M$50").AutoFilter Field:=1, Operator:= _ xlFilterNoFill Rows("8:8").Select Range(Selection, Selection.End(xlDown)).Select Selection.Copy Sheets("Sheet3").Select Range("A2").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Sheets("Sheet3").Select Sheets("Sheet3").Copy ActiveWorkbook.SaveAs Filename:= _ "\\C:\Documents and Settings\ユーザー1\My Documents\n" & Format(Now, "m-d") & "-1", FileFormat:= _ xlCSV, Password:="", WriteResPassword:="", ReadOnlyRecommended:=False _ , CreateBackup:=False ActiveWorkbook.Close Application.DisplayAlerts = True Sheets("Sheet3").Range("2:50").ClearContents Application.ScreenUpdating = True Rows("2:2").Select Range(Selection, Selection.End(xlDown)).Select Application.CutCopyMode = False Selection.ClearContents Range("A2").Select Sheets("Sheet2").Select With Selection.Interior .Pattern = xlSolid .PatternColorIndex = xlAutomatic .ThemeColor = xlThemeColorDark1 .TintAndShade = -0.499984740745262 .PatternTintAndShade = 0 End With Selection.AutoFilter Range("A2").Select End Sub > Rows("8:8").Select > Range(Selection, Selection.End(xlDown)).Select > Selection.Copy csv保存後に可視セルのみ色付けしたいのですが、 空白セル(参照式入り)まで全て色づけられるため困ってます。

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

関連するQ&A

  • ExcelのVBAで、条件でセルに色付けしたい

    VBは超初心者です。どなたか教えてください。 データをシートに貼り付けた後の処理で、あるセルの値を判断して その行(範囲あり)を灰色に塗りつぶしたいのです。 よろしくお願いします。 例えば、A列のセルに"B"の文字が入っていたら "10B"の行(A2からC2)が灰色に。 A列 B列  C列 10A 1000  あさん 10B 1500  いさん 20A  300  うさん

  • VBAでのセル範囲指定について

    お世話になります。 私が分からないのは、VBAでのセル範囲指定なのですが、 例えば、シートにデータが有、そのデータの1行目は見出しなので 2行目からデータが入っているセルまでの範囲を指定、コピーして 隣のシートに貼付したいのですが、そのデータの入力される範囲が 毎回違います。「CurrentRegion.Select」としてしまうと、1行目 の見出しまでも範囲指定されてしますので、どうやったら良いのか どなたかお教え頂きたく宜しくお願い申し上げます。

  • エクセルVBAでCSVファイルから取り込みたいのですが・・・

    CSVファイルのデータを取り込むコードを教えていただけないでしょうか。 「共有フォルダ」の中に「作業用.xls」と「090820.csv」があります。csvファイルは日によって名前が変わりますが、必ず一つしか入れないことにしています。 CSVファイルの1行目は見出しです。2行目以降がデータになっています。 A2からI列最終行を「作業用.xls」のsheet1のA6にコピー(取り込み)したいのですが、よろしくお願いします。

  • エクセルのセルの色付け

    エクセルの作業が今まで通りにできず困っております。 作業はソートをして選択した行のB列に色付けをするという単純な作業です。 昨日までは、行を飛ばして選択しても色付けが可能だったのですが今日は色付けができません。 7000行のデータ作業なのでソートをかけずに作業するのはとても時間がかかり困っております。 どなたか知恵をお貸しください。よろしくお願い致します。

  • エクセルVBAのイベントで色付け

    以前条件付書式で対応できない4色以上の問題で質問しましたが、 応用がきかず再度質問に参りました。 データリストの表です。 2行目に見出しがあります。B4:G4とします。 その下(3行目)に日にちを入力するようにしています。3行目から10行目 とします。 つまりB4:G10までが対象になります。 2行目にはそれぞれ違った色を付けています。 この様な場合で、 B4:G10に日にちが入ると、その列にある2行目の見出しの色と同じ 色を付ける、というようにしたいのですが、前回教えていただいた ものを参考にしてみたのですが、応用ができませんでした・・・ どなたか教えていただけないでしょうか。

  • Excelセルの参照

    Excelにdataとnという2シートがあります。dataシートのA列3行目~22行目にデータが縦入力されており、以降B列、C列とデータ入力が繰り返されます。 nシートでdataシートの入力値参照のため、あらかじめdataシートの参照リンクを貼っておきたいのですが、nシートのデータは横並びであるせいか、参照リンクをうまくコピーすることができません。 dataセルのA3セルの値をnシートのD1に=data!A3と貼り付けて、W1(=data!A22)まで数式を自動コピーできないでしょうか。また、D2~W2まで=data!B3~=data!B22など参照リンクをコピーで作成できないでしょうか。 よろしくお願いいたします。 横並びに参照する必要があるのですが、

  • Excel_VBA 2列を比較し、同番号行色付け

    お世話になります。 図の上半分のような、データがあります。 これは2つのシステムの販売額が合算されたデータシートです。 DBから吐き出されたデータ上はこれでいいのですが、人間の目で見る時に見づらいので、色付けをして可視化したいと考えています。 このデータで重要な点は、 1.「D」と「H」列(つまり2販売額)の数字が合致している列をみつけること (一応現在もB列で一致行は空欄、不一致の行はフラグが入るのでわかる) 2.「F」列の日付けが最新のものをみつけたい 3.「K」列のステータスにGOODとBADがあり、GOODは青系の色をつけたい、BADは赤系の色をセルにつけたい 4. その最新日付けの行にあるコードと同じ「コード」(C列)を探して、同じなら黄色系の色をつけたい。 (例だと、1158や2034で探している。最新日付けでない行は、あまり重要でないので、全部同じ色[ここでは黄色]でよい)。 なお黄色で埋めるだけだと行が見にくくなるので、行境に罫線の点線の一番薄いのをつけてあります。 補足情報として ・黄色をつける行のデータの法則は不明(重要ではないので気にしていない) ・横幅(色をつける列の右端までの項目数[列数])は吐き出さされるExcelシートによってばらばら。ステータス行は右端とは限らないが、列としては1列のみ(つまり右端をステータス列とみなすと誤動作する。ここではK列として考えてください)。 ・データの入っている行数も、吐き出されるデータによってばらばら(数百行のときもあれば、1万行程度のときもある) ・処理対象はアクティブ(見ている)ワークシートのみでOK よろしくお願いします。

  • VBA シート1だけを保存する

    VBA シート1だけを保存する こんにちは、VBA初めてまもない初心者です よろしくお願いします 動作環境として、OS:XP excel:excel2007 を使用しています VBA で CSV データを取込む際にCSV データのとある項目以降から 2行目にして更にセルを結合しようと思っていたのですが どうやら、VBAだとワンアクションじゃ出来ないことに気がつきました。 例:    ※1行の例です。実際にはこのCSVデータが1000行近く有ります (CSV data) "AAA","BBB","CCC","DDD","EEE","FFF"         ↓ (VBAのみではワンアクションでは出来ませんでした) (excel)       A   B   C   D              1行目 AAA BBB CCC DDD 2行目   EEE     FFF    //EEEは[2A,2B]のセル、 FFFは[2C,2D]のセル ですので、やり方を切り替えて 1・1度CSVデータをエクセルシート1に取込む 2・シート2でセルの枠の結合やサイズ等を変更しながら、シート1の内容を参照する (注意:コピーではなく参照です) 3・シート2の部分だけを保存する、もしくはシート1の内容を削除する 1-3のような手順で、処理を行う事が出来るのでしょうか? アドバイス頂けたらと思います。<(_ _)>

  • エクセル:VBAで自動的にCSV形式で保存について

    複数のシートからなるエクセルブックから、決まった一つのシートを CSV形式で保存するマクロを作成しております。 その際、CSV化するシートは他のシートの値を参照し、数値が""、 もしくは"0"の場合は、表示しないとする数式が1000行まであります。 これは、CSVで保存した際に、無用なデータを含めないようにと 考えたものですが、下記VBAを作りCSV化し保存したファイルは、確かに 数値がある行のみ表示しているものの、データ量が重くなってしまいます。 Application.DisplayAlerts = False Application.Dialogs(xlDialogSaveAs).Show arg1:=MyFile, arg2:=6 この作成されたCSVをあらためて、「名前を付けて保存」でCSVで保存し、 「~には、CSV(カンマ区切り)と互換性のない機能が含まれている可能性 があります。この形式で保存しますか?・・・」の所で、「はい」を選択 すると、データ量が大変少ない量で保存できます。 おそらく、マクロで作成したCSVは、その「互換性のない機能」が含まれて いるのであろうと思いますが、必要としているのは値のデータのみです。 この「互換性のない機能」を省いてCSVで保存する方法をどなたか教えて いただけないでしょうか? 分かりにくい文章で申し訳ありませんが宜しくお願い致します。

  • EXCEL 2007 VBAによる時系列データの更新について

    EXCEL 2007 VBAによる時系列データの更新について 当方初心者です。意外と簡単に解決できるものかは分かりませんが質問させて頂きます。 どなたかご教授頂ければと思います。 "A.xls"の"Sheet1"に 2010/10/4 6:00   100   101   100   101 2010/10/5 6:00   102   103   101   102 2010/10/6 6:00   103   104   100   103 2010/10/7 6:00   103   105   100   102 2010/10/8 6:00   103   105   100   102 2010/10/11 6:00   102   107   100   102 2010/10/12 6:00   102   106   100   103 というように毎日蓄積されたデータを1行ごとに保存してあります。 そして"B.xls"の"Sheet1"には 2010/10/8 6:00   103   105   100   102 2010/10/11 6:00   102   107   100   102 2010/10/12 6:00   102   106   100   103 2010/10/13 6:00   101   104   100   102 2010/10/14 6:00   100   102   100   100 2010/10/15 6:00   101   103   100   100 のように最新のデータが保存されてあり、このデータを蓄積してある データ("A.xls"の"Sheet1")にVBAによってコピーしたいのです。 ただしこの場合、既に保存してある期間のデータよりも以降 (上記例では両データ共にA列に日付データが入力されてあり、 2010/10/13 6:00以降)のデータを"A.xls"の"Sheet1"の 2010/10/12 6:00   102   106   100   103 の次の行からコピーしていきたいのですが、どのような方法で 可能なのでしょうか? まだ初心者ですがどなたか教えていただければと存じます。 宜しくお願い申し上げます。

専門家に質問してみよう