EXCEL VBAの書き方を教えてください

このQ&Aのポイント
  • EXCELで図のような表を作っており、特定の列のセルの内容を変更したい場合、VBAを使用することで効率的に処理することができます。
  • また、特定の条件に基づいて処理を行いたい場合も、VBAを利用することで条件分岐やループ処理を簡単に実装することができます。
  • VBAは初めは難しく感じるかもしれませんが、少しずつ学んでいくことで効率的なEXCEL操作が可能となります。
回答を見る
  • ベストアンサー

EXCEL VBAの書き方を教えてください

EXCEL2010および2013を使用しております。 以下の場合、どのようなコードを書いたらよいか、教えてください。 (1)EXCELで図のような表を作っており、B列に「時刻」表記だけを表示させるように したいです。  時刻表記(10:00や12:00など)以外に文字列(15時ころ、19時前後)が入っていますが、 文字列が入っているセルは文字を消して、時刻表記だけのセルに統一するにはどのようなコードを書けば良いでしょうか。 例の図には「15時ころ」などの文字列が入っていますが、他の別シートには文字列はなく、すべて時刻表記が入っている場合もあります。 (2)以下の場合のコードの書き方も教えてください。 D列が20%以下の場合はE列の「利益」を0と入力し、D列が21%以上の場合はC列「粗利」とD列「割合」をかけたものを、E列の「利益」に表示する。 VBAを勉強し始めたばかりで色々と調べてみたのですがなかなか難しく、お分かりになる方のお力をいただければと思います。 宜しくお願いいたします。

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

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.1

順繰りセルを巡っていくなんてドンくさい事はしません。 sub macro1()  on error resume next  range("B2:B" & range("B65536").end(xlup).row).specialcells(xlcelltypeconstants,xltextvalues).clearcontents end sub sub macro2()  with range("E2:E" & range("D65536").end(xlup).row)   .numberformat = "0"   .formula = "=(D2>20%)*C2*D2"   .value = .value  end with end sub

wangwangz
質問者

お礼

早速のご回答をありがとうございました! おかげさまで解決いたしました。 これからもっと勉強していこうと思います。

関連するQ&A

  • エクセル VBA

    エクセルVBAで以下のようなデータがあります。 D列の文字列と右隣のE列の文字列の2つが入っているものをA列から探し、見つかったセルの上にセルを追加し、E列の右隣のF列に入っている文字列を代入したいです。 どのようなプログラムになりますか?

  • EXCEL(関数)について、教えてください。

    EXCEL(関数)について、教えてください。 見積書をEXCELで作っております。(Excel2003) 100万以下は"課長決裁"という文字列をセルC1に表記 100万以上300万未満で、かつ利益率5%以上は"課長決裁"という文字列をセルC1に表記 100万以上300万未満で、かつ利益率5%以下は"部長決裁"という文字列をセルC1に表記 100万以上300万未満で、かつ利益率3%以下は"社長決裁"という文字列をセルC1に表記 ・・・・・・・ という感じで9個以上の条件があり「見積金額セル(例えばA1)」と「利益率セルB1」を参照しながら上記条件にそって課長決裁とか部長決裁、社長決裁といった文字列を特定セル(ここではC1)に表記させたいと思っております。 こういった場合、マクロなど使わずに関数で出来たら良いなと考えておりますが、どんな関数を使えば良いのでしょうか? 分かる方教えて下さい!

  • エクセルVBA及び関数

    初心者です。お教えお願いします エクセル2003です 空白行及び0をなくしたいのですが(C列を入力された時点で自動でE列のようにしたい) 関数の場合及びVBAのシートコードを両方教えていただけないでしょうか VBAのコードは勉強の為です Sheet1    A    B     C     D     E     F 16          文字A        文字A 17          文字B        文字B 18            0         文字C 19          文字C        文字D 20            0         文字E 21          文字D        文字F      22      23          文字E 24 25          文字F 文字はC16~C80まで入っております B16~E80までのセルのみで行いたいのですが 他の場所は関数やグラフ等がすでに入ってますのでいじりたくありません E16~をフォームのコンボボックスのリストにしようと思ってます よろしくお願いましす

  • エクセル2003 VBAなのですが

    エクセル2003 VBAなのですが   A   B    C    D    E    F 1 あ   い   う   お   う   123 2 お   さ   え   あ   お   お 3 あ   い   え   お   え   888 上記のような表があるときに 3個以上同じ文字がある場合にセルに色をつけていきたい状況です 上記表でいうと『あ』と『え』と『お』のセルに色をつけたいのです セルには文字列のほかに数字も入っている状況です 単純にCtrl+Fで検索をして『すべて検索』で 出てきたセル全部に色をつける。 それをA1から文字があるところ全部やる と言った事をマクロでやりたいと思っております。 皆様よろしくお願いいたします。

  • Excelで乗り継ぎ時刻表の調整を自動で行なう方法

    現在、Excelで乗り継ぎ時刻表を作成しているのですが、 バスから電車への乗り換えにかかる時間などにあわせた調整を 以下の作業例のように手動で行なっています。 1.これを関数やマクロなどを用いて手早く処理する方法がありましたら教えてください。 2.また、どう乗り継げば良いのかということを分かりやすく示すために、   セルA2~A4やB2~B4のような場合は文字列上揃えで結合、   セルE1~E2のような場合は文字列下揃えで結合、   さらに画像のような場合は文字列中央揃えや   一部のセルを結合しないといった調整を行なった上で   セルに枠(罫線)をかけるという作業も手動で行なっているのですが、   こちらも自動化する方法がありましたら教えてください。 現在の作業例 A列:甲社バス乗車時刻、B列:甲社バス降車時刻、 C列:電車発車(乗車)時刻、D列:電車到着(降車)時刻、E列:乙社バス乗車時刻・・・ ※甲社バスを降りてから電車への乗り換えは3分、  電車を降りてから乙社バスへの乗り換えは5分を要します。  調整前    A   B   C   D   E 1 11:50 12:00 12:07 12:27 12:36 2 11:55 12:05 12:10 12:30 12:40 3 12:02 12:12 12:14 12:34 12:45  調整後    A   B   C   D   E 1 11:50 12:00 12:07 12:27 (空欄) 2 11:55 12:05 12:10 12;30 12:36 3 (空欄) (空欄) 12:14 12:34 12:40 4 (空欄) (空欄) (空欄) (空欄) 12:45 5 12:02 12:12   (以下省略) よろしくお願いします。

  • エクセルVBAで、複数セルのデータをひとつのセルに改行してまとめたいのですか・・・

    データの内容をひとつのセルに改行して入れていくという 作業を自動化できないでしょうか? 「データ」シート メモ 地点 from ~ to 線種 A1,B1,C1,D1,E1,F1に上の項目があり、 メモ、地点には文字、from ~ toには時刻(00:00)が入り、線種には =====というような記号が入ります。("~"の列には00:00形式の時刻が入る他"~"という記号が入るときもあります) それぞれの項目の下にデータを入力してあります。 これを「まとめ」シートに ・A~E列までをひとつのセルに改行してまとめる ・F列はその右隣にそのまま表記する と自動でできないかと考えています。例えば、「データ」2行目に A2 観劇 B2 日本大劇場 C2 10:00 D2 ~ E2 12:00 F2 ====== とある場合、「まとめ」シート A2セルは 観劇 日本大劇場 10:00~12:00 と改行して入り、B2に「データ」F2の======が入るように「データ」シートのデータがなくなるまで右にずらっとつなげていくようにしたいと思っています。今手作業でやっているのですが時間がかかって・・・。 よろしくお願いします。

  • EXCEL 2010 VBAまたは関数について

    こんにちは 初投稿です。 早速ですが、VBAまたは関数について質問させて頂きたいのですが・・・ 一つのセルに複数の数字と文字列がセルのE1混ざっている場合, (12345abc678cdef9ghijk)と入っている場合 にこの例で行くとセルのA1に12345セルB1に678セルC1に9というように数字で表示させたいのです が、最初関数で A1=VALUE(MID(E1,1,5)) B1=VALUE(MID(E1,9,3)) C1=VALUE(MID(E1,16,1)) と言う形で数字だけ抜き出していたのですが これだと数字の桁数が違ってくる(※正し文字列の長さは一緒 数字だけが桁が違ってきます) と表示されなくなってしまうため、 出来れば関数をいじらなくても表示されるようにしたいのです。 VBAもしくは関数でこの問題を解決出来る方がいらっしゃるなら どうぞよろしくお願い致します。 長文失礼致しました。 | A | B | C | D | E | ------------------------------------------------ 1 | 12345 | 678 | 9 | | 12345abc678cdef9ghijk | 2 | | | | | |

  • エクセルVBAについて

    すみません。以前にも質問させて頂いた内容と重複する部分があるのですが、 どうしてもわからないので質問させていただきます。 D11~E58のセルの範囲で値が10以下 かつ 同じ値がセル縦に5個以上連続して入力されているセルを メッセージボックスに(セル番号、値)を出したいのですが、 どのようにコードを記述すればいいのかどなたかご教授いただけませんか?  とくに同じ値がセル5個以上に入力されている場合の エラーメッセージの記述がわかりません。 説明が悪いかと思いますので、また何かあれば追記させていただきます。

  • EXCELのVBAでやれますか?

    A1~C1のセルが結合しています。このA1~C1セルに L から始まる文字が入っている場合はその文字をD1にコピー、kから始まる文字が入っている場合はその文字をE1にコピー、と言う事をやりたいのですが、「○○から始まる文字」というのをVBAで出来るのでしょうか?ちなみに当方はVBA超初心者ですので、なるべく解りやすい御回答お待ちしております。

  • EXCELのデータベース利用について(VBA)

    VBA初心者の者です。 下記の様なEXCELファイルを作りたいのですが、どのようにすれば良いのか まったくわかりません。 ACCESSでの構築が簡単なのかもしれませんが、データ量がそれほど多くないことと 職場にACCESSがないため、可能であればEXCELで構築したいと考えています。 私自身、プログラムの知識がなく、EXCEL VBAのサイトを確認するのですが、いまいち どうすれば良いのかわかりません。 ぜひご教授の程よろしくお願いします。 3つのシートの構成は以下になります。 【入力シート】 A1セルに文字列(A~Z)入力欄 【○○データシート】 A列に A~Z の文字列 B列に 001~100までの数値 C列に 001~100までの数値 D列に 001~100までの数値 E列に 001~100までの数値 例)    A列   B列   C列   D列   E列 1   A   001 2   B   001    002    003   004 3   C   003 4   D   002    003 【▽コマンドシート】 A列に 001~100までの一意の数字 B列に 文字列(コマンド) C列に 文字列(コマンド詳細) 例)    A列    B列    C列 1   001   xx     blank 2   002   xxx△   xxx 3   003   xxxx    x○ 4   004   xxxxx   xxx 【欲しいVBA】 1、入力シートのA1セルに○○データシートのA列に該当するA~Zの 文字列を入力。 2、○○データシートのB列~F列までの数値を参照 3、2の数値において▽コマンドシートのA列に記載ある番号と紐づけを行い、 ▽コマンドシートのB列、C列に記載がある文字列を入力シートのB列、C列にコピー ※コピー時は▽コマンドシートの書式や体裁情報も含めてコピー。 例としては以下になります。 入力シートの A1セルにDを入力した場合は 入力シート    A列    B列    C列 1   D    xxx△  xxx 2        xxxx    x○ 3 以上、ご教授よろしくお願いします。

専門家に質問してみよう