• ベストアンサー

エクセルVBAを教えてください。

エクセルVBA初心者です。 仕事の都合でどうしても下記マクロを作らないといけないのですが、作り方が全くわかりません。 親切な方、教えてください。 □■□■□■□■□■□■□■□■□■□■□■□■ 名前   金額  日時 ⇒1行目のタイトル Aさん  100円 12/1        ⇒2行目      200円 12/2  ・・・*  ⇒3行目      300円 12/3  ・・・*  ⇒4行目  合計  400円           ⇒5行目 Bさん  100円 12/1        ⇒6行目      200円 12/2  ・・・*  ⇒7行目      300円 12/3  ・・・*  ⇒8行目      400円 12/4  ・・・*  ⇒9行目  合計  1000円           ⇒10行目 Cさん  100円 12/1   ⇒11行目      200円 12/2  ・・・* ⇒12行目  合計  300円 12/3 ⇒13行目   ・ ⇒14行目   ・ ⇒15行目   ・ ⇒16行目 のExcel表があります。 それぞれの人と合計金額の部分までを参照し、合計金額までの前の列(・・・*の部分)にそれぞれの人の名前を入れたい(コピー・ペーストしたい)です。

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

  • ベストアンサー
  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.4

>下記です。 > ↓ >http://oshiete1.goo.ne.jp/qa2612784.html はい、わかりました。 今、回答しておきましたので、こちらは締め切ってください。

sh13312
質問者

お礼

大変ありがとうございました。 引き継いだ人間にテストと検証をしてもらいます。 引き続き不明な点・追加のソースがありましたら、引き継いだ人間より改めてご質問させて頂きたいと思います。 大変あつかましいのですが宜しくお願い致します。

その他の回答 (3)

  • ham_kamo
  • ベストアンサー率55% (659/1197)
回答No.3

No.1です。 なんだか変な処理だなと思っていたら、質問の意味を取り違えていたことに気がつきました。どうもすみません。マクロを以下の通り修正します。 Sub 名前をコピー()   Dim r As Range   Dim Name As String     For Each r In Range("B1", Range("B65536").End(xlUp))     If r.Offset(0, -1).Value <> "" Then         Name = r.Offset(0, -1).Value     Else       r.Offset(0, -1).Value = Name     End If   Next End Sub

  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.2

作り方が全くわからない人にマクロを作らせるのですか?むちゃくちゃな会社ですね。 一応コメントもてけておきますが、大丈夫かな・・・。 Sub TEST01() Dim r As Long, i As Long r = ActiveSheet.Cells(ActiveSheet.Rows.Count, "A").End(xlUp).Row 'A列最終行取得 For i = 1 To r '1~最終行まで If Cells(i, 1) = "" Then Cells(i, 1) = Cells(i - 1, 1) 'i行目が空白だったら1行上の値を入れる Next '繰り返す End Sub 名前はコピペではなく、値貼り付けにしてますが・・・。

sh13312
質問者

お礼

merlionXXさんへ ソース誠にありがとうございました。 とりあえずは第一弾が作成できました。 この第一弾を客先に見てもらったところ、実は続きが発生してしまい、私とは別の人間が、作成しないといけないVBAを引き継ぎました。 引き継いだ人間が受けてきた要求を把握しているので、記入した次第です。 互いにVBA初心者なので、引き続きご教示頂けないでしょうか? お手数ですが宜しくお願い致します。 下記です。  ↓ http://oshiete1.goo.ne.jp/qa2612784.html

  • ham_kamo
  • ベストアンサー率55% (659/1197)
回答No.1

要はA列に名前があって、A列が空の行のD列に名前をコピーする、ということでいいでしょうか? シートのタブを右クリックして「コードの表示」でVBAの画面を出し、以下のマクロを貼り付けて実行してみてください。 Sub 名前をコピー()   Dim r As Range   Dim Name As String      For Each r In Range("B1", Range("B65536").End(xlUp))     If r.Offset(0, -1).Value <> "" Then       If r.Offset(0, -1).Value <> "合計" Then         Name = r.Offset(0, -1).Value       End If     Else       r.Offset(0, 2).Value = Name     End If   Next End Sub

関連するQ&A