Excel 2013で効率的に範囲名を付ける方法

このQ&Aのポイント
  • Excel 2013を使用してデータリストに範囲名を付ける方法を紹介します。
  • 数式→定義された名前を選択後、上端行のみにチェックを残して実行しますが、この方法では問題が発生することがあります。
  • より効率的に範囲名を付けるために、データの存在する長さに合わせて1行目の名前を付ける方法を探しています。
回答を見る
  • ベストアンサー

範囲名の効率的な付け方は?

添付図に示すデータを考えます。(Excel 2013) 各列の2行目以下のデータリストに、該当列の1行目に示す文字列で名前を付けたいとき、 1.範囲 A1:D15 を選択 2.[数式]→[定義された名前 <選択範囲から作成>]を実行 3.“上端行”だけにチェックを残して、[OK]をクリック としているのですが、此れでは不都合なときがあります。 例えば、 1.範囲 F1:f4 を選択 2.[データ]→[データツール <データの入力規則>]を実行 3.[設定]タブにおいて  ̄ ̄3.1.[入力値の種類]で“リスト”を選択  ̄ ̄3.2.[元の値]ボックス内に式 =$A$1:$D$1 を入力  ̄ ̄3.3.[OK]をクリック 4.範囲 G1:G4 を選択 5.ステップ2~3に同じ。ただし、3.2.で入力する式を =INDIRECT(F1) とする 6.セル F1~F4 の各セルを選択したときに表示される右端の▼ボックスをクリックして、  ̄ ̄上から、名前、項2、項3、項1 を選択 7.セル G1 を選択すると、セル A2 以降の名前がリスト表示されます。此処で「須田」  ̄ ̄を選ぶことにします 8.同様に、セル G2 では上から4番目の 213 を 4.次にセル G3、G4 で同じことをしようとすると「あれ?」と戸惑います この戸惑いの原因は、ステップ1の範囲を空白セルも含めて仕舞ったからです。例えば、範囲名「項1」「項3」の対象範囲をそれぞれ $B$2:$B$7、$D$2:$D$4 にしておけば問題ないことが分かっています。 でも、名前を付ける範囲は纏まって配置されているのに、一々範囲指定し直すのは面倒です。 一度の操作で、データの存在する長さだけ1行目の名前を付けるにはどうしたらよろしいでしょうか?

  • msMike
  • お礼率71% (507/712)

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

  • ベストアンサー
  • bunjii
  • ベストアンサー率43% (3589/8248)
回答No.1

>一度の操作で、データの存在する長さだけ1行目の名前を付けるにはどうしたらよろしいでしょうか? 1.各列をCtrlを押しながらドラックで有効範囲を選択選択して、2.3.の手順で名前を付ければ良いでしょう。 添付画像は1.の手順で選択した状態です。

msMike
質問者

お礼

なるほど、その方法、気が付きませんでした。 =COUNT() あるいは =COUNTA() を駆使するのかなぁ、なんて予想してました。 この度は誠にありがとうございました。

関連するQ&A

  • エクセルでの範囲選択

    お世話になります。 列の合計を出すときの範囲を選択する場合 =SUM(F9:F●) =SUM(G9:G●)  F9,G9は不変。 ●にはF列 または G列のうち数値が入力されているセルで、一番下にあるものの 行番号をいれたい。 例えば F20 と G22 に数値が入っていたら ●=22 としたい。 (F21以下のF列と、G23以下のG列はすべて空白の場合) この場合はどうすればいいのでしょうか?

  • エクセル 範囲の代入

    あるセルに入力された「範囲(C10:C13など)」を 別のセルの関数式に用いることができませんか? 具体的には、 A列:項目番号 B列:区分 ※A列の項目番号が入った行のB列には、項目名が入り、C以降は空白。 C列:種別 D列:名称 E列:詳細 ※B列の区分が入った行は、A列は空白・C~E列に各入力があります。 といった表が25シートあります。 項目毎にいくつの区分をもっているか・各種別がいくつづつかを カウント式で表記を 手作業になってしまいましたが、 ひとまず 25シート全ての A列に項番の入った行のF列に 項目毎の区分数を COUNTAを使って表示させてみました。 そこから範囲を抜き出し B列の区分毎のカウントを、COUNTIFを用いて (例えば、項番1の「A」はいくつか・「B」はいくつか、項番2の「A」はいくつか・「B」はいくつか・・) を出したいのですが・・・うまくいきません。 →F列に代入した式から、範囲式部分(例えばC14:C36・・・)をG列に抜き出し、  それをCONUTIFに代入できないか? というものです。 もちろん、別の方法があれば上記のやり方に こだわりはありません! 知識不足につき お手数とは存じますが、ご教示いただけますと助かります。 よろしくお願い致します。

  • Excel2007の「リスト」の定義

    データの入力規則の設定で、「入力値の種類」に「リスト」というのがあります。 この入力値の種類においてのリストとは、「1列又は1行で範囲選択されたセルに入力されたデータ」のこうとですか?

  • エクセル アクティブ行の範囲選択

    表題についてお尋ねします。 選択されているセルのある行で、なおかつC列からJ列までのみをマクロでコピーしたいと思っております。 行全体ですと下記で可能だったのですが、列を指定することができません。 Range(ActiveCell, ActiveCell).EntireRow.Copy C・D・E列には全ての列に必ずデータが入ってます。 F・G・H・I・J列には どれか一つの列のみにデータが必ず入っています。 複数行を選択することはなく、つねに一行のみです。 エクセル2003です。よろしくお願いいたします。

  • エクセル:VBAで範囲選択について

    クリックしたセルを操作者に目立たせるために、 ActiveCell を交差する形で、行と列の反転表示を試みています。 例:D6セルをクリックすると、D列と6行を同時に範囲選択させる   Range("D:D,6:6").Select クリックしたセル番地は、 ActiveCell.Column ActiveCell.Row で求まると思うのですが、それから先の処理方法が思い浮かびません。 よろしくお願い致します。

  • 矩形範囲の複数列を縦1列に並べ替えエクセルVBA

    データD1~H50にデータがあるとします。 これを D列データ(1~50行) E列データ(1~50行) F列データ(1~50行) G列データ(1~50行) H列データ(1~50行) と縦1列(計250行)に並べ変えたいのですが 次の条件によるVBAを教えていただけますか。 D1にカーソルを置く(アクティブセル) (または自動的にD1から対象とする※この例ではD1ですが、C1等に変更する場合有り) I列にはデータがない 51の行にはデータがない すなわち完全孤立矩形です。 D1~50行の途中に関数式のある空白セル(""による非表示、)がある場合その行は削除 D列1行目のセル名をファイル名としてテキスト(外部ファィル)を作成(同一ファイル名の上書きを回避) なお、A,B,C列、I列や51行にデータが続いていた場合、一定の範囲を囲ってその部分について同作業をする場合のVBAもあわせてお願いします。 その場合のファイル名は範囲左上のセルが対象。 よろしくお願いします エクセル2013Pro Windows7Pro(SP1)

  • 複数行の最下行の範囲選択

    こんにちは、マクロ初心者です。    A  B  C  D  E  F  G  H  I 1  あ  あ  あ        あ  あ     あ 2  あ  あ  あ        あ  あ     あ 3  あ     あ                 あ 4        あ                 あ 5        あ                 あ 6        あ                 あ 7        あ                 あ 8        あ                 あ 9        あ 10 上記のような表があるとき セル"A"列から"I"列までの最下行にあたる行を検索し、 更に最下行までの範囲をコピーして、別シートにコピーさせたいのです。 (上記の例だと、セル"A1"~"I9"の範囲をコピーする) Range("A1", Range("I1").End(xlDown)).Select Selection.Offset(0, 0).Select 上記のコードでできると思ったのですが、なぜか不必要な範囲まで選択されてしまいます。 (下方向に数行余計に選択されてしまう) これではダメなのでしょうか? ちなみに、数式などは入っておらず、入力されていないセルは全て空白です。 A列だけの最下行を選択するというのは簡単に出来たのですが、このように複数の範囲を 選択する場合は、どのようにコードを書くべきでしょうか。 マクロのスキルが無い為困っています。 アドバイスをよろしくお願いいたします。

  • 途中に空白行や列があるデータ範囲

    エクセル2003です。 セルA1からセルC50までデータがあり 10行目と20行目は全て空白、 セルC39が空白で セルE55、F57、G55にはデータがある の状態で以下の構文ですと Sub 範囲コピー1() Range("B3").Select Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select Selection.Copy End Sub 途中に空白行や列、空白セルがあり さらに離れた所E55、F57、G55に データが有るのにもかかわらず セルB3からセルG57までを選択してクリップボードにコピー してくれます。 ですが問題がありまして 上記のシートにて A45~F50を選択してDeleteをし、 さらにセルのF55、G55もDeleteして データ範囲を セルA1~E44とセルE55のみにしてからから 上記構文を実行すると セルB3からセルE55を選択してクリップボードにコピー してほしいのに、 データ削除前と同様の セルB3からセルG57を選択してクリップボードにコピー されてしまいます。 これはエクセルの手操作 Ctrl+Shift+End でも同じようになりますので当然の結果(※1)と思っています。 (※1→なにか別な方法はありますか?) 上記の使用方法はあまりないのですが 構文を使う時点での最大行数や最大列数は常に不明で 途中空白が有る場合無い場合、 上記のようにシート上でデータ操作をした直後であっても データ削除部分は加味しデータのある範囲だけの取得の対応 が可能な構文を1種類で作成したいのですが どういう方法があるでしょうか? ちなみに Sub 範囲コピー2() Range("B3").Select Range(Cells(Rows.Count, 1).End(xlUp).Row).Select Range(Cells(1, Columns.Count).End(xlToLeft).Column).Select Selection.Copy End Sub これですと 実行時エラー1004 Rangeメソッドは失敗しましたGlobalオブジェクト となります。 ヘルプをクリックしても何も表示されません。 WEB検索するとこのエラーの質問は結構多いのですが 事例が相違する為よく理解できません。 もしかしてRangeなのに 取得できる値が一つの番号でセルを指定できないからでしょうか? エラーになる構文だと最初のRangeは行番号、次のRangeは列番号、 ですので。 で、 Sub 範囲コピー3() Dim 最終行 Dim 最終列 Range("B3").Select 最終行 = Cells(Rows.Count, 1).End(xlUp).Row 最終列 = Cells(1, Columns.Count).End(xlToLeft).Column Cells(最終行, 最終列).Select Selection.Copy End Sub これならエラーにはなりませんが 事例だとセルC50だけが単独選択されて範囲として 取得をしてくれません。 また 1, Columns.Count ですので最終列の列番号の取得が1行目の最終列から左に検索し データのある所の列番号を返すので 3→C列 となってしまい D,E,F列を見つけてくれません。 かといって 55, Columns.Count では データが55行まで無い場合には対応が出来ませんのでこれも駄目です。 途中に空白が無い場合や離れたセルが無い場合でも使いたいので UsedRangeは使用したくない(よくわかってない事もあって)です。 よろしくお願いします。

  • VBAでデータ処理

    現在データ入力をしています。 例えば、A列には名前を入力しB列~F列まではその物に関する情報を入力したいと思います。 しかし、横長になりすぎるので、普段はデータ部分のB列~F列のセルを隠しておき、 A列のセル(例えばA3)をクリックすると、B3のデータがG1に、C3のデータがG2に、D3のデータがG3に、 E3のデータがG4に、F3のデータがG4に表示するようにしたいと思っています。 どのような方法があるでしょうか。ご教授下さい。

  • Excelでセル範囲指定でデータを検索する

    Excelでセルのデータを検索するとき編集にある検索(Ctrl+F)で行えます。 検索方向で行、列を選択できることは解るのですが、E列だけとか、E11:F20の範囲だけのような指定はできないでしょうか。 Excel2003です。

専門家に質問してみよう