• ベストアンサー

線引きマクロ

宜しくお願いします。A列からE列まであり、E列に数字が記載されており、数字が例えば、6から5に下がった所に線で区切りたいのです。数字は900行ぐらいランダムに行が進むにつれ下がって行きます。宜しくお願いします。

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

  • ベストアンサー
  • kkkkkm
  • ベストアンサー率65% (1618/2457)
回答No.2

> 数字が例えば、6から5に下がった所に 以下のパターンでいかがでしょう。 単に下がったらと、差がマイナス1だったらと、6(あるきまった値)に対してマイナス1だったらと、3パターンほど考えられましたのでそれぞれ記載してます。 利用時には不要な部分を削除してください。 また、 ColorIndexは以下のページを参考に http://www.relief.jp/itnote/archives/000482.php それぞれのプロパティの指定は以下のページを参考にしてください。 http://excel-ubara.com/excelvba1/EXCELVBA335.html Sub Example() Dim c As Range Application.ScreenUpdating = False '差は関係なく下がった時に線を引く For Each c In Range(Cells(1, "E"), Cells(Cells(Rows.Count, "E").End(xlUp).Row - 1, "E")) If c.Value > c.Offset(1, 0).Value Then With Range(Cells(c.Row, "A"), Cells(c.Row, "E")).Borders(xlEdgeBottom) .LineStyle = xlContinuous .ColorIndex = xlAutomatic .Weight = xlThin End With End If Next '数値に関係なく差が1下がった時に線を引く For Each c In Range(Cells(1, "E"), Cells(Cells(Rows.Count, "E").End(xlUp).Row - 1, "E")) If c.Offset(1, 0).Value = c.Value - 1 Then With Range(Cells(c.Row, "A"), Cells(c.Row, "E")).Borders(xlEdgeBottom) .LineStyle = xlContinuous .ColorIndex = xlAutomatic .Weight = xlThin End With End If Next '決まった数値の差があった時に線を引く6から-1になった時 For Each c In Range(Cells(1, "E"), Cells(Cells(Rows.Count, "E").End(xlUp).Row - 1, "E")) If c.Value = 6 Then If c.Offset(1, 0).Value = c.Value - 1 Then With Range(Cells(c.Row, "A"), Cells(c.Row, "E")).Borders(xlEdgeBottom) .LineStyle = xlContinuous .ColorIndex = xlAutomatic .Weight = xlThin End With End If End If Next Application.ScreenUpdating = True End Sub

その他の回答 (1)

  • ushi2015
  • ベストアンサー率51% (241/468)
回答No.1

こんにちは Sub test()   Dim v As Variant   '-1 検査値以上の最小の値が検索されます。   'このとき検査範囲のデータは、降順に並べ替えておく必要があります   v = Application.Match(6, Range("E:E"), -1)   If IsError(v) Then     MsgBox "6以上の値が無いか、降順になっていません。"     Exit Sub   End If   With Range("A" & v).Resize(, 5).Borders(xlEdgeBottom)     .LineStyle = xlContinuous     .ColorIndex = 0     .TintAndShade = 0     .Weight = xlThin   End With End Sub とかで。

関連するQ&A

  • エクセルの検索・関数

    お分かりの方、教えて下さい!! エクセルにて、 A列に13桁の数字がランダムにあり、 C列にも13桁の数字がランダムにあり、 E列には1桁~3桁の数字がランダムにあります。 B列に同じ行のA列の13桁と一致するC列の13桁を見つけ、 そのC列のと同じ行のE列の数字を入れたいのです。 上記の内容が出来る関数を教えて下さい。 分かりにくくてすみませんが、よろしくお願いいたします。

  • マクロを教えてください

    CSVファイルで、     A    B    C    D    E   F 1 444  あああ  123  けけけ 2 555  いいい  456  かかか 3 666  ううう  000        4 山   5 川 上記のようなCSVファイルで3行目のC列には0・D列はブランクです。 そこで3行目でD列がブランクのときは、A列をC列に、B列をD列に持ってきて あいたA列には999B列には@@@を入れたいのです。 そしてもうひとつは、A列をE列にコピーをしてF列はE列の数字以外を持ってきたいのです。 結果は   A      B    C    D   E   F 1 444  あああ  123  けけけ  444 2 555  いいい  456  かかか  555 3 999  @@@  666  ううう  999 4 山                    山 5 川                    川 といった結果のマクロを作りたいです。 どなたか教えてください。よろしくお願いします。

  • 実力がなくマクロがわかりません。

    実力がなくマクロがわかりません。 C列の一番最後に入力された数字と一つ前の数字を比較し同じなら、E列の一番最後 に入力された数字とJ列一つ前の数字を足しJ列の一番最後にその数字を入力する。 違うならE列の一番最後に入力された数字入力する。 例えば、C8=0・C9=1、E9=500・E8=600・J8=600の時は、 J=9に500と表示さす。 またこの状態でC10=1、E10=1500時は、J=10に2000と表示さす。 関数を使うとセルJ9には=IF(C9=C8,E9+J8,E9)、 セルJ10にはIF(C10=C9,E10+J9,E10)で出来ますが、 以後11行目12行目・・・と永遠にJ列に関数をコピーしないと駄目なのです。 E列に数字が入った時に自動でJ列に表示さすにはマクロでやるしか無理みたいですが こちらはそこまで実力がありません。丸投げになりますが、よろしくお願い致します。  7行   C列     E列        J列  8行    0     600       600    9行    1     500       500 10行    1    1500      2000  

  • エクセルのマクロ

    A列にアルファベット、B列からE列まで数字が入力されている表があります。 A1から順に(A1→A2→A3→・・・)、A列の文字を調べてそれが"A"であった場合のみ、同じ行のB列からE列の最大値をF列に、最小値をG列にコピーする(A列の文字が"A"以外の場合は何もせず下の行を調べる)、ということを繰り返し、A列が空白になった時その作業を中止する、というマクロを作りたいのです。 もちろん、一つの表だけならA列で並べ替えをして関数を使えば簡単にできますが、表がたくさんあるので自動化したいと思います。 マクロに関してはまったくの初心者なので、お知恵をお借りできればうれしく思います。

  • マクロで指定の行に罫線を引く方法

    エクセル2003です。 やりたいことはタイトルにあるように指定行に罫線を引くなのですが 具体的には、 A列の10行目から80行までランダムに1から3までの数字が入っていて、"1"が入ってるセルの上側でその行のA~AC列まで二重罫線を引きたいという状況です。 条件付けで1を探してそのセルの範囲で罫線を引かせるってのは、For Nextで探しつつって感じなんでしょうか? よろしくお願いします。

  • エクセルにおいて、検索した個数表示について

    表を作るのに困っていますので、よろしくお願いします。 例えば、 A列A1~A20までのセルに、1~3までの数字がランダムに入っています。 BとDとF列のセルに、あ~おまでの文字が、ランダムに入っています。 A列の数字が1のとき、その行のB、D、Fに、「あ」が何個、「い」が何個、「う」が何個・・・・。 A列の数字が2のとき、その行のB、D、Fに、「あ」が何個、「い」が何個、「う」が何個・・・・。 A列の数字が3のとき、その行のB、D、Fに、「あ」が何個、「い」が何個、「う」が何個・・・・。 という表を作りたいのですが、どうしたら良いでしょうか。 よろしくお願いします。

  • エクセルでランダム表示

    今は『=INDEX( : ,COUNTA( : )*RAND()+1)』で、F9を押す毎に指定した列からランダムで値を持ってきてるんですけど 上記のを使ってE列の中からA列にランダムで表示して それと同時にA列に表示されたE列の値があるのと同じ行にあるF列の値をB列に表示させたいんですけど どのようにすれば良いんでしょうか? 例えば、F9で更新した後にランダムで、    A列     B列 [E列2行目][F列2行目] [E列8行目][F列8行目] [E列5行目][F列5行目] みたいな結果を出したいんです

  • エクセルのマクロの作り方で、教えてください。

    エクセルのVBAを使って、選択肢を選んで答える簡単な学習ソフトを作っています。問題文を作るときは正解をいちばん左のセルに入れて、あとから3つの選択肢の順番をランダムに入れ替える簡単なマクロを作ろうとしましたがうまくいきません。たとえば、A列に問題番号、B列に問題文、C列~E列までに選択肢の1,2,3が入っています。問題は20問、つまり1から20行まで入っています。そしてコマンドボタンを押すと適当にC~Eの内容が入れ替わるようにしたいのです。私がやろうとしたのは選択肢1~3を文字列の変数にして、1行目から20行目まではループで実行させるのですが、肝心な入れ替えをどのようにしたらよいかわかりません。乱数を使ったらどうかと思ったのですが、使い方がわかりません。もっと簡単な方法があればそれも教えてください。VBAの初心者ですのでよろしくお願いします。

  • エクセルマクロで条件に該当する数値を探す

    エクセル初心者です。 シート1のA1~A18に1~18の数値がランダムに入っています。(重複した値は無し) シート2の3行目C3~T3にも1~18の数値がランダムに入っています。(空欄あり、重複した数値は無し) シート2の2行目C2~T2までは左から順に1~18の数値が入っています。(順位表示) 以上の条件下で下記の作業をマクロで実行させる式を教えてください。 シート1のA1~A18の値と同じ値を、 シート2の3行目C3~T3の中からどのセル(列)に入っているかを確認して、さらに該当する列の2行目C2~T2の値を、シート3の1行目A1~R1に表示させる。 例:シート1のA1=3、A2=2、A3=1の時、 シート2のC3=3、D3=1、E3=2でした。 シート2のC2=1、D2=2、E2=3です(この行の数値は毎回同じ) 上記の時シート3にはA1=1、B1=3、C1=2となります。 *シート1のA列A1~A18とシート3の1行目A1~R1の位置関係はリンクしています。(列→行) シート1 A列 1 3 2 シート2   A列 B列 C列 D列 E列 2行見出し見出し1  2  3 3行見出し見出し3  1  2 シート3 A列 B列 C列  2  1  3 ご理解頂けたでしょうか? 初心者ですので分かりやすい回答を宜しくお願いいたします。

  • エクセルのマクロについて

    エクセルのシートに A列の10行目から60009行めまで数字が入力されてます。 10行目から110行までの109行目までの100行のなかで 一番小さい数字から8番目に小さい数字までの8個の数値の右横のセル(B列)に 「a」というマークをつけたいのです。 同様に110行目から209行、210行から309行 というふうに59910行目~60009目 までやりたいのですがどうのようにすれば良いでしょうか? 関数で出来るならそれでも良いです。 教えていただけませんでしょうか? よろしくお願いします。

専門家に質問してみよう