エクセルで、以下のような表があったとします
商品コード 商品名 商品の特徴
0001 商品1 商品1の特徴1
商品1の特徴2
0002 商品2 商品2の特徴1
商品2の特徴2
商品2の特徴3
・
・
・
この場合に、一つの商品の情報を実線で囲み、その中を
1行づつ横に点線を引くという作業がしたいのです。
ただ、その時によって商品の数が変わるため、
(1)一つの商品の範囲を認識して罫線を引く
(2)その時によって数が変わる商品それぞれに(1)の操作をする
この2点をクリアしたマクロが作りたいのです
皆様のお知恵を貸してください。
ちなみにexcel2003です。
A 回答 (8件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
サンプルです、修正は、ご自分で、お願いします。
Sub keisen()
Dim x, y
For x = Cells(65536, 3).End(xlUp).Row To 2 Step -1
y = IIf(Cells(x, 1).Value = "", Cells(x, 1).End(xlUp).Row, x)
With Range(Cells(y, 1), Cells(x, 3))
.Borders(xlEdgeLeft).LineStyle = xlContinuous
.Borders(xlEdgeTop).LineStyle = xlContinuous
.Borders(xlEdgeBottom).LineStyle = xlContinuous
.Borders(xlEdgeRight).LineStyle = xlContinuous
If x <> y Then .Borders(xlInsideHorizontal).LineStyle = xlDot
End With
x = y
If x - 1 <= 2 Then Exit Sub
Next x
End Sub
ありがとうございます!!
列が、例では3列までですが、7列まである場合は、
1) For x = Cells(65536, 7).End(xlUp).Row To 2 Step -1
2) With Range(Cells(y, 1), Cells(x, 7))
に変えるだけで大丈夫でしょうか?
これだけでも充分効率化は図れるのですが、作っていただいた
ものですと、横線がすべて点線になっており、商品が変わる毎に
実線で区切りたい場合は、どうすればよろしいのでしょうか?
重ねてお願いいたします。
No.3
- 回答日時:
こんなの簡単で、丸投げすることも無いでしょう。
(1)まづマクロの記録を取り(罫線を引く位置は置いといて)
罫線、点線を引くなどのコードがどうなるか知る。
上罫線だけを引く場合はどういうコードになるか。
それと多数列に罫線の引き方のコード。
(2)実線を引く場所の特徴を考える。これは質問者が一番良く事情を知っているはず。
例 各行で商品名の列が空白でなかったら、上罫線を実線で引く
(3)点線を引くべき行の特徴を考える。
例 商品列が空白なら、上罫線を点線で引く。
===
以上ぐらい考えて、何か疑問があれば質問するようにしないと。
頼りすぎ。 Googleででも罫線を引く、点線を引く VBAで照会したら。
内容も難しい点はないと思う。
No.4
- 回答日時:
No.1です。
>サンプルです、修正は、ご自分で、お願いします。
>・・・に変えるだけで大丈夫でしょうか?
最初から実際の範囲を提示するべきですし、確認してから質問してください。
>・・・横線がすべて点線に
A列に例題の様にコード番号が入力されていれば、こちらでは実線が引かれています。
追記
Dim x, y の下へ
Application.ScreenUpdating = False
If x <= 2 Then Exit Sub を削除して
Next x の下へ
Application.ScreenUpdating = True
としてみても
>最初から実際の範囲を提示するべきですし・・・
申し訳ございません。
実際は、
商品コード/発注部署/発注日/納品日/商品名/特徴の分類/特徴の内容
となっており、商品コードが0001ではなく、5桁で51237とか
85068みたいな数字なんです。
空白になり得るのは
特徴の分類/特徴の内容以外の5列です。
No3の方も仰る通り、色々調べてやってはみたのですが、なぜか
実線が引かれず、うまくいかない原因を見つけられません。
お力をお貸し頂ければ幸いです。
No.5
- 回答日時:
こんにちは。
ちょっと式が複雑になりますが、条件付き書式で希望の動きになるかと思います。
A1:商品コード
B1:商品名
C1:商品情報
として、2行目からデータを入力すると仮定します。
A列とB列の2行目には
(1)下部実線書式:数式が
=OR((AND(C2<>"",A3="",C3="")),(AND(C2<>"",A2="",C3<>"",A3<>"")),(AND(C2<>"",A2<>"",C3<>"",A3<>"")))
(2)下部点線書式:
=AND(C2<>"",A3="",C3<>"")
C列2行目には
(1)下部実線書式/右部実線書式:数式が
=OR((AND(C2<>"",A3="",C3="")),(AND(C2<>"",A2="",C3<>"",A3<>"")),(AND(C2<>"",A2<>"",C3<>"",A3<>"")))
(2)下部点線書式/右部実線書式:数式が
=AND(C2<>"",A3="",C3<>"")
と入れて、下の行へ書式の複写をして下さい。
するとほぼ同様の動きになると思います。後は、数式・書式の調整を行ってください。
私も、3行ごとに罫線を引いて入力するなどで使っています。
No.6
- 回答日時:
お疲れ様です。
多分A列は空白に見えていて、数式で空を表示していたり、スペースがあったりしていませんか(本当の空白セルではない)?
提示したマクロは、サンプル画像での、A11 がアクティブセルの時、Ctrl+↑ 押下で、A10(0003)がアクティブにならないと、実線が引かれませんので、確認して下さい。
例えばA列の最下行のセルを選択して、Ctrl+↑ 押下で A1 セルが選択されると、現在のマクロでは正しく動作しません。
A列に数式があり、数式を削除してよいならば、A列の範囲を選択してコピー→形式を選択して貼り付け の 値 で、数式を削除してみてください。
A列の最下行から、Ctrl+↑を繰り返し押下して、コード番号を順々に選択できるようになれば、現在のマクロで実線が引かれます。
又は、
>空白になり得るのは 特徴の分類/特徴の内容以外の5列
上記の列で、本当の空白セルがある列があるのならば、その列を対象に商品コード別の範囲の上限を捜すことも出来ます。(補助列を作っても良いと思います)
Sheetの変更が出来ないのならば、No.3さんでも書かれているように、1行ずつ、A列を基準に、罫線種を選択しながら、上罫線を引くマクロになると思います。
No.7
- 回答日時:
No6 の追記です。
A列の空白セルを空白にさせるには、色々ありますが、
(数式などを削除しても、Ctrl+↑で、コード番号を選択できない場合)
A列を選択 → データ → 区切り位置 → 完了 で、空白セルになると思います。
又は、A1を選択 → フィルタ → オートフィルタ → フィルタの 空白セル を抽出 → 表示されたA列のセルを選択 → Delete で、空白セルになると思います。
ご自分で作成(修正)された、マクロを提示してみて、A列等の表示が直接入力なのか、数式等で、表示させているのかも、お教え下さい。
No.8
- 回答日時:
商品コードの列で、コード入力セル以外は、間違いなく空白セルである
ということなら、turuzouさんのコードで希望通りの動作をします。
商品コード列の最上行セルで、Ctrl+↓ とキー操作してみてください。
最終行までカーソルが移動するなら、空白セルはないので、すべて破線になります。
数値かどうか判定すればどうでしょうか。
試しに組んでみました。
Sub test1()
Dim rng As Range
Dim r As Range
Set rng = Range("A1", "A" & Cells(Rows.Count, "C").End(xlUp).Row)
rng.Resize(, 3).BorderAround LineStyle:=xlContinuous, Weight:=xlThin
Set rng = rng.Offset(1).Resize(rng.Count - 1)
For Each r In rng
With r.Resize(, 3).Borders(xlEdgeTop)
If IsNumeric(r.Value) Then
.LineStyle = xlContinuous
.Weight = xlThin
Else
.LineStyle = xlDash
.Weight = xlThin
End If
End With
Next
End Sub
>No3の方も仰る通り、色々調べてやってはみたのですが、なぜか
>実線が引かれず、うまくいかない原因を見つけられません。
抽象的なことでなく、ご自分でやったこと、書いたコードを提示し、
間違いを指摘してもらうようにすればどうでしょうか。
希望通りの動作をするコードの提供を待っているより、確実に実力UPになると思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- お菓子・スイーツ お菓子について聞いてみたいです(ˊ˘ˋ*) ①性別・年代 ②知らない店でお菓子を買う・食べるきっかけ 1 2023/05/02 22:25
- Excel(エクセル) エクセルの条件付き書式 個人シートを参照して集計シートに色付けしたい 1 2023/06/22 00:39
- Excel(エクセル) エクセルの表について 3 2023/04/14 18:00
- ヤフオク! ヤフオクの取引について 1 2022/04/16 23:08
- Excel(エクセル) Excelの操作方法を教えてください!頭文字2~8文字で特定の値に返す方法 8 2022/07/14 11:26
- Excel(エクセル) エクセルでのVBA 2 2022/08/03 06:48
- Excel(エクセル) エクセル 関数について 4 2022/08/05 11:03
- Excel(エクセル) excelで検索した商品の画像(ネットワーク上の)を表示させたい。 3 2023/06/28 00:32
- Visual Basic(VBA) 【ExcelVBA】Powerクエリーでいうピボット解除と同じ処理をVBAで 4 2022/07/06 17:09
- Visual Basic(VBA) EXCEL関数LOOKUPとFILTERについての質問です 1 2022/12/21 05:53
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excelの条件付き書式設定の太い...
-
Excelの外枠太罫線を2~3倍さ...
-
excel2003 罫線だけを保護したい
-
EXCELで、下線の太さを変...
-
【エクセル】謎の枠線の消し方
-
エクセル
-
エクセルで罫線も一緒に並び替...
-
EXCELのオートフィルタで罫線が...
-
罫線の色を薄くしたい
-
エクセル表の罫線(縦)が消せ...
-
エクセルでデータがある部分だ...
-
エクセル 4行ごとに線を引きたい
-
エクセルのアンダーラインについて
-
Excelでアンダーラインに文字が...
-
罫線が引かれているセルの個数...
-
エクセルの罫線を固定させる方...
-
エクセルExcel 「/」セルの斜...
-
エクセル 入力されていない線...
-
決まった罫線のなかで、文章入...
-
OpenOfficeのCalcで罫線の削除...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelの条件付き書式設定の太い...
-
Excelの外枠太罫線を2~3倍さ...
-
excel2003 罫線だけを保護したい
-
EXCELで、下線の太さを変...
-
罫線の色を薄くしたい
-
【エクセル】謎の枠線の消し方
-
エクセルで文字を入力すると罫...
-
エクセルで罫線も一緒に並び替...
-
エクセル 入力されていない線...
-
決まった罫線のなかで、文章入...
-
エクセルを印刷すると勝手に線...
-
エクセルのアンダーラインについて
-
勝手に背景に色が付いて困っ...
-
エクセル
-
パワーポイントで、表の一部を...
-
エクセルの罫線を固定させる方...
-
エクセル 罫線入りの文字 文...
-
Excelでアンダーラインに文字が...
-
エクセル表の罫線(縦)が消せ...
-
罫線が引かれているセルの個数...
おすすめ情報