- 締切済み
Excel のマクロを作成したい。
Excel で作成した作業計画表(テ-ブル)に下記マクロを作成し実行したいので。 当初計画表には後述のB,C,Dは存在していない。 下記マクロにてテ-ブル内に追加したセ-ルB=開始日、C=終了日、D=作業期間を自動に求めたい。 タイトルとして 第1行目コロンA=作業者名、B=開始日、C=終了日、D=作業期間、E=2011年10月31日、 F=2011年11月7月、次のコラムから1週間後の日付が設定されている(テストとしてJまで) J=2011年12月5日 第2行Aコラムには作業者=田中さん、B,C、Dを自動で求めたい。 第3行Aコラムには作業者=鈴木さん、B,C、Dを自動で求めたい。 第4行Aコラムには作業者=林さん、B,C、Dを自動で求めたい。 Excel のテ-ブルでは 第2行A=田中さん EからFに(当初はB~G)赤色で線を塗り2週間の作業とした。 第3行Aコラムには作業者=鈴木さん、FからGに赤色で線を塗り2週間の作業、 第4行Aコラムには作業者=林さん、HからJに赤色で線を塗り3週間の作業として計画した。 田中さんの作業開始日は2011年10月31日、終了日2011年11月12日、作業期間は2週間との 結果を求めたい。 下記マクロは Sub test() i = Colum(E) :Eコラムの番号 x = Colum(J) :Jコラムの番号 y = EtActivitecell.Row For c = i To x Step 1 If Adresse(Row(y), Colum(c), 4) = "D" Then Adresse(EtActivitecell.Row, EtActivitecell.Colum) = ADRESS(Colum(c), 1, 4) End If Next End Sub
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- keithin
- ベストアンサー率66% (5278/7941)
え? マクロのご質問なのにマクロの動かし方が判らないのですか? 先の回答ではゴメンなさい,D列の週を記入するのを忘れてました。 手順: シートを開く ALT+F11を押す 現れた画面で挿入メニューから標準モジュールを挿入する 現れたシートに下記をコピー貼り付ける #さっきの回答のマクロとは違うので,間違えずにこちらで作業をしてください さっきの回答のマクロの方は間違いなく削除しておきます Sub Macro1r1() Dim r As Long Dim c As Long, cc As Long dim w as long Dim stopC As Long stopC = Range("IV1").End(xlToLeft).Column ’Range(Range("E1"), Cells(1, stopC)).DataSeries rowcol:=xlRows, Type:=xlDataSeriesLinear, Date:=xlDay, Trend:=True For r = 2 To Range("A65536").End(xlUp).Row cells(r, "B").resize(1, 3).clearcontents w = 0 For c = 5 To stopC If Cells(r, c).Interior.ColorIndex <> xlNone And Cells(r, c).Interior.ColorIndex <> xlAutomatic Then Cells(r, "B") = Cells(1, c).Value For cc = c To stopC If Cells(r, cc).Interior.ColorIndex = xlNone Or Cells(r, cc).Interior.ColorIndex = xlAutomatic Then Exit For End If w = w + 1 Next cc Cells(r, "C") = Cells(1, cc - 1).Value cells(r, "D") = w Exit For End If Next c Next r End Sub ファイルメニューから終了してエクセルに戻る ALT+F8を押して,登録したマクロを実行する
- bin-chan
- ベストアンサー率33% (1403/4213)
例示の「田中さんの終了日」がなぜ11月12日なのか。(13日ならわかるのですが。) 「セル着色で作成したガントチャートから、開始日・終了日・所要日数を求めたい」なんですかね? 不明点が多いので考え方だけ。なおOption Explicit宣言は行ったほうが良いですよ。 対象人数(3名)の処理(外側ループ) 個人別に行番号を決めて、セルE~セルJまでループ(内側ループ) セルの着色は「赤」か判定 赤に着色されてたら、開始日の値設定状況を判定。 値未設定なら、タイトル行の日付を開始日にセット 右隣のセルの着色は「赤」か判定 赤に着色されてたら何もしない 赤で無いならタイトル行の日付+5の日付を開始日にセットしてループを抜ける。 内側ループの終わり 開始日と終了日から所要日数を求める。 外側ループの終わり。
- keithin
- ベストアンサー率66% (5278/7941)
E1からの1行目セル(仮にJ1まで)には,キチンと全部日付を埋めてある前提で。 Sub Macro1() Dim r As Long Dim c As Long, cc As Long Dim stopC As Long stopC = Range("IV1").End(xlToLeft).Column ’Range(Range("E1"), Cells(1, stopC)).DataSeries rowcol:=xlRows, Type:=xlDataSeriesLinear, Date:=xlDay, Trend:=True For r = 2 To Range("A65536").End(xlUp).Row For c = 5 To stopC If Cells(r, c).Interior.ColorIndex <> xlNone And Cells(r, c).Interior.ColorIndex <> xlAutomatic Then Cells(r, "B") = Cells(1, c).Value For cc = c To stopC If Cells(r, cc).Interior.ColorIndex = xlNone Or Cells(r, cc).Interior.ColorIndex = xlAutomatic Then Exit For End If Next cc Cells(r, "C") = Cells(1, cc - 1).Value Exit For End If Next c Next r End Sub
お礼
早速回答頂きありがとうございます。 keithinさんが提示されたマクロをEXCEL File タイトル Test.xlsxのB1にカ-ソルを持って行き リボンの表示内マクロを選択し実行しようとしていますがスム-ズに実行できません。 Excelと関連付けてマクロ登録、実行手順をご指導願えませんか?
お礼
keithinさん びっくりさせて申し訳けありません。 EXCELでマクロを操作するのは初めてで、googleのサイトを調べ何回も試行錯誤を繰り返し 実行しています。 マクロ登録と実行は理論上理解したのですが、マクロのプログラムで躓く状態。 今回keithinさんが回答して頂いた中にもエラ-を発生する要因があったりで試行錯誤にて 実行しているのが実情です。フランス語環境で実行しているのもあります。 何とか今回は実行できました。本当にありがとうございます。