• 締切済み

EXCEL・VBAで、範囲名を参照したい。

ushi2015の回答

  • ushi2015
  • ベストアンサー率51% (241/468)
回答No.1

こんにちは 範囲名は一定にして、範囲参照数式で、月や社員名で参照先と範囲が 変更されるようにした方がいいのでは? INDIRECT、COUNTA、MATCH、INDEX 等を駆使して範囲参照数式を 作り上げる感じです。

kichi4182
質問者

補足

ありがとうございます。 書き忘れていたのですが、範囲名は社員名とイコールにしてあります。あと、年度毎に別ブックにしてあるので、年度途中で社員が増えることはあっても、減らすことは参照がおかしくなるのでありません。 この場合においても可能ですよね? 例  1月シート選択時 範囲名A 1月.C4:C35 範囲名B 1月.D4:D35 範囲名C 1月.E4:E35  2月シート選択時 範囲名A 2月.C4:C35 範囲名B 2月.D4:D35 範囲名C 2月.E4:E35

関連するQ&A

  • Excel VBA で異なるシートの名前の範囲の参照方法について教えて

    Excel VBA で異なるシートの名前の範囲の参照方法について教えてください。 Sheet1には、入力規則で項目1と項目2をSheet2にある表からINDIRECT関数を使用して項目1のて、名前の範囲から、項目2が選択できるようになっています。 そのSheet2は非表示にしてあり、worksheets(2)など2枚目にあるとは限りません。シート名も決まったものではありません。その条件下で項目2がきちんと項目1の名前の中から選ばれているか確認したいのです。(項目2を選択してから、再度項目1を再度選択しなおすことが出来てしまうため。) 項目1と項目2の整合性を確かめるため、find関数を使用しようと考えていますが、これだとシート名を指定しなければなりません。名前の範囲からシート名を割り出す方法など何か良い手はないでしょうか。 それとセルに入力されたシート名を再表示するやり方が上手くいきません。どうしてなのでしょうか。↓ sub シート再表示() dim sagyo as integer '←シート名「632」などの数値な為 set WBK2=Activeworkbook sagyo=WBK2.worksheets(1).range("f5").value On error goto jamp3 worksheet("sagyo").visible=true  処理 sagyoが無かった場合、range("f6").valueの数値が入力されている(677など)を表示させたい jamp3: end sub jamp3: お手数ですがよろしくお願い致します。

  • エクセルVBAでのスケジュール作成

    いつも大変お世話になっております。 本日も質問させてください。 会社指定の異なる2つのブックのエクセル表に自分の部署の社員全員のスケジュールを入れなければいけません。 (1つは月間、もう1つは週間で、それぞれ各月、各週毎にシートがあります。) VBAのフォームを作成し、週間スケジュールは自動でセットできるようになりました。 ですが、月間のスケジュールがうまくいかなくて困っています。 (入力フォームは共通のものを使用します。) スケジュールの表はシートが月別になっていてA列に社員名、1行目に日付、2行目に曜日、3行目に祝日が表示されるようになっています。 4行目からが各社員のスケジュールですが、1人の1日分のスケジュール入力のセルは2列×3行=6セルです。 (わかりにくいので図で表現したかったのですが、ずれて表示されてしまって余計にわかりにくいのでやめてみました。ちなみに、1人目の1日目のスケジュールのセル範囲はB4:C6となります。) そして、各セルには入力する項目が決まっています。 (この項目についてはフォームで作成済みです。) セルが多いため、Rangeを使おうと思っても指定するのが困難です。 個人的にはRangeのセルの値を別シートに作成した表からindexで検索できたらなぁ。と思っています。 できるかどうかすらわかっていませんが。(汗) もちろん、もっと効率的な方法があればそちらを教えていただきたいです。 週間スケジュールのセルから入力値をもってくる事も考えたのですが、月間は1日から必ず始まっていますが、週間は月曜日からのため、月や週によって日付が異なることなどから、やはり私には難しいのです。 よろしくお願いします。

  • EXCEL2010 VBA 指定した数だけシートを

    EXCEL2010でVBAを使用して指定した数だけワークシートを作成したいと思います。 シートA11に入力してある数を確認してその数だけシートを作成します。 作成したシート名は○1・○2という風に文字に数を増やしていきます。 指定した数だけシートを作成したらもう一度この処理を行います。 ただしシート名は×1・×2~という風に違う名前で作ります。 (例) A11の値は5 シート ○1・○2・○3・○4・○5 と シート ×1・×2・×3・×4・×5 の計10個のシートを作成する。 ○と×のシートを指定数だけ作成する。 説明が下手で分かりにくいかもしれませんが上記の方法を教えてください。よろしくお願いします。

  • VLOOKUP関数:別シートにある参照範囲が変動する場合

    スポーツクラブで学童会員の名簿を作成しています。 【目的】 VLOOKUP関数を利用して、シート1「名簿」のA列に会員番号を 手入力すると B列に学年、C列に氏名が各々自動入力されるようにしたい。 【設定】 ・シート1を「名簿」とし、  A列を会員番号、B列を学年、C列とD列を結合して氏名としました。 ・シート2を「参照データ」とし、  A列を会員番号、B列を学年、C列とD列(結合を解除)を氏名と  しました。 ・シート2の1行目はタイトル行とし、データが入力されているのは  2行目からです。 ・別シートのデータを参照するため、シート2のデータが入力されて  いる範囲に「参照範囲1」という範囲名をつけました。 【状況】 現在設定している数式は B2=VLOOKUP(A2,参照範囲1,2,FALSE) なのですが、以下の場合は「参照範囲1」で設定した範囲とは 異なる範囲のデータを参照しなければなりません。 ・入会者がいる場合:データを追加するため、行が増える ・退会者がいる場合:データを削除しブランクを解消するため、  行が減る 【質問】 上記状況の場合、VLOOKUP関数に加えてどのような関数を使用すれば 別シートにある参照範囲の変動に対応できるのでしょうか? 会員が増減するたびに、新たに参照範囲を設定し範囲名をつけ直す という作業は避けたいのですが・・・ ご教示いただけますよう、何卒宜しくお願い申し上げます。

  • エクセル シート名を参照する関数は?

    エクセルで、売上を管理しているファイルがあります。 4~3月までの各月ごとのシートに、取引先ごとの売上額・仕入額・原価率・担当者名etcが1行ずつ入力されてあります。 そして、担当者別シートで担当者ごとの取引先データをLOOKUP関数やINDEX関数を使って抽出・合計し、グラフ化して管理しています。 ↓こんな状態です。(合計額の表)    A   B  C  D  E F G 4月 50000 40000 80% ・・・・・ 5月 6月 今の状態では、5月になればA~Gまでの4月の列をコピペして LOOOKUP関数等で参照しているシート名「4月」を「5月」にひとつずつ入力しなおしています。 これが結構面倒なので、 セルに「5月」と入力したら、5月のシートを参照しにいく、 セルに「6月」と入力したら、6月のシートを参照しにいく・・・ というように作り直したいのですが、 このような、シート名を参照する関数はあるのでしょうか?

  • エクセルでシート名をセルに反映させる方法

    エクセルでシート名をセルに反映させる方法 いつも、ここでいろいろ助けられています。 セルにシート名を入れる方法はございますでしょうか。 どういうことかと言うと、同じフォームの表を、月別に作成していますので、毎回、その月の月度をシート内の月度を入力する位置および、シート名の欄に2回入力しています。 これを1回にしたく質問させていただきました。 エクセルのバージョンは「エクセル2007」です どなたかご存知の方よろしくお願いいたします。

  • エクセルのVBAについて

    ご教授下さい。 勤怠管理表を作成しています。 個人データを入力するシートがあり、出来上がったものの中から必要な事項のみを別シートの一覧表へ転記をしたいのですが、方法がわかりません。 どなたかご教授ください。 1.転記したい事項は下記の通りです。 (1)氏名 (2)出勤 (3)公休 (4)休み (5)合計 (6)給料 2.6項目をシート名(全体)に表形式で転記 3.社員番号等はなくランダムに入力するため、一覧表へは転記のみされればOKです。 よろしくお願いします。

  • エクセルvbaセル範囲について

    困っております。 ご教授ください。 エクセルシート上に1~10の数字が列方向に並んでいます。 ユーザーフォームでtextbox1とtextbox2を作成します。 textbox1とtextbox2は1~10の間で範囲を入力します。 textbox2でエンターを押されたときに処理が開始します。 例えばtextbox1に「3」、textbox2に「8」が入力された場合、 3,4,5,6,7,8のセル範囲を選択したいのですがどのようにすればよろしいでしょうか。 よろしくお願いします。

  • 【EXCEL】 結合されたセルを参照した式

    1.EXCELで、数式で計算する時に元になるデータ(Sheet1のセル)に結合されたセルを指定しています。 2.Sheet2に上記の結合セルを参照した数式を作成しようと考えています。  a.セルに = (イコール)を入力し  b.Sheet2の目標セル(B1:C1)をクリック  c.Enterキーを押すと  入力された数式が  ='Sheet1'!B1:C1  となってしまい、エラー(#VALUE!)になってしまいます。  入力後に数式を手で修正して   ='Sheet1'!B1  とすれば正常に値が表示されますが、他のシートはこんな修正をしなくても   ='SheetXX'!B1  のように表示されます。 どこを修正(確認)したらいいのかわからない状態です。 どなたかご存知の方がおりましたらよろしくお願いいたします。

  • EXCEL2010で、アクティブセルが特定の範囲に

    EXCEL2010で、アクティブセルが特定の範囲に在る時だけ、アクティブシート上のコマンドボタンを有効にし、範囲外に在る時は無効にしたいのですが、どうもうまくいきません。 表示・非表示ではなく有効・無効で対応したいです。 アクティブシート名が"予約状況"、コマンドボタン名が、”日報作成"です。 VBAの基本が解かっていないだけかもしれませんが、 CommandButton1.Enabled = False '無効 だと、実行時エラー424 オブジェクトが必要です。と出て、 Sheets("予約状況").Select ActiveSheet.Unprotect ActiveSheet.Shapes.Range(Array("日報作成")).Select ActiveSheet.Shapes.Range(Array("日報作成")).Enabled = False だと、最後の行で、実行時エラー438 オブジェクトはこのプロパティまたはメソッドをサポートしていません  と出てしまいます。 プロパティとは「属性」に近い意味だと理解していますが、合っていますでしょうか。(書き込み禁止や文字色や画面上の位置等) またオブジェクトとは、言ってしまえば「目に見える物自体」だと、理解しています。(ワークシートやコマンドボタン、セル等) メソッドは、「命令・指令」で良いのでしょうか。よく解かりません。この辺りもご教示戴けると大変有り難いです。よろしくお願いします。