• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセル VBA で 教えてください!)

エクセルVBAで教えてください!初心者で困っています

このQ&Aのポイント
  • エクセルVBAを初めて使う初心者が困っています。A列とB列とC列のデータを操作する方法について教えてください。
  • B列にいる自分のセルを基準に、A列のデータによって操作を行いたいです。A列がBならば、隣のCセルのデータを自分のセルにコピーし、A列がDならば、上のセル(Bの時にコピーしたデータ)を自分のセルにコピーします。
  • A列のデータが空白になるまで、上記の操作を繰り返すことで、B列を埋めたいです。エクセルVBAに詳しい方、ご教授お願いします!

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

  • ベストアンサー
  • FEX2053
  • ベストアンサー率37% (7987/21355)
回答No.2

んじゃま、真面目にVBAで。 VBEの使い方はご存じだと言う前提で、コードだけ。 Sub test() Range("B1").Select Do Until Selection.Offset(, -1).Value = "" Select Case Selection.Offset(, -1).Value Case "B" Selection.Value = Selection.Offset(, 1).Value Case "D" Selection.Value = Selection.Offset(-1).Value Case Else End Select Selection.Offset(1).Select Loop End Sub Range("B1").Select で、B1セルを選択しておいて、あとは 1.Do Until Selection.Offset(, -1).Value = ""で、一つ左の セルが空白までループ 2.Select Case Selection.Offset(, -1).Valueで、一つ左の セルの内容によって処理を切り替える。 3.Selection.Value = Selection.Offset(, 1).Valueは、一つ 右の、.Offset(-1)は一つ上のセルの内容を選択したセルに 設定する。 4.Selection.Offset(1).Selectで、一つ下のセルを選択し直し こんな感じでどうですか?

faoihibiki
質問者

お礼

誠にありがとうござます。無理を言って申し訳ありませんでした素晴らしく成功しました 助かりました。感謝いたします

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

  • FEX2053
  • ベストアンサー率37% (7987/21355)
回答No.1

VBAなんぞ使わなくても、 =IF(A2="B",C2,IF(A2="D",B1),"") こいつを下にコピーで済む話なんじゃ?

faoihibiki
質問者

補足

ありがとうございます 説明が足りなくてすいません accessから エクセルのvbaを動かして自動でやりたいのです。 教えて頂いた関数を手動で行いましたが、多すぎる引数でエラーとなりました、申し訳ありませんが ご存知でしたらマクロとして使えるvbaでお願いします!

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • Excel VBAの繰り返し構文について

    A列に日付、B列に曜日、C列に休、D列に1直、E列に2直、という形の年間シフトを作成しています。 初期値としてA2セルに数字を入力→C列が空白の時だけD列に記入するマクロを作成したと思っています。 現在仮として、 Sub C列のセルが空白の行のD列に数値を入力() 下端行 = Range("A" & Rows.Count).End(xlUp).Row '下端検出 For 行 = 3 To 下端行 '1行目から下端行まで1行ずつ繰り返す If Range("C" & 行).Value = "" Then 'その行のC列のセルの値が空白の時 Range("A2").Copy 'A2をコピーする Range("D" & 行).PasteSpecial Paste:=xlPasteFormulas 'その行のA列のセルを起点に 'して数式を貼り付ける End If Next End Sub というマクロを置いていますが、「Range("A2").Copy」の部分を 「A2を初期値として、最初にC列が空白でなくなる時まで初期値を繰り返し、次にC列が空白になった場合は初期値+1の数をD列に入力する。 ただし初期値+1の最大数は6までとする(要するに1~6の繰り返しです)」 という感じに変更したいのですが、どうすればいいのかさっぱりです…。 VBAレベルはこの質問をする程度なのでかなり初級です。

  • Excel VBAによる検索処理?

    Excelで以下の例のように、A列・B列に入力されているとします。A列を検索して、C列にB列の値を返す式を考えてますが、さっぱりわかりません。VBAとかも正直素人ですが、サンプルもしくは考え方を教えていただければと思います。以下の処理内容です。 ・AXセルが「B」であった場合、次のセル(A(X+1))を検索し、次が空白になるまで検索し、空白になる前の最後の行のB列の値をCXセルに返す。該当しない場合は空白のまま 下記の例ですと3行目、8行目のB列の値を2・3、6-8行目のC列のセルに返すことになります。よろしくお願いいたします。 (処理前) ___A__B__C ------------- 1 2__B__2 3__B__3 4______4 5______5 6__B__6 7__B__7 8__B__8 9______9 (処理後) ___A__B__C ------------- 1 2__B__2__3 3__B__3__3 4______4 5______5 6__B__6__8 7__B__7__8 8__B__8__8 9______9

  • EXCEL VBAで

    EXCEL VBAで シート1のA2~G2までの列にA,B,C,D~と題名があり、それぞれの下の行には数字が並んでます。シート2のA2~G2までの列にもA,B,C,D~と題名がありますが、ランダムに並んでます。シート1のAの行を、シート2のAの行に、BにはBへという風にコピーをさせるにはどのようにすればよいでしょうか。またシート1A~Gのどれかが欠けている場合もあります。その場合はシート1にあるもののみコピーすることとします。 わかりにくいかも知れませんか、どうかよろしくお願いします。

  • エクセルVBAで質問です。

    エクセルVBAで質問です。 A列   B列 AAAA  1111 BBBB  2222 CCCC  3333 とあります。 上記を AAAA (空白) (空白) 1111 (空白) BBBB (空白) (空白) 2222 (空白) CCCC (空白) (空白) 3333 (空白) A列にB列を挿入し、2・3・5行目に空白のセルを入れていきたいのです。 9000行ぐらいあります。 他の列に A列、B列のものを取得していく形でも構いません。 とにかく、縦1列に並べたいです。 どなたか、ご教授お願い致します。

  • エクセルマクロ、空白行(セル)の挿入

    データがA、B、C、D、E列100行まであります。 このうちD、E列を除き、エクセルのマクロで1行ごとに空白で10行挿入したいです。 (A、B、C、D列のデータに空白セルを10行分挿入し、下にシフトするイメージ。D、E列はそのまま。) ご教授頂きたく、お願いします。

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

    エクセルVBAを教えてください。 エクセル初心者です。 仕事の都合で下記のようなマクロを作らないといけないのですが作り方がよくわかりません・・・。 宜しくお願い致します。 ----------------------------------------------- 列A   列B   列C   列D 1行目  名前   金額   日時 2行目  Aさん  100円  12/1 3行目       200円  12/2 4行目       300円  12/3 5行目  合計   600円 6行目  Bさん  100円  12/1 7行目       200円  12/2 8行目       300円  12/3 8行目       400円  12/4 9行目  合計   1000円 10行目  Cさん  100円  12/1 11行目       200円  12/2 12行目  合計   300円 のExcel表があります。 これを下記のように変更したいです。 列を1つ挿入し、追加した列に合計行までそれぞれの人の名前をペーストしたいです。 列A   列B   列C   列D   列E 1行目  名前   名前   金額   日時 2行目  Aさん  Aさん  100円  12/1 3行目       Aさん  200円  12/2 4行目       Aさん  300円  12/3 5行目  合計   Aさん  600円      ←合計欄まで名前をコピーしたいです。 6行目  Bさん  Bさん  100円  12/1 7行目       Bさん  200円  12/2 8行目       Bさん  300円  12/3 8行目       Bさん  400円  12/4 9行目  合計   Bさん  1000円 10行目  Cさん  Cさん  100円  12/1 11行目       Cさん  200円  12/2 12行目  合計   Cさん  300円

  • エクセル マクロ VBA

    エクセルのマクロについて質問です。 『集計』というブックの『集計開始』というシートに     A列    B列     C列 1行目 見出し  見出し   見出し      (商品名)  (支店)  (個数)         2行目 コメント  空白     空白   3行目 空白   空白     空白 4行目 商品名  支店     個数  5行目 空白   空白     空白 6行目 空白   空白   コメント1 7行目 空白   空白     空白 8行目 空白   空白   コメント2 9行目以降    上記のデータ(見出しを除く)の繰り返し というデータが入っています。 B列の中に『AAA』という文字が含まれていたら、そのセルを空白に置換し、 含まれていなかったら、そこで処理がとまったりエラーが出たりしないで次のステッップへ進み、 C列の中に『B』という文字が含まれていたら、そのセルを空白に置換し、 含まれていなかったら、そこで処理がとまったりエラーが出たりしないで次のステッップへ進み、 (今は、手作業で編集→置換→検索する文字列の中に『B*』と入力し、 置換後の文字列を空白にしてすべて置換ということをやっています。)                            ABC列(データーの入っている行まで)の空白を含む行を一括削除し、 以下のような形にしたいのです。     A列    B列     C列 1行目 見出し  見出し   見出し      (商品名)  (支店)  (個数)         2行目 商品名  支店     個数  3行目 商品名  支店     個数          ・         ・ このようにするマクロ文はどのようになりますでしょうか?

  • "VBAの繰り返し"についてお尋ねします。VBA初心者です。

    "VBAの繰り返し"についてお尋ねします。VBA初心者です。 例えば「A列の最後のセルに何か入れば、その行のB列、C列・・・の一つ上のセルに入っている計算式を繰り返しコピーする」と言うコードを教えていただけたらと思います。A列の最後のセルに何か入ってくれば、その行の一つ上のセルに入っている計算式を繰り返しコピーするというコードです。コード記述の例を教えていただけたらと思います。よろしくお願いします。

  • exlel  繰り返し マクロ VBA

    エクセルのシートで    A    B  1空白   100  2空白   A  3空白   B  4空白   C  5空白   空白  6空白   空白  7空白   200  8空白   A  9空白   B 10空白   空白 11空白   300 12空白   A 13空白   B 14空白   C 15空白   D 16空白   空白 上記のデータを下記の様に空白行をはさんだ不特定行のB列の各行のはじめのセルの値をA列に書き込んでいくマクロをお教えください。    A    B  1100    100  2100    A  3100    B  4100    C  5100    D  6空白   空白  7200    200  8200    A  9200    B 10空白   空白 11300    300 12300    A 13300    B 14300    C 15300    D 16空白   空白 お願い致します。

  • エクセルVBAについて教えてください。

    エクセル2007を使ったVBAについて2つ質問です。 1つ目の質問は、5列目の右端の数字を2列目の右端に持ってくるため、 Range("B2").End(xlToRight).Next.Select ActiveCell.FormulaR1C1 = Range("A5").End(xlToRight) というVBAを組んだのですが、2列目に空白が入っている場合うまく動かないため動くように したいのですが、どのように組めばいいのかわかりません。 例    A     B     C     D     E     F     G     H     I     J     K 1  2 【数値1】  □    □     □     1     2     3     4     5  3 4 5 【数値2】   6     7     8     9     10 6 ※□は空白 上記の例の場合、5行目の右端である10を2行目の空白を除いた右端である5の隣に持っていきたいです。 2つ目の質問ですが上記例の2列目の両端(1と5)を選択してDeleteする方法がわかりません。 2つの質問についてわかる方おりましたら教えていただけると助かります。 よろしくお願いしします。

専門家に質問してみよう