• 締切済み

マクロで別のセルに同じ文字を反映させる方法

エクセル2010を使用しています。 表のように、日付と名前と住所を入力したら、すぐ下の2行のセルに同じ文字を反映させ、かつ青文字にしたいのですが、マクロ機能を使ってボタンひとつで、文字を反映しその文字を青色にすることはできますか。 たとえば、 A2、B2、C2を手入力し、マクロボタンを押したら、 A2は、A3、A4へ同じ文字を反映し青文字になる。 B2は、B3、B4へ同じ文字を反映し青文字になる。 C2は、C3、C4へ同じ文字を反映し青文字になる。 同様に、9/2以降もそのマクロボタンを押したら同じようにできるようにしたいです。

みんなの回答

  • MSZ006
  • ベストアンサー率38% (390/1011)
回答No.4

#1です。補足を見ました。 計算式&書式設定では、あらかじめ入力されるであろうところまで設定しておかないとだめなので、どこまで入力されるかわからない、という状況ではちょっとふさわしくなかったですね。 入力されたらすぐに下の2行に青字でコピーする、ということはマクロでできます。こんな感じでどうでしょうか。 ----------------------- Private Sub Worksheet_Change(ByVal Target As Range) pos = Target.Row If pos Mod 3 <> 2 Then Exit Sub End If Range(Cells(pos + 1, 1), Cells(pos + 2, 3)).Font.ColorIndex = 5 Cells(pos + 1, 1) = Cells(pos, 1) Cells(pos + 2, 1) = Cells(pos, 1) Cells(pos + 1, 2) = Cells(pos, 2) Cells(pos + 2, 2) = Cells(pos, 2) Cells(pos + 1, 3) = Cells(pos, 3) Cells(pos + 2, 3) = Cells(pos, 3) End Sub

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

No.2です。 No.1さんの補足に >一番したいことは、A2、B2、C2 文字を入力したら、自動的に下の2行に反映し・・・ とありましたので、またまた顔を出しました。 画像の配置どおり、2・5・8・・・と3行おきにデータを入力するとします。 マクロを実行するようにしてみました。 画面左下の操作したいSheet見出し上で右クリック → コードの表示 → VBE画面に ↓のコードをコピー&ペーストしてデータを入力してみてください。 Private Sub Worksheet_Change(ByVal Target As Range) 'この行から Dim i As Long i = Target.Row If i Mod 3 = 2 And WorksheetFunction.CountA(Cells(i, "A").Resize(, 3)) = 3 Then With Cells(i + 1, "A").Resize(2) .Value = Cells(i, "A") .Offset(, 1) = Cells(i, "B") .Offset(, 2) = Cells(i, "C") .Resize(2, 3).Font.ColorIndex = 5 End With Cells(Rows.Count, "A").End(xlUp).Offset(1).Select End If End Sub 'この行まで 今回はコマンドボタンではなく、その行のA~C列がすべて入力済みになった時点でマクロが実行されます。 こんな感じではどうでしょうか?m(_ _)m

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

こんにちは! >ボタンひとつで・・・ とありますので、コマンドボタンを配置しているという前提です。 A~C列を入力後、その行を選択してコマンドボタンをクリックするとします。 ※ A列の表示形式は「日付」にしておいてください。 Private Sub CommandButton1_Click() Dim i As Long i = Selection.Row With Cells(i + 1, "A").Resize(2) .Value = Cells(i, "A") .Offset(, 1) = Cells(i, "B") .Offset(, 2) = Cells(i, "C") .Resize(2, 3).Font.ColorIndex = 5 End With End Sub こんな感じではどうでしょうか?m(_ _)m

  • MSZ006
  • ベストアンサー率38% (390/1011)
回答No.1

普通にセルに計算式を入れておけばよいような気もしますが、敢えてマクロですると、こんな感じでどうでしょう。 コピーをしたいどこかのセル(コピー元のセルも含む)をアクティブにしておいてマクロを実行します。 -------------------- Sub test() rw = ActiveCell.Row pos = ((rw + 1) \ 3) * 3 - 1 Range(Cells(pos + 1, 1), Cells(pos + 2, 3)).Font.ColorIndex = 5 Cells(pos + 1, 1) = Cells(pos, 1) Cells(pos + 2, 1) = Cells(pos, 1) Cells(pos + 1, 2) = Cells(pos, 2) Cells(pos + 2, 2) = Cells(pos, 2) Cells(pos + 1, 3) = Cells(pos, 3) Cells(pos + 2, 3) = Cells(pos, 3) End Sub

kurara2013
質問者

補足

ご回答ありがとうございます!すごいです! マクロ編集部分に張り付けたら無事に実行されました。 関数に詳しくないのですが、一番したいことは、A2、B2、C2 文字を入力したら、自動的に下の2行に反映し青文字になってほしい です。 数式を教えて頂くことはできますか? なお、9月2日以降も同じようにしたいのですが、本来の表 はどんどんデータが増えていきます。 全てのセルに予め数式をいれることは可能でしょうか。 なお、この表は、複数の人が使います。

関連するQ&A

  • 別のセル2行に同じ文字を反映し青文字にしたい。

    エクセル2010を使用しています。 日付、名前、住所は手入力します。 その文字と同じ文字を下の2行に反映させ下の2行のみ青文字にするにはどのような数式になりますでしょうか。 先ほど同様の内容でマクロを使用した場合ということで質問しましたが、マクロを使用せず 自動的に反映されるのであればそれが一番良いです。 8/30のデータであれば A2の文字をA3、A4へ反映し青文字にする B2の文字をB3、B4へ反映し青文字にする C2の文字をC3、C4へ反映し青文字にする 同様の作業を9/2以降のデータにもできるようにしたいです。 データは下方向にどんどん増えていきます。

  • Excelでマクロ設定したが反映されない(初心者です)

    Excelでマクロを設定したのですが、なぜかきちんと反映されません。 以下、主な作業(実際の作業とは少し違いますがだいたい主な作業)を記載してみました。なぜ反映されないのか分からないので、もしお分かりになる方がいらしたら教えてください。必要な情報が足りない場合は、付け足します!マクロ初心者、というか、Excelも関数をたまに使う程度なので、基本から間違えてたりするかもしれませんがお願いいたします。 ※一連の作業がまずワークシートを1枚増やして、その後、必要なデータを貼り付け、さらに作業にうつります。ということで、キリのいいところで作業を2つに分けています。 【STEP1】 新しいマクロの記録 ok 挿入 ワークシート Sheet4タブを a と変更 Sheet1タブを b と変更 Sheet2タブを c と変更 Sheet3タブを d と変更 記録終了 【STEP2】 新しいマクロの記録 ok タブabcdを選択 作業グループの状態で、 全体の文字サイズを10に変更 行を3行挿入 A1セルの文字サイズを16に変更 4行目を選択し、文字位置を中央揃え A4・B4・C4・D4・E4・F4のセル色を青に変更 シートaのA1にaと入力 シートbのA1にbと入力 シートcのA1にcと入力 シートdのA1にdと入力 シートaとシートcとシートdを選択 作業グループの状態で、 B列・C列を選択 桁区切りスタイルに変更 シートcを選択 C列・D列を選択 桁区切りスタイルに変更 G4セルを青に塗りつぶし 記録終了 保存 (Book1.xls) 新規作成 マクロ Book1.xls!Macro1 実行 ★シートabcdにそれぞれ必要なデータを貼り付ける。 マクロ Book1.xls!Macro2 実行 ⇒シートdのみにマクロで記録させたものが反映されている。 他のシートは部分的に反映されたりしている。

  • エクセルでのセルの色づけ方法

    教えてください。 エクセルで、8000行、15列程度の表があります。 例えば、A2に、Aと入力すると、A2とA1の両セルが水色 Bと入力すると、A2とA1の両セルが黄 Cと入力すると、A2とA1の両セルが赤 他にも、例えば C4に、Bと入力すると、C4とC3の両セルが赤 Bと入力すると、C4とC3の両セルが黄 Cと入力すると、C4とC3の両セルが赤   などのように、A=水色   B=黄色   C=赤になるように 条件付き書式を設定し、その書式を他のセルへコピーして、 1000行位までは、ちゃんと保存できたのですが、8000行程度まで、コピーして、保存すると、『保存できません』と表示されてしまい、1000行以上は条件付き書式のコピーをしても、コピーはできますが、保存できないため、大変困っています。。。もしかして、条件付き書式には、書式のコピーができる制限があるのでしょうか?あとは、VBなどで対応 するしかないのでしょうか。VBもまったく分かりません。。 是非、よろしくお願いいたします。

  • EXCELのセルや文字色の反映

    例えばA1のセルに入力した値をB1に自動的に反映したい場合はB1に=A1と入力すれば反映されますが、A1のセルの色や文字色を変更したらB1に自動的に反映される方法がありましたら教えてください。

  • マクロでコピーしたセルを4行目毎に挿入する方法

    こんにちは!よろしくお願いいたします。 Excel2003で計算式が入力されている1行をコピーして 4行目にコピーしたセルを挿入したいのですが、複数 あるため、マクロを作りたいと思っています。   A   B  C 1 氏名 住所 件数  → 計算式が入力されている 2 氏名 住所 電話 3 氏名 住所 郵便 4 氏名 住所 ふりがな            → 1行目の計算式も含めコピーしたい この操作を繰り返すマクロを作成したいと思っています。 マクロは初心者です。ご指導よろしくお願いいたします。

  • セル内の2行をそれぞれ別のセルにコピーするマクロ

    A列にデータが入力されていたとします。 そのデータのうち、複数のセルで改行されて2行になっています。 改行されているセルをサーチし、1行目をB列のセルに、2行目をC列のセルに分割してコピーしたいと思います。 この様な方法は、マクロで可能でしょうか。 適切な関数があれば、ご教授いただきたいと思います。

  • エクセルで行の高さの変更マクロの作成

    エクセルで各月の行事予定表を作成していますが、各月の初日を特定のセルに入力すると、自動的にその月の日にちと曜日が各セルの上段から下段に表示されるように作成しています。 例えば、セルA1に11/1と入力すると、セルA5からA36までに日付がB5からB36に曜日が表示されるようにし、セルC欄に行事内容を入力する行事予定表としています。 この場合、土曜日曜は休みなので行事が入らないため、その行(土曜日曜の行)の高さをボタンクリックで変更(希望の縮小高さに変更)できるマクロを教えてほしいのです。 また、これについては、他の表作成で、入力の無い行の行高縮小マクロにも利用可能ではと考えてもいます。 マクロの実行ボタンの作成は作成することができます。 ご教示をお願いいたします。

  • セルを参照する マクロ? 条件書式?

    セルを参照するマクロまたは条件書式について教えてください。 シートAのセルA1に、ひらがなの【あ】という文字が入力された時 B1セルに入力できる値をシートBのE2からH2を参照 シートAのセルA1に、ひらがなの【い】という文字が入力された時 B1セルに入力できる値をシートBのE3からH3を参照 というのは値のみなら、関数で行えると思いますが 添付画像のようにセルに塗りつぶしがされている際 この塗りつぶしも反映させたいと考えております。 ネットには条件書式でやればという情報はいくつかでていますが あ、い、う にそれぞれ同じ値があるとそれはできないかと思います。 調べたところ、入力規制のリストでは不可能なようなので A1セルに【あ】と入力されていて尚且つB1セルに1と入力されたら オレンジに、2と入力されたら青に・・・ A1セルに【い】と入力されていて尚且つB1セルに1と入力されたら 青に、2と入力されたらオレンジに・・・ のような感じでもよいと考えています。 もちろん指定した範囲内にない文字の場合(例えばB1セルに5を入力)は 塗りつぶしは起こらないでいいです。 マクロなのか条件書式なのかはわからないのですが 上記のようなことができるか教えてください。 ちなみに画像では説明の為 1つのシート内に書いてありますが 実際はシートAとBの2つがあります。 宜しくお願いします。

  • 該当セルの他の項目のセルを取り出すマクロ

    いつもお世話になっております。 初心者なのですが、、、マクロについて教えていただけますでしょうか? エクセルファイルで9000行×NN行の表があります。(列は増えませんが、行は増えます。) ----------------------------------------------------------------------------------------------------------- A列    B列    C列      D列      E列      F列 ----------------------------------------------------------------------------------------------------------- 名前  企画番号  2015/12/1   2015/12/2   2015/12/3   2015/12/4 Aさん  P410      7       0      0      6 Bさん  P500      0       9      5      3 Cさん  P043      0       0      0      0 Aさん  P403      4       0      0      0 Cさん  P789      0       0      0      0 ----------------------------------------------------------------------------------------------------------- 条件書式で、 =SUMIF($A:$A,$A2,C:C)>10 「同じ人が同じ日付で10以上になったら」赤く塗りつぶすようにしています。 (上の表の場合は、Aさんの2015/12/1の「7」と「4」に赤い塗りつぶし。) ここから、以下のマクロを追加したいと思っています。 赤く塗りつぶしたセルの「名前」「日付」「企画番号」。 (上の表の場合は、「Aさん」「2015/12/1」「P410」「P403」の4セルを取り出したいです。) 取り出す企画番号が2つの場合もあれば、最大6つくらいまでなりそうです。 どうかよろしくお願いいたします。

  • Excelで入力が反映されるものを作りたい

    助けてください。 作りたいプログラムは、まずエクセルで入力画面を作ります。 (1)名前(2)生年月日(3)住所(4)備考 の入力画面がほしいです。マクロかなんかでできるでしょうか? マクロでなくてもだれでも簡単に入力できればいいのですが・・・ その後、これらの入力がされて決定ボタンを押すと、 別シートに作成した表の中にこれらを順に表示していきたいのです。 (1)名前で入力された項目はシート2のA1セル (2)生年月日で入力された項目はシート2のB1セル (3)住所    〃   項目はシート2のC1セル (4)備考    〃   項目はシート2のD1セル に入力されるようにしたいのです。 その他、最初の入力画面に 『 』行目 という項目を作って、そこに『2』と打てばそれぞれシート2の2行目に同じことを出力したいのですがどうすればいいのでしょうか? 手順等、作り方まで教えていただけると本当に嬉しいです。 どなたか知っている方がいましたら助けてください。 お願いします。