- 締切済み
エクセル マクロを使った表について
エクセル初心者です。マクロを、教えていただけませんか。 シート1:入力シートです。 例えば以下のような表があります。 月 1日 2日 3日 4日・・・31日 個別物件名1 A B C 空白 D 個別物件名2 E 空白 空白 F 空白 個別物件名3 空白 G H 空白 I シート2:シート1のリンクシートです。 月 1日 2日 3日 4日・・・31日 個別物件名1 ○ ○ ○ 空白 ○ 個別物件名2 ○ 空白 空白 ○ 空白 個別物件名3 空白 ○ ○ 空白 ○ 上記のようにシート1には毎月、ある決まりに沿ってアルファベットを 入力するのですが、入力し終わったら(入力と同時でも構いません) シート2には、そのアルファベットを入力してある位置に印として ○を打ちたいんですが、どのように組んでいけばよいのか解りません。 すいませんが、ご教授ください。よろしくです。 補足 ・シート1とシート2の表の書式はまったく違うため、貼り付けは できません。 ・結局は、シート1のあるセルに文字が入力されると自動的に シート2のセルに○の印がつき、上記表で言えば、反映回数?は 9回ですが月によって反映回数は変わります。(入力と同時の場合) 説明が下手ですいませんがよろしくお願いします。
- みんなの回答 (5)
- 専門家の回答
みんなの回答
- merlionXX
- ベストアンサー率48% (1930/4007)
No2です。 > 質問のしかたが悪かったと思います。 はい、ほんとに悪すぎます。 掲示した表が間違っているなんてのは最悪です。 それにあなたは、「ある決まりに沿ってアルファベットを入力するのですが」と書いておきながら、実は物件名? 掲示した表にもちゃんと「物件名」と書いているにもかかわらず、なんでアルファベットだなんて余計なことを書くの? それに、さきほどの回答でも配置がわからないと行っているにもかかわらず、補足でも配置に触れないのは何故? 理解に苦しみます。 シート1のアドレスとシート2のアドレスは同じでないのなら、それぞれのアドレスがわからなければ回答したくとも出来ないです。 いくら初心者でもマクロをいじろうとするくらいなら当然それくらいはわかりますよね? 以上、今後のあなたの質問に適切な回答がつくためのアドバイスです。
- imogasi
- ベストアンサー率27% (4737/17069)
>マクロを、教えていただけませんか。 コードを書いてくれと取られかねない考えなら、丸投げで、この質問コーナーの規約違反と思います。 関数でも出来ることを、マクロのお勉強ですか。 大して難しくないのに自分でコードを作ることを考えること。 1つのヒントは(他にいくらも別のやり方がある。コード数は下記が 多分最少だと思うが) Sheet1(原データシート)とSheet2が全く同じ対応セルを考えるでよければ Sub test01() Dim sh1, sh2 As Worksheet Set sh1 = Worksheets("Sheet1") Set sh2 = Worksheets("Sheet2") For Each Cl In sh1.Range("B3:AF100") 'B-AF列、3-100行 If Cl <> "" Then sh2.Cells(Cl.Row, Cl.Column) = "○" End If Next End Sub シートSheet1のB3:AF100の範囲で空白でなければSheet2の対応セルに ○を入れている。 自分の場合に合わせて改良すること。 上記はバッチ処理であって、 即座にSheet2に反映させる手もあるが、イベント処理の考えの勉強をしてからということと、シートのChangeイベントは色々な操作のケースに対応しておかなければならないので、中級者以上の課題だと思う。
お礼
早速のご回答、有難うございます。 質問の表を間違えてました。すいません。 エクセル、マクロ、もっと勉強したいとおもいます。 すいません。 ありがとうございました。 今後とも宜しくお願い致します。
- KonnaMonde
- ベストアンサー率57% (97/170)
>エクセル初心者です。 マクロを、教えていただけませんか。 >シート2には、そのアルファベットを入力してある位置に印として○を打ちたいんですが、どのように組んでいけばよいのか 「シート2」には、「○」 と 「空白」 以外に何か別のものが入るますか? ただ単に、シート1のアルファベットに対応したセルに「○」を入れるだけいよいのであれば、次の関数で対応できますが。 シート1の名前を、“sheet1” とすると、シート2の”A1"セルに =IF(Sheet1!A1="","",IF(AND(CODE(Sheet1!A1)>64,CODE(Sheet1!A1)<123),"○","")) をいれて、必要なところまで、ドラッグコピーすればOKです。 どうしても、マクロで対処したいのであれば、自分で組んだマクロを、補足欄に書いてください。 それを見て、あなたの出来そうな範囲のコードで添削する方法がベターでしょう。
お礼
早速のご回答、有難うございます。 エクセル自体、もっと勉強したいとおもいます。 すいません。 それと、質問の表を間違えてました。すいません。 ありがとうございました。 今後とも宜しくお願い致します。
- merlionXX
- ベストアンサー率48% (1930/4007)
> ・シート1とシート2の表の書式はまったく違うため、貼り付けはできません。 書式がちがうのはわかりましたが、配置はどうなのですか? 提示された表を見る限り、シート1とシート2は同じ配置に見えますが。 もし、Sheet1のアルファベットを入力するセルと、Sheet2の○を入力するセルのアドレスが同じなら、以下のように書くこともできます。 1. Sheet1のシートタブを右クリック、[コードの表示]。 2. 出てきた所に、下記のコードを貼付けます。 3. 右上の × でExcelの画面に戻ります。 Private Sub Worksheet_Change(ByVal Target As Range) If Target.Count > 1 Then Exit Sub If InStr("ABCDEFGHIJKLMNOPQRSTUVWXYZ", Target.Value) = 0 Then Exit Sub Sheets("Sheet2").Range(Target.Address).Value = "○" End Sub
補足
早速のご回答ありがとうございます。 質問のしかたが悪かったと思います。 (参考表が間違ってました。すみません。) 質問補足としまして、シート1は物件名を入力します。(AとかBとかが物件ビル名にあたります。) シート2には物件数が100数件あり、シート1のアドレスとシート2のアドレスは同じではありません。 例えば、シート1に6月4日にAビル、6月5日、Bビルと入力した際 シート2にあるAビル、Bビル・・・(ビル数100数件)と日付が一致したセルに○の印を打ちたいのです。 月 1日 2日 3日 4日・・・31日 A B C 空白 D E 空白 空白 F 空白 空白 G H 空白 I A,B,C・・がビル名です。 この表をシート2の 月 1日 2日 3日 4日・・・31日 個別物件名A ○ 空白 空白 空白 空白 個別物件名B 空白 ○ 空白 空白 空白 個別物件名C 空白 空白 ○ 空白 空白 ・・・ ・・・ ・・・100数件 お忙しいところ、恐れ入りますが上記の表で宜しくお願い致します。 すいません。
- saki0314
- ベストアンサー率41% (5/12)
マクロではなく関数でいけるんではないでしょうか? =IF(Sheet1!A1="","","○") ↑シート1のA1セルが空白の場合は”空白”そうでない場合は”○” これをシート2の丸を判別するセルに貼り付けてあげればいいんでは? マクロにする理由は??
お礼
早速のご回答、有難うございます。 マクロでないと、組めないと思ったものですから・・。 質問の表を間違えてました。すいません。 もっと勉強したいと思います。 ありがとうございました。 今後とも宜しくお願い致します。
お礼
表等を間違えてしまい、本当に申し訳ありません。 物件名を書くよりABC・・とアルファベット表示のほうが わかりやすいと思ったものですから。 配置はシート1は3行31列で、シート2は100数行31列 なんです。 シート1のある日付に物件名を入力すると、 シート2に書かれている物件名と日付が一致したセルに ○をつけるということなのです。 いろいろと、ご指導いただきありがとうございます。 もっと勉強していきたいと思います。