• 締切済み

Excel2013,macroのcopy

Excel2013でマクロ実行するのですが、最後のstepの「条件付き書式」のcopyが上手く行きません。どなたかご教授お願いします。 A~J列x約4000行(1行~5行まではTytle行)のsheetです。 A列は日付で、過去からの日付となって居ます。 このsheetを見易くする為にA6行に 「条件付き書式」 =mod(month(A6),2)=0 を設定し、下記のmacro式でA6~J4000にCOPYするのですが、結果は上手く行きません。 ※1:偶数月行のA列のみ正確に書式設定されるが、全列(A~J)にならない。 ※2:奇数月のところどころ(列)に書式が設定される。 の不具合が生じます。 考えられる原因は何でしょうか?、ご教授願えませんでしょうか?。 与えたmacro Range("A6").Select Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _ "=MOD(MONTH(A6),2)=0" Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority With Selection.FormatConditions(1).Interior .PatternColorIndex = xlAutomatic .Color = 11200714 .TintAndShade = 0 End With Selection.FormatConditions(1).StopIfTrue = True Selection.Copy Range(Selection, Selection.End(xlDown)).Select Range(Selection, Selection.End(xlToRight)).Select Range(Selection, Selection.End(xlToRight)).Select Range(Selection, Selection.End(xlToRight)).Select Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _ SkipBlanks:=False, Transpose:=False Range("A6").Select End Sub

みんなの回答

回答No.5

こんばんは。 #3の回答者です。 >>Range("A6:J4000").FormatConditions.Delete '←これを入れたらどうでしょう。 >この行はどの位置に入れるのでしょう?。 * コードにあるように、Sub TestForamtCopy() の次の行です。 >Sub TestForamtCopy() '←このタイトルの次の行。 >Range("A6:J4000").FormatConditions.Delete '←これを入れたらどうでしょう。 >・ >・ >>考えられるのは、条件付き書式を重ねているということでしょうね >A6(日付列cell)に条件付き書式を設定し、sheet全体(A6~J4000)にcopyしたいと考えているのです。これが”重ね”と言う事ならば、条件式はどの位置に書くのでしょうか?。 [重ねている]というのは、おかしな設定の条件付き書式を残したまま、私たちの条件付き書式を設定しても、いままでの条件付き書式が反応して、同じ結果になってしまうということです。それは、#4のtom04さんのご説明を読んでみてください。表現は違っても同じことを指摘しているはずです。 こんどは、両者とも、マクロを実行するだけで、前の設定がクリアされていますから、それで様子をみてください。この後の不具合があれば、それは、別問題として考えるということにして、とりあえず、2行目に挿入してから、試してみてください。

Horishita
質問者

お礼

tom04さん WindFallerさん 度々のご指導ありがとうございました。 上述の結果では満足できませんでしたので、ご指導内容を含めその後、何度も試行錯誤した結果下記内容にて完全に満足できる内容となりました。 ご指導に感謝いたします。 Range("A1:R4500").FormatConditions.Delete '←条件付き書式の消去★←ついでにDel範囲を広げました。 Range("A6:k4000").Select Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _ "=MOD(MONTH($C6),2)=0" Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority With Selection.FormatConditions(1).Interior .PatternColorIndex = xlAutomatic .Color = 11200714 .TintAndShade = 0 End With Selection.FormatConditions(1).StopIfTrue = True Selection.Copy Range("A6:k4440").Select Range("E3").Select ActiveCell.FormulaR1C1 = "=SUM(R[3]C:R[4430]C)" '←絶対値にしたいのですが取敢ずOK。 Range("E3").Select Selection.AutoFill Destination:=Range("E3:F3"), Type:=xlFillDefault Range("E3:F3").Select Range("A6").Select END Sub

Horishita
質問者

補足

tom04さん WindFallerさん 度々のご指導ありがとうございます。 次の式(構文?)で実行してみました。 Range("A1:J4000").FormatConditions.Delete With Range("A6:J4000") .FormatConditions.Delete '←条件付き書式を一旦消去★ .FormatConditions.Add Type:=xlExpression, Formula1:="=AND($A6<>"""",MOD(MONTH($A6),2)=0)" .FormatConditions(1).Interior.Color = 11200714 End With With Selection .FormatConditions(1).StopIfTrue = False .Copy Range("A6:J4000").PasteSpecial (xlPasteFormats) .Select End With Application.CutCopyMode = 0 End Sub 結果 全ての偶数月行の全ての列に、色塗り設定できました(奇数月行・列は無色)ありがとうございます。。 ただ、この構文のどこかで、”おかしい??”のでしょうか?、 結果の値が変化(お化け)しています。 1.A列(日付=user定義の和暦文字=ge/mm)の値がC列に貼り付け、 2.B列(文字=全角2~6文字)の値なのでしょうか?D列に#######となり、 3.C列(西暦日付=yyyy/mm/dd)がE列にge/mmとなって、 4.D列(数値の計算式=D+E+F-G)がF列にge/mmとなって、 貼り付け(paste)られています。…どうしてなのでしょう???。 但し、cell内の値は元の値・式ですね。(######はカーソルを当てると”負であるか、大き過ぎる日付または時間”の説明が表示されます。中身は計算式なのですが‥‥)。 ※これでは、色塗りは達成できても、値が化けてしまうと役に立ちません。 どこに間違いがあるのでしょうね????。

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.4

No.1です。 >意図していない行(奇数月)にも塗り色(11200714)が付けられ、また、偶数月行の色も全部行にはなりませんでした。 というコトですが・・・ 実は当方もWindFallerさんと同じ考えですでにA6:J4000セルに条件付き書式が設定してあるのではないか? と思いました。 ↓のコードに変更してみてください。 Sub Sample2() With Range("A6:J4000") .FormatConditions.Delete '←条件付き書式を一旦消去★ .FormatConditions.Add Type:=xlExpression, Formula1:="=AND($A6<>"""",MOD(MONTH($A6),2)=0)" .FormatConditions(1).Interior.Color = 11200714 End With End Sub ※ 数式に「$」マークが入っている(列固定の複合参照)になっているコトに気を付けてください。 可能性としてはかなり低いとは思いますが・・・ これでもダメな場合はA列日付がシリアル値になっていない可能性があります。 こちらで検証した結果はちゃんとA列シリアル値が偶数月の場合 ↓の画像のようにA列~J列まで色付けされます。m(_ _)m

Horishita
質問者

お礼

tom04さん WindFallerさん 度々のご指導ありがとうございました。 上述の結果では満足できませんでしたので、ご指導内容を含めその後、何度も試行錯誤した結果下記内容にて完全に満足できる内容となりました。 ご指導に感謝いたします。 Range("A1:R4500").FormatConditions.Delete '←条件付き書式の消去★←ついでにDel範囲を広げました。 Range("A6:k4000").Select Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _ "=MOD(MONTH($C6),2)=0" Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority With Selection.FormatConditions(1).Interior .PatternColorIndex = xlAutomatic .Color = 11200714 .TintAndShade = 0 End With Selection.FormatConditions(1).StopIfTrue = True Selection.Copy Range("A6:k4440").Select Range("E3").Select ActiveCell.FormulaR1C1 = "=SUM(R[3]C:R[4430]C)" '←絶対値にしたいのですが取敢ずOK。 Range("E3").Select Selection.AutoFill Destination:=Range("E3:F3"), Type:=xlFillDefault Range("E3:F3").Select Range("A6").Select END Sub

Horishita
質問者

補足

tom04さん WindFallerさん 度々のご指導ありがとうございます。 次の式(構文?)で実行してみました。 Range("A1:J4000").FormatConditions.Delete With Range("A6:J4000") .FormatConditions.Delete '←条件付き書式を一旦消去★ .FormatConditions.Add Type:=xlExpression, Formula1:="=AND($A6<>"""",MOD(MONTH($A6),2)=0)" .FormatConditions(1).Interior.Color = 11200714 End With With Selection .FormatConditions(1).StopIfTrue = False .Copy Range("A6:J4000").PasteSpecial (xlPasteFormats) .Select End With Application.CutCopyMode = 0 End Sub 結果 全ての偶数月行の全ての列に、色塗り設定できました(奇数月行・列は無色)ありがとうございます。。 ただ、この構文のどこかで、”おかしい??”のでしょうか?、 結果の値が変化(お化け)しています。 1.A列(日付=user定義の和暦文字=ge/mm)の値がC列に貼り付け、 2.B列(文字=全角2~6文字)の値なのでしょうか?D列に#######となり、 3.C列(西暦日付=yyyy/mm/dd)がE列にge/mmとなって、 4.D列(数値の計算式=D+E+F-G)がF列にge/mmとなって、 貼り付け(paste)られています。…どうしてなのでしょう???。 但し、cell内の値は元の値・式ですね。(######はカーソルを当てると”負であるか、大き過ぎる日付または時間”の説明が表示されます。中身は計算式なのですが‥‥)。 ※これでは、色塗りは達成できても、値が化けてしまうと役に立ちません。 どこに間違いがあるのでしょうね????。

回答No.3

#2の回答者です。 >やりたい事は単純なのです。偶数月の行に色塗りをしたい(A~J)だけなのです。 6ヶ月ごとだと読み違えしていましたが、 [偶数月の行]ではなく、セルではありませんか。 >実行してみました。→結果はダメでした。 こんな単純なマクロで、ダメだということはありえませんし、こちらは問題ないのですから、考えられるのは、条件付き書式を重ねているということでしょうね。 つまり、 .FormatConditions.Add しているのですから。 それなら、単に Sub TestForamtCopy() Range("A6:J4000").FormatConditions.Delete '←これを入れたらどうでしょう。 ・ ・ ・ '// この場合は、範囲内の条件付き書式を全部削除してしまいます。

Horishita
質問者

補足

WindFallerさん 追加のご指導ありがとうございます。 自分はmacroの事は全くの不勉強で、お恥ずかしながらmacro構文(単語=命令文)?の意味が解っていません"(-""-)"。 これまで「macroの記録」でmacroを作成して来ただけなのです。今回4000行にもなるsheetですのでカーソルの移動など正直不勉強なのです。 >Range("A6:J4000").FormatConditions.Delete '←これを入れたらどうでしょう。 この行はどの位置に入れるのでしょう?。 >考えられるのは、条件付き書式を重ねているということでしょうね A6(日付列cell)に条件付き書式を設定し、sheet全体(A6~J4000)にcopyしたいと考えているのです。これが”重ね”と言う事ならば、条件式はどの位置に書くのでしょうか?。 よろしくご指導のほど願います。

回答No.2

こんばんは。 こういう類は、記録マクロをあまりいじれないはずでしたが…… ご質問のマクロ自体は、Selection 自体が明確なら、問題ないような気がします。 ただ、私の場合、それを知らずに実行したので、Excelがハングしましたが。(^^; 念のために、セルに入れた日付の月数が、6で割れる数なら、色をつけるという趣旨ですね。 6月と12月ということになります。そうでないと、私の回答はボツです。ただ、条件付き書式として、CELL関数で、書式の選別をしないと、一般の整数まで、含まれてしまいます。 最初の  Range("A6").Select マクロの原則とは外れ、これが生きるはずです。 これを入れないと、条件付き書式を設定する場所と数式の関係が離れてしまいます。 もし、私の解釈が正しければ、おそらく、ホームの条件付き書式から見える数式とは違い、中身は、R1C1型の相対参照になっているような気がします。うまくいかない理由は、たぶんバグに近いのか、そういう仕様なのだと思います。ただ、コード全体が、VBA的ではありませんが、大真面目に書いています。 '// Sub TestForamtCopy()  Range("A6").Select  With Selection   .FormatConditions.Add Type:=xlExpression, Formula1:= _   "=MOD(MONTH(A6),2)=0"   .FormatConditions(.FormatConditions.Count).SetFirstPriority  End With  With Selection.FormatConditions(1).Interior   .PatternColorIndex = xlAutomatic   .Color = 11200714   .TintAndShade = 0  End With  With Selection   .FormatConditions(1).StopIfTrue = False   .Copy   Range("A6:J4000").PasteSpecial (xlPasteFormats)   .Select  End With  Application.CutCopyMode = 0 End Sub '//

Horishita
質問者

補足

WindFallerさん 早速のご回答ありがとうございます。 実行してみました。→結果はダメでした。 tom04さんの結果と同じでした。 ☆やりたい事は単純なのです。偶数月の行に色塗りをしたい(A~J)だけなのです。

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.1

こんばんは! >記のmacro式でA6~J4000にCOPYするのですが、結果は上手く行きません。 A6セルに条件付き書式を設定し、書式のコピーを行いたい!というコトだと思いますが。 数式そのものが「相対参照」になっているためだと思われます。 書式のコピーを行うのではなく、対象セル全体を範囲指定 → 数式による条件付き書式の設定! という感じではどうでしょうか? Sub Sample1() With Range("A6:J4000") .FormatConditions.Add Type:=xlExpression, Formula1:="=AND($A6<>"""",MOD(MONTH($A6),2)=0)" .FormatConditions(1).Interior.Color = 11200714 End With End Sub といった感じで・・・m(_ _)m

Horishita
質問者

補足

tom04さん 早速のご回答ありがとうございます。 >書式のコピーを行うのではなく、対象セル全体を範囲指定 → 数式による条件付き書式の設定!という感じではどうでしょうか? ありがとうございます。この考えでOKです。 Sample式で試してみました。→結果は残念賞でした。 やはり、意図していない行(奇数月)にも塗り色(11200714)が付けられ、また、偶数月行の色も全部行にはなりませんでした。 ☆やりたい事は単純なのです。偶数月の行に色塗りをしたい(A~J)だけなのです。

関連するQ&A

  • マクロでシート2~6のデータをシート1に転記したい

    マクロでシート2~6のデータをシート1に転記したいです。 シート2~6のデータを シート1に順番に転記したくてマクロの記録を利用して作成しました。 シート2~6は列は同じですが行数は異なります。 また行数は作業の都度異なります。 同じ記述が繰り返されているので もう少し記述が短くできるのではと思うのですが どうすればいいでしょうか? Sub データ更新() 'シート1の前回データをクリア Sheets("シート1").Select Range("A2:Q2").Select Range(Selection, Selection.End(xlDown)).Select Range(Selection, Selection.End(xlDown)).Select Selection.ClearContents Range("A2").Select Sheets("シート1").Select Range("A1").Select Sheets("シート2").Select Range("A1").Select 'ヘッダーも合わせて取得 Range(Selection, Selection.End(xlToRight)).Select Range(Selection, Selection.End(xlDown)).Select Selection.Copy Sheets("シート1").Select ActiveSheet.Paste Application.CutCopyMode = False Selection.End(xlDown).Select Selection.Offset(1, 0).Select Sheets("シート3").Select Range("A2").Select 'データのみ取得 Range(Selection, Selection.End(xlToRight)).Select Range(Selection, Selection.End(xlDown)).Select Selection.Copy Sheets("シート1").Select ActiveSheet.Paste Application.CutCopyMode = False Selection.End(xlDown).Select Selection.Offset(1, 0).Select Sheets("シート4").Select Range("A2").Select Range(Selection, Selection.End(xlToRight)).Select Range(Selection, Selection.End(xlDown)).Select Selection.Copy Sheets("シート1").Select ActiveSheet.Paste Application.CutCopyMode = False Selection.End(xlDown).Select Selection.Offset(1, 0).Select Sheets("シート5").Select Range("A2").Select Range(Selection, Selection.End(xlToRight)).Select Range(Selection, Selection.End(xlDown)).Select Selection.Copy Sheets("シート1").Select ActiveSheet.Paste Application.CutCopyMode = False Selection.End(xlDown).Select Selection.Offset(1, 0).Select Sheets("シート6").Select Range("A2").Select Range(Selection, Selection.End(xlToRight)).Select Range(Selection, Selection.End(xlDown)).Select Selection.Copy Sheets("シート1").Select ActiveSheet.Paste Application.CutCopyMode = False Selection.End(xlDown).Select Selection.Offset(1, 0).Select End Sub

  • VBA 右端列の削除

    このたび初めて質問させていただきます。 周囲にVBAを扱うひとがいないため、初歩的(たぶん?)な質問をさせてください。 以下のようなマクロを記録したのですが、一部を編集したいと考えております。 Columns("F:H").Select Selection.Insert Shift:=xlToRight Columns("A:B").Select Selection.Cut Range("F1").Select ActiveSheet.Paste Columns("J:J").Select→J列固定ではなく右端の列と設定したい。 Selection.Cut Range("H1").Select ActiveSheet.Paste Columns("A:B").Select Selection.Delete Shift:=xlToLeft Columns("J:J").SelectをJ列固定ではなく右端の列を1列設定し切り取りがしたいのです。Range("A2").End(xlToRight).Select ActiveCell.Offset(-1,0).End(xlDown).Select と書き換えてみたのですが、うまく作動しませんでした。 どなたか教えていただけませんでしょうか?

  • excel2000 条件付書式5つ

    A1~J10に100個の数値があり、 行ごとの1位~5位にそれぞれ書式を あたえます。 マクロの記録機能を使って1位~3位を。 その後別で4位・5位を記録し、くっつけて みました。 つけたい書式は 以下のマクロの通りのセルのパターン・フォントの色です。 以下は記録したものをくっつけてつくったマクロです。 動作しません。 Sub 条件付書式5つ() Selection.FormatConditions.Delete Selection.FormatConditions.Add Type:=xlCellValue, Operator:=xlEqual, _ Formula1:="=LARGE($A1:$J1,1)" Selection.FormatConditions(1).Font.ColorIndex = 2 Selection.FormatConditions(1).Interior.ColorIndex = 1 Selection.FormatConditions.Add Type:=xlCellValue, Operator:=xlEqual, _ Formula1:="=LARGE($A1:$J1,2)" Selection.FormatConditions(2).Font.ColorIndex = 2 Selection.FormatConditions(2).Interior.ColorIndex = 16 Selection.FormatConditions.Add Type:=xlCellValue, Operator:=xlEqual, _ Formula1:="=LARGE($A1:$J1,3)" Selection.FormatConditions(3).Interior.ColorIndex = 15 Selection.FormatConditions.Add Type:=xlCellValue, Operator:=xlEqual, _ Formula1:="=LARGE($A1:$J1,4)" Selection.FormatConditions(4).Font.ColorIndex = 2 Selection.FormatConditions(4).Interior.ColorIndex = 3 Selection.FormatConditions.Add Type:=xlCellValue, Operator:=xlEqual, _ Formula1:="=LARGE($A1:$J1,5)" Selection.FormatConditions(5).Font.ColorIndex = xlAutomatic Selection.FormatConditions(5).Interior.ColorIndex = 38 End Sub 初心者のためどうしたらいいのかまったく わかりません。 どうぞお願いします。

  • Excel 2010 で勤務割表を作成しています。

    月間の勤務割表を作成しています。 3列3行を一枡として一人・一日の枡とし、勤務の割り振り状態を表示するものです。 列に日付、行を個人名(max16名)としますから、3列3行の枡が496個となります。 各枡とも1列目の1行目に勤務種別コード(1~5)を記述し、このコードNoにより4種の図形を貼付けています。 1つ1つの枡(496個)に以下のコードを書き実行しています。膨大な行数を要します。 使用するパソコンにおいては実行速度がかなりかかります。 これをもっと単純化する手法についてご教示いただければ幸いです。 Sub Macro1() Select Case Range("I6").Value '1人目-1日 Case 1: ActiveSheet.Shapes("四角形1").Select Selection.Copy Range("J7").Select ActiveSheet.Paste Case 2: ActiveSheet.Shapes("四角形2").Select Selection.Copy Range("I7").Select ActiveSheet.Paste Case 3: ActiveSheet.Shapes("四角形3").Select Selection.Copy Range("J7").Select ActiveSheet.Paste Case 4: ActiveSheet.Shapes("直線1").Select Selection.Copy Range("I6").Select ActiveSheet.Paste Case 9: ActiveSheet.Shapes("四角形3").Select Selection.Copy Range("J7").Select ActiveSheet.Paste End Select  '|   '| <同じことを一つ一つの枡ごとに繰り返し記述しています。>   '| Select Case Range("CU51").Value '16人目-31日 Case 1: ActiveSheet.Shapes("四角形1").Select Selection.Copy Range("CV52").Select ActiveSheet.Paste Case 2: ActiveSheet.Shapes("四角形2").Select Selection.Copy Range("CU52").Select ActiveSheet.Paste Case 3: ActiveSheet.Shapes("四角形3").Select Selection.Copy Range("CV52").Select ActiveSheet.Paste Case 4: ActiveSheet.Shapes("直線1").Select Selection.Copy Range("CU51").Select ActiveSheet.Paste Case 9: ActiveSheet.Shapes("四角形3").Select Selection.Copy Range("CV52").Select ActiveSheet.Paste End Select End Sub

  • マクロが実行しない

     二行三列を一枡として月の勤務割表を作成しています。マクロで同じ事を しているのにMacro1の方が実行しません。お教え願えませんでしょうか。 (尚、図形を枠線上にコピペしています。) Sub Macro1()実行しません。 Dim i As Integer Dim j As Integer For i = 10 To 43 Step 2 For j = 10 To 103 Step 3 Select Case Cells(i, j).Value Case 1: ActiveSheet.Shapes("四角形1").Select Selection.Copy Cells(i + 1, j + 1).Select ActiveSheet.Paste End Select Next Next End Sub Sub Macro2()実行します。 ActiveSheet.Shapes.Range(Array("四角形1")).Select Selection.Copy Range("J11:K11").Select ActiveSheet.Paste End Sub

  • excel2003マクロの2007での使い方

    OS:windowsXP excel2003で作成したマクロがexcel2007で動かなく困っております。 マクロでやりたいことは 1つ目のブック(以降A)の内容を、2つ目(以降B)のブックに行列を反転しコピー です。Aのブックの列数は不変ですが行数、ファイル名は毎回変化します。 excel2003では動いていたのですが2007ではコピー元がBのブックになってしまいます。 実際のマクロは Workbooks(1).Activate Range("A1").Select Range(Selection, Selection.End(xlDown)).Select Range(Selection, Selection.End(xlToRight)).Select Selection.Copy Windows("B.xls").Activate Sheets("sheet2").Select Range("B1").Select Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=True です。 よろしくお願いいたします。

  • Excel2003 VBAにて条件付き書式のマクロを書きたいのですが、

    Excel2003 VBAにて条件付き書式のマクロを書きたいのですが、どうも上手くいきません。 1列おき(C列、E列、G列・・・)に条件付き書式を設定し、 条件は、 ・セルの値が”0”より大きい場合はフォント”赤”で表示。 ・セルの値が”0”より小さい場合はフォント”緑”で表示。 としたいと思いマクロを組んでみました。 Sub Color() Dim j, j0 Dim x Worksheets("sheet1").Active Application.ScreenUpdating = False j0 = 3 j = 300 For x = 3 To 100 Step 2 Range(.Cells(j0, x), .Cells(j, x)).Select Selection.FormatConditions.Add Type:=xlCellValue, Operator:=xlGreater, _ Formula1:="0" Selection.FormatConditions(1).Font.ColorIndex = 3 Selection.FormatConditions.Add Type:=xlCellValue, Operator:=xlLess, _ Formula1:="0" Selection.FormatConditions(2).Font.ColorIndex = 10 Next Application.ScreenUpdating = True End Sub デバックでステップインしていくと、ここで実行時エラー1004 アプリケーション定義またはオブジェクト定義のエラーです。がでます。 Selection.FormatConditions(1).Font.ColorIndex = 3 -------------------------------------------------------------------------------------- Selection.FormatConditions.Add Type:=xlCellValue, Operator:=xlGreater, _ Formula1:="0" Selection.FormatConditions(1).Font.ColorIndex = 3 Selection.FormatConditions.Add Type:=xlCellValue, Operator:=xlLess, _ Formula1:="0" Selection.FormatConditions(2).Font.ColorIndex = 10 -------------------------------------------------------------------------------------- この間は、マクロの自動記録で書かれてるので間違ってはいないハズなのですが、、、 お知恵を下さい。 よろしくお願いします。

  • エクセルVBAで教えて下さい。

    A1のセルに [ 1- 5] 4.05398e-01 3.63385e-01 -2.22992e-01 9.89158e-03 -6.43695e-02 A2のセルに [ 6-10] -5.12224e-04 4.07480e-04 -2.73746e-04 -1.77853e-02 -2.13805e-03 A3のセルに [11-15] -6.88489e-03 -2.06765e-02 -9.44633e-03 6.97059e-03 -1.28400e-02 と、このような感じでA7セルまで同じ感じでスペースで空いた数値が入力されています。 A8のセルのみ [36-37] -6.39210e-03 -1.55806e-03 と入力されております。 まず行いたいのはスペースが空いてる部分で、それぞれの数値を各セルに分けたいです。 A1のセルに入力されている [ 1- 5] 4.05398e-01 3.63385e-01 -2.22992e-01 9.89158e-03 -6.43695e-02 ならば A1に[1-5] B1セルに4.05398e-01 C1セルに3.63385e-01 のように これをA1からA8のセルで行ったあと指定のセルを30行目に貼り付けます。 E1→A29 C2→B29 D2→C29 E2→D29 E3→E29 F3→F29 B4→G29 D5→H29 E5→I29 F5→J29 貼り付けのデータは増えていきます。つまり、30行目にデータが入ってる場合は そのデータが1行下の行に下がり、新たなデータが30行目に追加されます。 このようにして、データが最大で58行目まで追加される可能性があります。 最小であれば30行目、31行目の2つしかない場合あります。 この時、0の近似値を各列のセルから探し、当てはまるセルを赤く塗り潰すというのが 今回行いたいことです。 A列ならA30~A58までの中で0の近似値を探し、当てはまるセルを赤く塗り潰す。 ただ空白の場合は無視してもらいたいです。0の近似値だと空白が選択されてしまうので。 近似値探しの前までならマクロがありますのでご参照下さい。 Sub Macro4() ' ' Macro4 Macro ' ' Range("A1:A8").Select Selection.TextToColumns Destination:=Range("A1"), DataType:=xlFixedWidth, _ FieldInfo:=Array(Array(0, 1), Array(7, 1), Array(21, 1), Array(34, 1), Array(47, 1), _ Array(60, 1)), TrailingMinusNumbers:=True Range("A1").Select Range("E1").Select Selection.Copy Range("A29").Select ActiveSheet.Paste Range("C2:E2").Select Application.CutCopyMode = False Selection.Copy Range("B29").Select ActiveSheet.Paste Range("E3:F3").Select Application.CutCopyMode = False Selection.Copy Range("E29").Select ActiveSheet.Paste Range("B4").Select Application.CutCopyMode = False Selection.Copy Range("G29").Select ActiveSheet.Paste Range("D5:F5").Select Application.CutCopyMode = False Selection.Copy Range("H29").Select ActiveSheet.Paste Range("J7").Select Application.CutCopyMode = False Range("A29:K29").Select Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove Range("A29:K29").Select With Selection.Interior .Pattern = xlNone .TintAndShade = 0 .PatternTintAndShade = 0 End With Range("A29").Select Range("A1:F8").Select Selection.ClearContents Range("A1").Select Range("K29").Select With Selection.Interior .Pattern = xlNone .TintAndShade = 0 .PatternTintAndShade = 0 End With Selection.NumberFormatLocal = "G/標準" End Sub わかりずらい質問ですみませんが、ご指導の程 お願い致します。

  • 複数の条件付書式

    B列に1~5までに数字がランダムにはいっています。 条件は ・B列が空白ならA列は無色 ・B列が1ならA列は赤 ・B列が2ならA列は青 ・B列が3ならA列は黄色 ・B列が4ならA列は緑 というのをマクロで行ないたいです。 自分で記録して Sub Macro32() Columns("A:A").Select Selection.FormatConditions.Delete Selection.FormatConditions.Add Type:=xlExpression, Formula1:="=B1=""""" Selection.FormatConditions(1).Interior.Pattern = xlNone Selection.FormatConditions.Add Type:=xlExpression, Formula1:="=B1=1" Selection.FormatConditions(2).Interior.ColorIndex = 38 Selection.FormatConditions.Add Type:=xlExpression, Formula1:="=B1=2" Selection.FormatConditions(3).Interior.ColorIndex = 40 End Sub 4つ目に Selection.FormatConditions.Add Type:=xlExpression, Formula1:="=B1=3" Selection.FormatConditions(4).Interior.ColorIndex = 32 とするとエラーになります。 3つ以上の条件付書式の書き方を教えてください。 あとこの構文のSelectionはwithで省略できますか? よろしくお願いします。

  • 列をアルファベットではなく数値で指定するには

    Vbaで条件付き書式を付ける場合、 列をアルファベットではなく数値で指定するにはどうすればいいですか? Sub Macro() Dim i As Long i = 1 Columns(i).Select Selection.FormatConditions.Delete Selection.FormatConditions.Add Type:=xlExpression, Formula1:="=A1=""aaa""" Selection.FormatConditions(1).Font.ColorIndex = 3 '文字色を赤にする End Sub この場合の、 Formula1:="=A1=""aaa"""のA1を Cells(1,i)みたいにしたいのですが、やり方を教えてください。

専門家に質問してみよう