エクセルでセルを参照して列を追加する方法は?

このQ&Aのポイント
  • エクセルでセルを参照して列を追加する方法について教えてください。
  • 表の中で終了日を手作業で入力するのではなく、参照して自動的に列を追加する方法を知りたいです。
  • マクロ経験が少ないので、簡単な方法があると助かります。
回答を見る
  • ベストアンサー

エクセルでセルを参照して列を追加したい

以下のような表を作成中です。    B   C    D  E  F  G  H 3 開始  8/1            8  8 4 終了  11/30           1  2 5                     水 木 G3は=G4、G4は=C3、G5は=C3の式を入力してあります。 Hからは+1で表示されるようにしてあります。 開始の日付はこのような形でできたのですが、 終了が手作業になってしまいます。 C4の11/30を参照して、列を自動追加したいと思っているのですが、 どのような方法がありますでしょうか? マクロは少ししか経験がありません… どうぞよろしくお願いいたします。

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

  • ベストアンサー
  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.5

 ANo.2です。 >現在の状況も数式は違いますが、手で延ばせば最終日まで表示されるように作成しており、それを自動でできないかと思った次第です。  質問者様は勘違いをされています。  ANo.2の方法は、開始日から最終日までの日数に合わせてドラッグし直すのではなく、最初に一度だけ、100列なり、200列なり、数式を入力したセルをコピーしておくだけで、その後はコピーし直す必要は全くなく、そのまま開始日と最終日の日付を入力するだけで、余分な日付は表示せずに、必要な日付のみが自動的に表示される様になる方法です。  例えば、G列をコピーして、H列~Z列に貼り付けた場合で、C3セルに8/28、C4セルに9/6と入力しますと、H列からP列にかけて8/28~9/6の日付が表示されるものの、数式がコピーされているQ列~Z列には何も表示されない様になっています。  これに対し、質問者様が入力されておられる現行の数式は、 >Hからは+1で表示されるようにしてあります。 という事ですので、それだけでは余分な日数も表示されてしまう筈です。  取り敢えず、ANo.2の方法を1度試してみて下さい。

その他の回答 (4)

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

ん?? >H3には以下の式をいれてあり、 >月の表示と罫線を引かないようにしてあります。 >=IF(DAY(H4)=1,H4,"") 元のご相談では >Hからは+1で表示されるようにしてあります。 というお話です。 そういうのは後出しというんじゃなくて、そもそも嘘を吐いてはいけません。 ご自分のご相談がまるで嘘ばっかりなんでしたら、そもそも質問する意味がありませんよ。 >すべてのセルに月の数字8888・・・と並んでしまいます。 あなたの最初のご相談をごらんなさい? 8,8と並んでるじゃないですか。これは一体どういうことですか? それに回答した通りにすれば、すべてのセルに8888が並んだりは決してしません。 結論: そもそもヤリタイ事がまちがってたのでしたら、一回このご相談はキチンと解決で閉じる操作を行ってから、あらためてホントは何をしたかったのかキチンと正しい状況説明を添えてもう一回ご相談を投稿し直して下さい。

回答No.3

何故に横に? 長期の日付となれば縦に展開すべきでは??(単純に言えば量の多い方を縦に!) スクロールのことを考えただけでもそうなる筈、横スクロールが得意な人はみたことがない!!

orange1010
質問者

補足

ありがとうございます。 ガントチャートなので、横スクロールで作成しています。 後出しで申し訳ありません。

  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.2

 まず、G3セルに次の数式を入力して下さい。 =IF(AND(ISNUMBER(1/DAY($C$3)),ISNUMBER(1/DAY($C$4))),IF($C$3+COLUMNS($G:G)-1>$C$4,"",$C$3+COLUMNS($G:G)-1),"")  次に、G3セルをコピーして、G4セルとG5セルに貼り付けて下さい。  次に、以下の操作を行って下さい。 G3セルを右クリック   ↓ 現れた選択肢の中にある[セルの書式設定]をクリック   ↓ 現れた「セルの書式設定」ダイアログボックスの[表示形式]タブをクリック   ↓ 現れた「分類」欄の中にある[ユーザー定義]をクリック   ↓ 現れた「種類」欄に m と入力   ↓ 「セルの書式設定」ダイアログボックスの[OK]ボタンをクリック  次に、同様の操作をG4セルに対して行い、「種類」欄には d と入力してから、「セルの書式設定」ダイアログボックスの[OK]ボタンをクリックして下さい。  次に、同様の操作をG5セルに対して行い、「種類」欄には aaa と入力してから、「セルの書式設定」ダイアログボックスの[OK]ボタンをクリックして下さい。  次に、G3~G5のセル範囲をコピーして、G列よりも右側にある列の3~5行目の範囲に貼り付けて下さい。(例えば、最大でも100日間の日付を表示出来れば充分である場合には、C3やC4に入力されている日付が何月何日であるかには関係なく、H3:DB5のセル範囲に貼り付けて下さい)  これで、C3に開始の日付を、C4に終了の日付を、それぞれ入力するだけで、必要な分のみの日付が自動的に表視されます。

orange1010
質問者

補足

ありがとうございます。 現在の状況も数式は違いますが、 手で延ばせば最終日まで表示されるように作成しており、 それを自動でできないかと思った次第です。 説明が下手で申し訳ないです。

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

>マクロは少ししか経験がありません… ALT+F11を押してVBE画面を出す 挿入メニューから標準モジュールを挿入する 下記のマクロをコピー貼り付ける sub macro1() range(range("H3"), range("H5").end(xltoright)).clearcontents range("H3").resize(3, range("C4")-range("C3")).formular1c1 = "=RC[-1]+1" end sub ファイルメニューから終了してエクセルに戻る ALT+F8を押してマクロを実行する。 言わずもがなですがG列以右には各行所定の表示形式を付けておきます。

orange1010
質問者

補足

ありがとうございます! ほぼ理想通りになったのですが、 後出しで申し訳ありませんが、H3には以下の式をいれてあり、 月の表示と罫線を引かないようにしてあります。 =IF(DAY(H4)=1,H4,"") マクロを実行するとすべてのセルに月の数字8888・・・と並んでしまいます。 この点はどこを修正すればいいのか教えていただけないでしょうか? 申し訳ありませんがよろしくお願いいたします。

関連するQ&A

  • 【再】エクセルでセルを参照して列を追加したい

    前回説明不足だっ為、再質問させていただきます。 セルは変わりましたが、現在、以下のようなガントチャートを作成中です。     E   F   G   H   I 1  5/2   5 2 9/14   2   3    4   5 3       水  木   金  土 E1には開始日を入力 E2には終了日を入力 F1には=F2 F2には=E1 F3には=E1 G1には=IF(DAY(G2)=1,G2,"") G2には=F2+1 G3には=F3+1 H1には=IF(DAY(H2)=1,H2,"")でI列以降も続きます。 H2には=G2+1でI列以降も続きます。 H3には=G3+1でI列以降も続きます。 土日は条件付き書式でカラー表示されるようになっています。 現在は終了日を入力しても、列を選択して右に延ばせば、 終了日以降も表示されてしまい、 終了日が前倒しになっても9/14のままなので、 (現在の9/14が9/1になっても9/14まで表示されてしまう) E1E2に開始日、終了日を入力したら F列に開始日が表示され、最終日まで自動的に終了日までを表示したいと思っています。 また、月の表示は月初日だけで2日以降は見づらくなるため、 表示は避けたいと思っています。 以上のような状況なのですが、何かいい方法をご教示いただきたく、 よろしくお願いいたします。

  • Excelで飛び飛びのセル(列)を参照したいのですが…その2

     ある「sheet1」で、G1="A",H1="B",I1="C",J1="D",K1="E",L1="F",M1="G",N1="H",O1="I",P1="J",Q1="K",・・というように文字が入力されているとすると、5列飛びの値A,F,K・・・(G1,L1,Q1・・・)が欲しいのです。そして、その値が「sheet2」に、C5=A,D5=F,E5=K,F5=P・・・となるようにしたいのです。ただ数値が5ずつ増加するのではなく、そのセルに入力されている文字列を参照したいのです。  それをまた、「sheet1」の、G2="A",H2="B",I2="C",J2="D"・・・の値でも同じ事をしたいのですが・・・。  よろしくお願いします。

  • Excelで日付の参照がうまくできません

    添付写真のようなシートがあります。(時刻表と考えていただければ結構です。) A5:B7に基本となる時刻表があります。 B2にはA5:B7の表をVLOOKUP関数でA2に対応するものを表示させています。 C2には実際の時刻が入ります。 B3にはその予定がA1の日付と同日ならば空欄、異なればその日付を入れます。C3も同様に実際の日付を入れます。 F2には=IF(B3="",A1+B2,B3+B2)を入れ、表示形式はyyyy/m/d hh:mmです。 同様にG2には=IF(C3="",A1+C2,C3+C2)を入れ、表示形式は上記と同様 H2はF2とG2の差を比較し、単純にG2-F2を入れています C4が空欄の場合、G4は2010/11/20 0:00となっています。 2行で1セットとしてそれを下にいくつも増やしていったところ、F2やG2のセルに入るべき日時がPCの現在日時を基本にするようになってしまいました。 この例ですと、C4が空欄の場合はG4が2010/11/20 8:00となり、C4に2:00を入れるとG4は2010/11/20 10:00となります。 いつの時点でこうなってしまったのか不明です。どうすればこの状態を回避できるでしょうか?

  • エクセル:複数セルからの参照

    お世話になります。 A,B,C列にデータが入っています。 D,E,F列に参照のためのデータがあります。 A,B,C列はそれぞれD,E,F列に対応しています。 A,B,C列と同じ並びのデータが入っている行をD,E,F列から探し、その隣のG列の値をH列に返す。 D,E,F列の並びが重複する行はありません。 A,D列は場所の名前、B,C,E,F列には数字が入っている。 例) A1に事務室 B1に20 C1に3 が入っているとする。 D/E/F列が 事務室/20/3 の並びになっているのが10行目の場合、H1にG10のセルの値を返す。 この場合、H列にはどんな計算式を入れておけばよいのでしょうか? A,B,C列と同じ並びのデータがD,E,F列で見つからない場合は空白をH列に返す。 ちなみにD/E/F列が 事務室/20/3 の並びになっている行は10行目しかないです。 よろしくお願いします。

  • エクセルでセルの色を参照したい。

    エクセル2010で、例えばA列(複数行の結合セル)に日付が入っていて、B列にその日の作業人数、C列にトータル仕事量が入るような表で、 仕事量が作業者数を超える場合、日付けセルに色が付くように書式設定してあるのですが実際の表は1日分の行数がこれ以上に多いので3-4日間程度の予定しか確認できない表になっています。 これだと月の予定が見えにくいので、別の表の日付のセルにその日の色を参照させたいのですが。 イメージとしては添付の表のような表示がさせたいのですが、セルの色参照は簡単には行かないのでしょうか?

  • Excelの参照について。

    こちらでは初めて質問させてもらいます。マクロ初心者です。長くなりますが携帯からなので画像貼れずにすいません。 vistaで2007使用です。 Sheet1に備品一覧表(結合セルなしで1行に備品ひとつ分が15列で400行くらい)があり、Sheet2に個表(空欄で枠のみの表で横に3品、縦に3品の9品分を1ページに印刷できるよう設定)を作成したいです。 Sheet2はSheet1の1行の中から一部を抽出して作製したい様式の違う表です。 例えばSheet1のA1がSheet2のA1からC1を結合したセルに、Sheet1のD1がSheet2のB2に、Sheet1のN1がSheet2のC3に…など 1つ目の参照が終わったら2つ目はSheet1のA2がSheet2のD1からF1を結合したセルに、Sheet1のD2がSheet2のE2に、Sheet1のN2がSheet2のF3に…という具合で もう1つ分右にいってから 4つ目は1つ目の下に移動しSheet1のA4がSheet2のA13からC13を結合したセルに、Sheet1のD4がSheet2のB14に、Sheet1のN4がSheet2のC15に…という具合で400行分参照するようにしたいのです。 Sheet2の各セルに一つ一つ参照を設定していくのも大変なので、Sheet1の必要なセルを参照してSheet2の各セル(結合セルあり)に表示させるマクロをつくりました。 今後Sheet1で変更したいのでコピー貼り付けでは都合がよくありません。いろいろ参考にさせてもらってヘルプで意味を調べながら作ったのですが、下記のコードでSheet1に文字が入っているセルの参照はできましたが、Sheet1に関数を入れているセルの参照の部分がうまくいきません。(関数が表示されます) Sheets(2).Select Cells(x, y).Select ActiveCell.FormulaR1C1 = "=Sheet1!R[" & CStr(i) & "]C[" & CStr(j) & "]" Sheet1で使った関数はこれです。 =IF(M10=1111111,"不明","H"&RIGHT(M10,6)) Sheet1のM列には購入日を数値化した七桁の数字(例えば4210310はH21.3.10のこと)が入っていて、N列に関数でH210310(ホントはH21.3.10としたいができませんでした。)と表示させそれをSheet2で参照させようと考えました。 文章表現がわかりにくいところがあると思いますし、マクロ初心者のため簡単なところが間違っているのかもしれませんが自分で解決できないのです。どなたかお助け下さい。

  • エクセルのOR関数でのセル参照

    エクセル2010です。 仮にA1セルが、早稲田、慶應、上智の何れかであればTRUEを返すOR関数は 1.)=OR(A1="早稲田",A1="慶應",A1="上智") または、 2.)=OR(A1={"早稲田","慶應","上智"}) でいけるのはわかります。 質問は、これら早慶上智といった文字列が、別の表(F1:H1)にあり、それを参照したい場合です。 1.)なら =OR(A1=F1,A1=G1,A1=H1) と書き換えればすみます。 しかし2.)は =OR(A1={F1,G1,H1}) と書き換えるとエラーになってしまいます。 何度もA1=を入れるのが面倒なので2.)のような方法で他のセルを参照させる方法はないでしょうか?

  • エクセルにて結合セルの範囲を参照するには?

       A B C D E F 1 |フォード| 2 |BMW | 3 |ホンダ | 各行A列~C列3つを結合入力 4 |ルノー | 5 |DFR  | 6 |ベンツ |  上記のようなエンジンメーカー表にて、A1~C1,A6~C6間にF1へエンジンを供給しているメーカー名がA~Cの3つのセルを結合して入力されているとします。  このような表を用いて別のワークシートから、このエンジンメーカーの入力セルの文字列を参照したいのですが、  フォードの場合ですと、=’エンジンメーカー表’!A1:C1と表示され、エラー値VAULEが返され、参照したい文字列が返りません。  結合されている3セルに範囲名をつけてINDIRECT関数で参照すれば出来るのですが、結合セルの項目が多過ぎて、いちいち、名前をつけていられないのです。  また、表のセル結合を崩せないのです。(同じフォーマットで作られている表が多数存在のため) このような単一セルでなく、複数のセル範囲を結合して入力されている文字列を簡単に=で参照する方法は無いでしょうか?

  • 複数のセルの引数を絶対参照にする方法

    エクセル2010を使っています。 複数のセルの最初の引数を一度に絶対参照にしたいです。 やりたいことを、添付した図で具体的に説明します。 この図には、frame1,frame2,frame3,の3つの基本の表(A列からD列の部分)があります。 また、frameX(I列からL列の部分)もあります。 今、作業は、E列からH列で行なっています。 まず、 F3には、=IF(J3=0,0,B3) G3には、=IF(K3=0,0,C3) ・・・ H7には、=IF(L7=0,0,D7) という関数を入れました。 この後、E1からH7を、コピー貼り付けして、 frame3-2までを完成したいです。 ですが、このままですと、frame2-2も、frame3-2も、それぞれの5行3列の値は全て0になってしまいます。 そこで、 F3には、=IF($J$3=0,0,B3) G3には、=IF($K$3=0,0,C3) ・・・ H7には、=IF($L$7=0,0,D7) と、5行3列に入れた(15個のセルの)、最初の引数を絶対参照にしたいです。 (実際の表は37行45列で、frameの数が200あります。) 複数のセルに入っている、最初の引数を一度に絶対参照にする方法はあるのでしょうか? よろしくお願いします。

  • VBA 他シートを参照しているセルのコピー

    お世話になります。 以下のシートがあります。 [sheet a]    A     B        C      D     E 1 2004 2005 2006 2007 2008 2 =b!A2 =b!C2 =b!E2 =b!G2 =b!I2 3 10 15 16 4 11 4 12 30 20 9 2 5 =SUM(A3:A4) =SUM(B3:B4) =SUM(C3:C4) =SUM(D3:D4) =SUM(E3:E4) [sheet b] A B C D E  F G H I J 2004 2005 2006 2007 2008 1 あ1 い1 う1 え1 お1 か1 き1 く1 け1 こ1 2 あ2 い2 う2 え2 お2 か2 き2 く2 け2 こ2 ・・・・・・・・・ [sheet a]F列以降に入れるデータは、VBA(マクロ)を使って、別のブックから取り出しています。 (例) F1…=E1+1(E1の数式をコピー) F3,F4…任意の値(別のブックからコピー) F5…=SUM(F3:F4)(E5の数式をコピー) 1行目,5行目の場合は左のセルをコピーして数式を貼り付けると、列が自動的に列が変わりますが、2行目の場合は元のシートを1行おきに参照しているので、単純にコピーしただけでは正しい数式が入りません。 2行目の参照をVBAで作るには、どのようにしたらいいでしょうか。 よろしくお願いします。

専門家に質問してみよう