Excelで困っています(>_<)
今、ファイルが二つあります。
一つめのファイルは『野菜&果物ファイル.xls』、二つ目のファイルは『果物ファイル.xls』とファイル名を付けています。
一つめのファイルには、
セロリ
マンゴー
バナナ
トマト
リンゴ
白菜
ホウレンソウ
イチゴ
・
・
・
と、野菜と果物の名前がA1からずら~っと縦に並んでいます。
二つ目のファイル『果物ファイル.xls』には、
バナナ
リンゴ
イチゴ
・
・
・
と、A1から果物の名前だけがずら~っと並んでいます。
ここで、『果物ファイル.xls』にある全果物のデータを参照し、『野菜&果物ファイル.xls』の中で、一致するデータ(果物)があれば、その該当データに「/(罫線)」を引きたいのです。
そして、野菜のデータと果物のデータの区別を、視覚的にわかりやすくしたいのです。
「色をつける」「網をかける」のでも大丈夫なのですが、モノクロでプリントアウトした際も一目でわかるのはやはり、「/(斜線)」だと思いまして。
関数やマクロを使って、何とか解決できないでしょうか?
No.1
- 回答日時:
スマートではないですが、関数でできそうです。
(1)野菜&果物ファイル.xlsのB列に以下の式を入力します。
=ISERROR(MATCH(A1,[果物ファイル.xls]Sheet1!$A$1:$A$3,0))
(2)野菜&果物ファイル.xlsのA列の値が入力されているセルを全て
選択し、書式⇒条件付書式を選択し、『数式が』『=$B1=FALSE』
と入力し、書式を設定する。
※残念ながら斜線は引きないみたいですが、濃い目の色をつければ、
白黒印刷でも区別できると思います。
No.2
- 回答日時:
VBAでやらないと出来ないでしょう。
それも変更即時反応型は難しい。
ーーー
近い機能は条件付き書式なのです。
A.そしてその条件で「数式が」を選ぶことで、VLOOKUPのような(検索)関数も使えるでしょうし、
B.条件に合ったものに罫線も引けます
ーー
しかし問題は、相手側に「一致するデータ(果物)があれば」ですが
複数有るときは、第2番目以降を捉えることが関数では難しい(普通で不可能)なのです。
その重複出現あるかどうかのことを質問に書いてないのは、コンピュタ利用経験が少ない証拠です。これをデータの寄せ集まりでは、いつも意識すること。処理に大きく影響します。
ただ相手の検索する表に本件のように、有るかないかを調べるだけなら、2番目以降の重複出現は関係ない(1つめが見つかればとにかくあると言える)ですが。
ーー
では
ISERRORとVLOOKUPの組み合わせで出来そうか考えます。
普通に式を書くと、参照する検索表が他シートだとエラーになる。他ブックならましてダメ。
Sheet1とSheet2の例ですと
例データ
Sheet1
A1:A5
aaa
bbb
cc
ddd
ee
これに範囲に名前をつける(ここでは、検索という名前とする)
Sheet2に
A1:A5に
aa
bb
cc
dd
ee
と有るとする。
ーー
Sheet2のA1:A5(データ全て)を範囲指定する。そして
書式ー条件付き書式ー数式が
数式に =NOT(ISERROR(VLOOKUP(A1,検索,1,FALSE)))
書式に セルのパターン色でライトブルーを指定ーOK
ーー
結果
cc、eeに色がつきました。
ーー
書式をパターン色にしたのは、私のバージョンの場合、罫線で斜線が出てこないからです。質問者の場合、出てくればそれでやってください。
ーー
他ブックの場合ですが、同じくセル範囲に名前をつけるほか無いと思うが、質問者でやってみてください。うまく行くとは思いますが、ブックがちがうと、エクセルでは他世界で、何かと難しくなったり、不可能に有る場合はあります。
セル範囲に名前をつける問題で、シートレベル、ブックレベルなどあり、特別に勉強が必要だと思う、分野だと思います。
うまくできました!
ありがとうございます<m(__)m>
やはりブックレベルだとややこしくなるのですね。
ただ、2つのファイルがどちらもデータがいっぱい入力されていて重いので、1つのファイルにまとめると相当重くなってしまう状況なのです(>_<)
ブックレベルも勉強しなければならないと痛感しました(^_^;)
No.3
- 回答日時:
マクロでも良いとのことなので一例です。
BOOK名はありましたがSheet名がないので2つのBOOKともSheet1だとします。
データは両方ともA1セルから下へ縦に一列にあるものとします。
データは途中に空白はないものとします。
両方のBOOKを開いた状態で以下のマクロを実行してください。
Sub test01()
Set bk1 = Workbooks("野菜&果物ファイル.xls")
Set bk2 = Workbooks("果物ファイル.xls")
With bk1
Set myRng1 = .Sheets("Sheet1").Range(.Sheets("Sheet1").Range("A1"), .Sheets("Sheet1").Range("A1").End(xlDown))
End With
With bk2
Set myRng2 = .Sheets("Sheet1").Range(.Sheets("Sheet1").Range("A1"), .Sheets("Sheet1").Range("A1").End(xlDown))
End With
For Each c In myRng1
For Each cc In myRng2
If c.Value = cc.Value Then
With c.Borders(xlDiagonalUp)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
End If
Next cc
Next c
End Sub
No.4
- 回答日時:
No3 merlionXXです。
先ほどのでも大丈夫とは思いますが、念のため修正します。
Sub test02()
Dim myRng1 As Range, myRng2 As Range, c As Range, cc As Range
With Workbooks("野菜&果物ファイル.xls").Sheets("Sheet1")
Set myRng1 = .Range(.Range("A1"), .Range("A1").End(xlDown))
myRng1.Borders(xlDiagonalUp).LineStyle = xlNone
End With
With Workbooks("果物ファイル.xls").Sheets("Sheet1")
Set myRng2 = .Range(.Range("A1"), .Range("A1").End(xlDown))
End With
For Each c In myRng1
For Each cc In myRng2
If c.Value = cc.Value Then
With c.Borders(xlDiagonalUp)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
End If
Next cc
Next c
End Sub
二度も回答していただいたのに、返信が遅くなってすいません!
merlionXXさんのやり方すごいですね、教えていただいたマクロを実行すると、うまくいきました!該当するデータに斜線が引かれました!!
ほんと驚きです。
誠に図々しいのですが、もう1度ご指導いただきたい疑問が湧きまして(>_<)
データにうまく斜線が引かれ、
セロリ
マンゴー
バナナ(斜線あり)
トマト
リンゴ(斜線あり)
白菜
ホウレンソウ
イチゴ(斜線あり)
のようになったのですが、斜線が引かれたデータと、斜線が引かれてないデータが、まばらに分散していることに頭を抱えています。
この状態から、なんとか
バナナ(斜線あり)
リンゴ(斜線あり)
イチゴ(斜線あり)
セロリ
マンゴー
トマト
白菜
ホウレンソウ
と、斜線のあるデータと斜線のないデータを、それぞれ近くにかためて表示することは、可能なのでしょうか?
「並べ替え」とか「フィルタ」とかいじってみたのですが、どうしてもうまくいきません。
マクロを書き換えなければならないのでしょうか・・・もしよろしければ、再度ご指導いただきたいです。
よろしくお願いします(>_<)
No.5ベストアンサー
- 回答日時:
No3-4 merlionXXです。
No4の再質問の書き込みを見ました。
罫線は並べ替えても移動してくれませんからね。
それなら並べ替えてから罫線をひくことになります。
こんなんでどうでしょ?
Sub test03()
Dim myRng1 As Range, myRng2 As Range, c As Range, cc As Range
With Workbooks("野菜&果物ファイル.xls").Sheets("Sheet1")
Set myRng1 = .Range(.Range("A1"), .Range("A1").End(xlDown))
myRng1.Borders(xlDiagonalUp).LineStyle = xlNone
.Columns("B:B").Insert Shift:=xlToRight
End With
With Workbooks("果物ファイル.xls").Sheets("Sheet1")
Set myRng2 = .Range(.Range("A1"), .Range("A1").End(xlDown))
End With
For Each c In myRng1
For Each cc In myRng2
If c.Value = cc.Value Then
c.Offset(0, 1).Value = 1
End If
Next cc
Next c
With Workbooks("野菜&果物ファイル.xls").Sheets("Sheet1")
.Range(myRng1, myRng1.End(xlToRight)).Sort Key1:=Range("B1"), Order1:=xlDescending, Header:=xlNo, Orientation:=xlTopToBottom
With .Range(.Range("B1"), .Range("B1").End(xlDown)).Offset(0, -1).Borders(xlDiagonalUp)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
.Columns("B:B").Delete Shift:=xlToLeft
End With
End Sub
再度ご回答いただき本当にありがとうございます!
merlionXXさんのマクロを実行してみたのですが、
実行時エラー ' 1004 '
Border クラスの LineStyle プロパティを設定できません。
というエラーメッセージと共に、
myRng1.Borders(xlDiagonalUp).LineStyle = xlNone
の箇所が、黄色くマーカーされてしまいました(ToT)
マイクロソフトのサポートページ↓
http://support.microsoft.com/kb/157556/ja
にも、同じようなエラーの例が記載されていたのですが、私が使っているのはExcel2007なので、あまり関係ないような気がしました・・・
どこを修正すべきでしょうか?
本当にすいません、お暇な時に、もう一度ご回答いただければ幸いです。
よろしくお願いします。
No.6
- 回答日時:
merlionXXです。
No5で回答した Sub test03 を、エクセル2000、2003、2007の3バージョンで実行してみましたが、そのようなエラーは再現できませんでした。
No.7
- 回答日時:
myRng1.Borders(xlDiagonalUp).LineStyle = xlNone は斜めの罫線を削除しています。
ひょっとして、シート保護してませんか?
保護してると手動でも罫線の削除はできませんのでマクロでもエラーになります。
何度も親身に教えていただきありがとうございます!
原因がわかりました。
マクロを『野菜&果物ファイル.xls』上ではなく、『果物ファイル.xls』上で実行していたのが問題でした。
『野菜&果物ファイル.xls』のブック上でマクロを実行すると、うまく斜線が引かれました(^_^;)
ただ、merlionXXさんが書いてくださったマクロは、B列に何かデータが入っていると、うまくできませんでした(ToT)
エラー表示されることはないのですが、変なところに罫線が引かれたり、「1」という数字がB列のデータに上書きされるといった事態が生じたのです。
実は、オリジナルのデータは、B列、C列にも、たくさんのデータが入っておりまして・・・
他力本願で本当に申し訳ないのですが、ここ↓
http://okwave.jp/qa5015030.html
に、新たな質問をさせていただきました。
B列が埋まってしまっている状態で、A列の特定のデータに、罫線を引いて並べかえたいのです。
merlionXXさんぐらい詳しい方でないと、誰も回答してくれない気がします。
お暇な時で構いませんので、再度お力をお借しいただければ幸いです(>_<)
今回は本当に助かりました、どうもありがとうございます!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) Excelのマクロについて教えてください。 作業フォルダ内に2つのファイルがあります。 このファイル 2 2023/07/09 13:40
- Visual Basic(VBA) このVBAでExcelアプリケーションを作成は必要ですか? 3 2023/07/19 21:13
- Visual Basic(VBA) DisplayAlertsブロパティで ”実行時エラー424オブジェクトが必要です” 5 2022/05/15 18:02
- Excel(エクセル) 【VBA】指定フォルダに格納中のテキストファイルをエクセルで処理し結果のエクセルを新規フォルダに保存 1 2022/03/25 14:19
- その他(プログラミング・Web制作) Pythonで、データファイルと列名ファイルを1つのファイルにしたいです。 1 2023/07/27 20:29
- Excel(エクセル) Excelの関数でこんな処理ができますか 1 2023/02/08 13:46
- Visual Basic(VBA) 動かなくなってしまった古いVBAを動くようにしたい 8 2022/09/20 13:57
- 統計学 お世話になっています. x軸は時間(期間)y軸はある値に対する2つのグラフ比較をしますが、私個人の考 2 2023/03/30 11:42
- Access(アクセス) Access2016のExcelインポートの機能のことで教えてください 1 2022/09/11 14:58
- Visual Basic(VBA) 複数のcsvファイルをExcelに一括変換したい 2 2023/03/03 12:44
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセル初心者です 関数の入れ...
-
【関数】先頭だけにある、半角...
-
エクセル 白黒印刷で白線を印刷...
-
Excelのチェックボックスの使い...
-
【関数】適切な文字数の数字を...
-
Excelのpivotについて質問です
-
Excel ピボットテーブルで日付...
-
LOOKUP関数を使えばいいのでし...
-
エクセル関数を教えてください
-
エクセルのセルに同じ大きさの...
-
UNIQUE関数が使えないバージョ...
-
excelの不要な行の削除ができな...
-
エクセルで「-0.0」と表示さ...
-
時間によってファイル名が変わ...
-
WPS OFFICEでの縦書きについて
-
エクセルの関数について教えて...
-
Aというブックの1というシート...
-
【マクロ】シート名を取得する...
-
VBA Private Sub Worksheet_Cha...
-
VBA、Excelのworkbook.open に...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel 2019 のピボットテーブル...
-
[関数得意な方]教えて下さい・...
-
Excelにてある膨大なデータを管...
-
[関数について]わかる方教えて...
-
Excel初心者です。 詳しい方、...
-
excelの不要な行の削除ができな...
-
エクセル関数に詳しい方教えて...
-
INDIRECTを使わず excelで複数...
-
[オートフィルタ]で抽出された...
-
エクセルの神よ、ご回答を! エ...
-
エクセル関数に詳しい方、教え...
-
各ページの1番上の表示について
-
Excelで写真のような表を作った...
-
エクセルで不等号記号(≠)が上に...
-
数学 Tan(θ)-1/Cos(θ)について...
-
Excel 2019 は、SPILL機能があ...
-
Excelで全角を半角にしたいので...
-
条件付き書式を教えてください
-
Excel フィルターを掛けた状態...
-
[オートフィルタ]の適用範囲の...
おすすめ情報