• ベストアンサー

オリジナルで計画表を作成なのですが・・EXCEL

過去の同じような質問を見て作成しようと試みましたが実力不足のようです。教えてください。 EXCEL VBAで開始日から終了日までの期間のセルへ矢印オブジェクトを引きたいです。 ループして空白行へ着いたらエンドです。また、期間の起点となる日((NOW関数))から横へ +1しています。説明不足ですがご教授ください。

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

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

No.1です。 補足の >実際は途中にも空白のセルがありそのときは矢印なしで次の行へいきたいです というコトはC・D列に空白セルがある場合は無視したい!というコトですかね? 一応そういうコトだとして・・・ もう一度コードを載せてみます。 Sub Sample2() Dim i As Long, startCol As Long, endCol As Long, c As Range, r As Range ActiveSheet.Lines.Delete For i = 5 To Cells(Rows.Count, "C").End(xlUp).Row If WorksheetFunction.CountBlank(Cells(i, "C").Resize(, 2)) = 0 Then '←この行追加(C・D列に空白セルがなければ) startCol = WorksheetFunction.Match(Cells(i, "C"), Rows(3), False) endCol = WorksheetFunction.Match(Cells(i, "D"), Rows(3), False) Set c = Cells(i, startCol) Set r = Cells(i, endCol) With ActiveSheet.Shapes.AddLine(c.Left, c.Top + c.Height / 2, r.Left + r.Width, r.Top + r.Height / 2).Line .ForeColor.RGB = vbBlack .Weight = 0.7 .EndArrowheadStyle = msoArrowheadTriangle .EndArrowheadLength = msoArrowheadLong End With End If '←この行追加 Next i End Sub こういった感じでしょうか?m(_ _)m

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

その他の回答 (1)

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

こんばんは! >期間の起点となる日((NOW関数))から横へ >+1しています なぜE3セルが2月1日になるのか疑問ですが、それは無視して・・・ とりあえずC・D列に入力するシリアル値は3行目に必ずあるとします。 Sub Sample1() Dim i As Long, startCol As Long, endCol As Long, c As Range, r As Range ActiveSheet.Lines.Delete For i = 5 To Cells(Rows.Count, "C").End(xlUp).Row startCol = WorksheetFunction.Match(Cells(i, "C"), Rows(3), False) endCol = WorksheetFunction.Match(Cells(i, "D"), Rows(3), False) Set c = Cells(i, startCol) Set r = Cells(i, endCol) With ActiveSheet.Shapes.AddLine(c.Left, c.Top + c.Height / 2, r.Left + r.Width, r.Top + r.Height / 2).Line .ForeColor.RGB = vbBlack .Weight = 0.7 .EndArrowheadStyle = msoArrowheadTriangle .EndArrowheadLength = msoArrowheadLong End With Next i End Sub こんな感じではどうでしょうか?m(_ _)m

nirizo
質問者

補足

できました。ありがとうございます。すごいっす。 ただ、よくばりなもので次の問題がでました。空白のセルまでいったら終了としたのですが。。実際は途中にも空白のセルがありそのときは矢印なしで次の行へいきたいです。矢印を引きたいのは100行程度です。 助けてください。すみません。

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

関連するQ&A

  • Excelで空白行を削除したい

    2500行位使用しているシートのなかに、どのセルも空白になっている不要な行が300行くらい混ざっています。 この行を自動的に削除するにはどうすれば良いでしょうか。 ただ、その行のA~Eセルは空白でもFセルに値が入っているなど完全に空白でない行は削除できません。 メニュー、関数、VBAなど有れば教えてください。

  • (エクセル)表から1列の別表をつくりたい。

    表に入力されたものを1列に並び替えをしたいのです。(エクセル関数) エクセルの表から、セルに入力された情報を抜き出し、並び替えたいのですが、行き詰ってしまい質問させていただきます。 (やりたいこと) 添付資料のように、事業所ごとに購入した物品が日付ごとに入力されていきます。この表を一列で並び替えることを したいのですが、現状の表の形で1列に抜き出すやり方が思い浮かびません。ひとつずつリンクを設定していけばいいですが、 それですと、空白のセルができてしまうこともあり、空白を消すためにフィルタをやらなくてはいけず、なんとか関数でどうにかできないと質問させていただきました(つまり空白のセルは飛ばし、隙間のない1列の表に変換したいです)。 (試したこと) (1)vlookup関数を使うために、日付の横に検索列を作ってもみましたが、同じ行に複数の抜き出すべくものがあると、 if関数のネストをいれるにも「if(c5="","",vlookup(v5,b5:r10,2,fasle)」みたくやってみましたが、c5までは取り出せても、 d5,e5,f5・・・と右にずらしていく関数式が思い当たりません。 (2)種類、数量データ入力されている全てのセルの横に(1.2.3.4.5.6.7.8.9.・・・)と数字をいれて検索列をつくり、vlookupとmatch関数の 組み合わせも試しましたが、vlookup関数の性質上、複数列に検索値(「vlookup(検索値,範囲,列番号,検索の型)」)が存在しているとこれも出来ず。 説明が不十分な点もあると思いますが、よろしくお願いいたします。もし、VBAでなければ難しいとのことでしたら、どのようなVBAを組めばいいかもお願いいたします。

  • 空白のセルを行削除する。EXCELマクロなのですが・・

    VBA初心者です。 データーをHPから、単純にコピーしてきて、 EXCELに貼り付けています。 フィルターをかけても、画像かなにかがセルに張り付いているのか、 空白行をすべて削除できません。 いろいろ試して(HPから、空白セルの行削除について書かれてあるマクロを貼り付けて)動いたのが、このVBAです。 しかし、遅いので、早いVBAに簡略できればいいのですが。。 大体、1000行ぐらいの文字を貼り付けて、3/1ぐらいが空白行です。A行のセルの空白のみを、削除したいのですが。  まったくの素人なので、わかりません。 どうかよろしくお願いいたします。 Sub 空白の削除() x% = Worksheets("sheet1").Range("A65536").End(xlUp).Row For i = x% To 1 Step -1 If Worksheets("sheet1").Cells(i, 1).Value = "" Then Worksheets("sheet1").Rows(i).Delete Next End Sub

  • 出勤時間表の作成

    カレンダー(weekday(date))関数で出勤表を作成しております。 A1B1は「月」、C1D1は「火」、E1F1は「水」と順に入力しています。 A2・C2・E2は午前、B2・D2・F2は午後を入力、A1B1は「1」、C1D1は「2」、E1F1は「3」と入力しています。 A4のセルにA3が空白の場合は空白に、A1セルが月曜日および水曜日でA2セルが午前の場合は、2(時間)を記入、A1セルが火曜日で午前の場合は、5(時間)、B4のセルにB3が空白の場合は空白に、B1セルが月曜日および水曜日でB2セルが午後の場合は、3,5(時間)を記入、B1セルが火曜日で午後の場合は、1(時間)を記入しようと思います。 順次4行をコピーしていこうと思います。 ※A1B1は「月」、C1D1は「火」、E1F1は「水」を別々入力しているのは、A4,B4,C4,D4,E4,F4に、A4セルにIF関数(if(A1="月",・・・・)と入力した場合、A1のセルしか見に行かないので、2つ作成しています。 作成した関数(if(A3="","",if(or(A1,"月","水",A2="午前","2",)if(or(A1,"火","午前","5"),と続けてますが、表示できません。 VBA・関数での回答をお願いします。

  • エクセルで空白セルを寄せたい

    エクセル2002使用です VBAは使わずに関数だけで空白セルがあるセルを詰めて表示したいのですが・・・   A|B|C|D|E|F|G 1 あ い う え お か き 2 ○   ○ ○   ○ の表を   A|B|C|D|E|F|G 1 あ う え か  2 ○ ○ ○ ○ のように表を書き換えたいのです。 1行目には必ず文字が入力されています。 2行目には入力されているセルと空白セルが不定期に入力されています。 2行目のセルが空白ならば、1行目のセルも削除して左へ詰めて 表を転記したいのです。 よろしくお願いします。

  • Excelについて

    Excelについて質問です。 一行目と二行目に値の入ったセルと空白セルが混在しています。どちらも同じものに対する値の為、一行目にまとめようと、一行目の空白セルに二行目のセル(下)に値がある場合はその値を返し、空白の場合は空白のままにするというIF関数を使いましたがうまくいきませんでした。三行目と四行目、五行目と六行目・・とかなりあります。良い方法を教えていただけますでしょうか。

  • エクセルVBAで関数が入った空白セルの取得

    エクセルVBAで下記のようなセルの参照をしたいのですが、よろしくお願いします。(エクセル2002です)   A  B  C  D  E  F 1 78 80 セル(A1)(B1)には値も関数も入れられています。 セル(C1)(D1)(E1)には値は入っていませんが、ワークシート関数が組み込まれており空白となっています。(関数の""にて空白) セル(F1)には何も入力されていません。 今回はセル(B1)の80の値を取得できるようにVBAで下記のようにコードを組みました。 Range("F1").End(elToLeft).Activate そうすると、セル(E1)に関数があるために(?)(E1)がアクティブな状態となります。 関数が入力されていても空白として(B1)をアクティブな状態にするために良い方法はありますでしょうか? 誠に申し訳ございませんが、よろしくお願いします。

  • エクセルVBAについて

    VBAに関しての質問です。 A列に日付(10行目から) B列にその日の売上が 300行(300日分)入力されてる表があるとします。 C列にその日を含めた過去N日間の最大の売上を表示させたいのです。 例えば 過去5日間なら過去5日間の最大売上げを毎日表示させたいのです 当然この場合は5日間なのでCの13行目までは空白になります。 「N」日はA1セルに任意の日数で入力することによって希望の期間の数値 が表示できるようにしたいのです。 関数を使ってできるのいですが、事情がありましてエクセルのマクロの 繰り返しのプログラムでやりたいのですが VBAに関しては全く素人ですの。どなたかご教授願えませんでしょうか よろしくお願いします。

  • 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の関数

    日付を入力する行の空白でない最下段のセルを見つけて、その日からたとえば50日後の日付を表示させるような関数は作れますか?

このQ&Aのポイント
  • MFC-J705Dで純正インクカートリッジを交換したが、検知されない問題が発生しています。カートリッジを外す時の警報音も鳴らない状況です。
  • Windows10を使用しており、USBケーブルで接続されています。関連するソフト・アプリは特にありません。
  • 電話回線はIP電話を使用しています。
回答を見る

専門家に質問してみよう