ウォーターサーバーとコーヒーマシンが一体化した画期的マシン >>

いつもこちらで大変お世話になっています。

エクセルで、ある列を対象に並び替えをする時、空白セルを一番最初にもってきたいのです。

ユーザー設定リストに登録する時に、どのようにしたら良いのでしょうか?

すみませんが教えてください。
よろしくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (2件)

こんにちは。

代案です。
ある列がA列の場合、未使用列を作業用に
=ISBLANK(A1)
と入力して、必要行数コピー。
この列をまず降順で最優先キーに指定する。
    • good
    • 7
この回答へのお礼

ご回答ありがとうございます。
この方法でできました!

ありがとうございました。

お礼日時:2006/04/25 09:09

キーのセルを文字列にする。


初期値では並び替えされませんので、一文字でもスペースを入力して
並び替えすればOKですよ~
只、問題はスペースを入力しなければ成らない事と、文字列なので
桁数を揃えなければ成らない事です。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございました。

お礼日時:2006/04/25 09:12

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q空白セルのあるエクセル表の並び替え

空白セルのあるエクセル表の並び替え

エクセル2002を使用しています。
エクセルの表で空白セルがたくさんあるのですが、
並び替えをしようとすると、行全体ではなく、行の一部しか並び変わってくれません。
空白行も含めて、行全体を並び替えるようにする方法はありますでしょうか?

宜しくお願い致します。

Aベストアンサー

一般的に対象物を選択しないで特定の編集操作をすると(例えばデータ範囲を選択しないで並べ替えやフィルタなどの操作を実行すると)、エクセルが自動的に操作対象(並べ替え)範囲を認識しますが、このとき空白列や空白行があるとその位置までしか認識されません。

確実に並べ替えを行いたい場合は、最初に空白セル(行)を含む並べ替え対象を選択してから、「データ」「並べ替え」で実行してください。

Qエクセル2003で並べ替えする場合で、空白行を先頭ではなく末尾に表示し

エクセル2003で並べ替えする場合で、空白行を先頭ではなく末尾に表示したい。
IF文で計算結果が「空白」となる計算式が入っているセルを含めて並べ替えした場合、先頭に表示されます。 これを末尾に表示されるようにするにはどうしたら良いのでしょうか。教えて下さい。

Aベストアンサー

限定的に出来る事としては,
手順:
いまスペースが「上」にある状態で,ともかく並べ替えます
実際のデータのセル範囲を選びます
ユーザー設定リストに追加します
 (2003までのエクセルではツールメニューのオプションのユーザー設定リスト)
(2003までのエクセルでは)データメニューの並べ替えを開始し,
  オプションを開き,
  いま登録したリストを指定して,
そして並べ替えさせます。




>並べ替えると

「昇順」で並べ替えると,
数値の昇順 → ”” → 文字の昇順 → エラー値
の順になります。

「降順」で並べ替えると,
エラー値 → 文字の降順 → ”” → 数値の降順
の順で並びます。

特別なオプションで,「文字で記入されているけど数値に読み替え可能」な数字文字列については,数値の並びに入れる事も出来ます。


どんなデータをどっち順で並べたいのかご相談に書かれていませんが,こういった特性を生かしてデータや並び順を作成すれば対応できるかも?しれません。たとえば,""を計算させずNA()などを入れておき,書式によってエラー値が表示されないようにしてみるなどの手立ても可能かも知れません。

限定的に出来る事としては,
手順:
いまスペースが「上」にある状態で,ともかく並べ替えます
実際のデータのセル範囲を選びます
ユーザー設定リストに追加します
 (2003までのエクセルではツールメニューのオプションのユーザー設定リスト)
(2003までのエクセルでは)データメニューの並べ替えを開始し,
  オプションを開き,
  いま登録したリストを指定して,
そして並べ替えさせます。




>並べ替えると

「昇順」で並べ替えると,
数値の昇順 → ”” → 文字の昇順 → エラー値
の順になります。...続きを読む

Qエクセルで並べ替え:空白を先頭にできませんか

EXCEL2002で住所録を作っています。1冊2~3、000名のものが5~6冊の規模です。データの更新がしばしばあります。番地が23番地の12の203などとなりますが、これを3つのセルに分けて入力してあります。番地1が23、番地2が12、番地3が203です。データの中には番地2と番地3がない(空白)もの、または番地3のみない(空白)ものがあります。
 番地順に並べ替えを実施(優先度:番地1→番地2→番地3)すると、空白のあるデータが下段になります。たとえば「10番地」より「10番地の5」、「10番地の3」の方が上段になります。これに対して空白のあるデータ(「10番地」)の方を上段に持ってきたいと思います。添付画像で左表を右表のように表示したい。
 並び替えの序列では空白(またはスペース)は数字の後となっていますから、一旦はやむ終えないとはおもいますが、なんとか解決策はないでしょうか?
 マクロ(?)などが必要な感じがしますが、マクロを自分では作ったことがない初心者です。よろしくお願いします。

Aベストアンサー

住所列として
G2:
=C2&TEXT(D2,"00")&TEXT(E2,"-0;;;")&TEXT(F2,"-0;;;")
のように数式を追加して下向けにコピー,この列の昇順で全体を並べ替えてみます。


実際にあるデータに応じて,少し数式をチューニングした方がベターと思います。

Qエクセル 空白を無視して並び替える方法を教えてください。

エクセル 空白を無視して並び替える方法を教えてください。

こんにちわ。
下記のようにしたいのですが、方法が思いつきません。ぜひアドバイスをお願いします。


   A    B    C    D    E
1 あああ 空白 いいい ううう 空白
2 空白  えええ 空白 おおお かかか
3 ききき 空白 くくく 空白  けけけ

このように空白がところどころに混ざっている状況で

   F   G   H
1 あああ いいい ううう
2 えええ おおお かかか
3 ききき くくく けけけ

のように空白を除き並び替えたいです。

私の頭で思いつかなかったため、アドバイスをお願いします。
今回はできればマクロを使用しないで行いたいです。
ちなみに使用しているのはOffice2003です。

Aベストアンサー

一例です。
F1に以下の数式を貼り付け→shift+ctrl+enterキーを同時押下→縦横にコピー
=IF(COUNTA($A1:$E1)>=COLUMN(A1),INDEX($A1:$E1,SMALL(IF($A1:$E1<>"",COLUMN($A1:$E1),999),COLUMN(A1))),"")

Q【エクセル】Excel2007 並べ替えについて

いつもお世話になります。

エクセル2007で並べ替えをしていますが
うまくできません。

「空白>数字昇順」にしたいのですが
空白セルを無視して 
値が入っているセルのみで
ならべかえられてしまいます。

基本的な質問で申し訳ありませんが
よろしくお願いします。

Aベストアンサー

エクセルの並べ替え機能を使うと、残念ながら、空白は、一番下になります。
簡単なのは、空白に「0」を入れておいて、昇順を使うと上のほうになります。

マクロを使う方法もあるそうですが、その方法は、わかりません。

QEXCEL VBAマクロ作成で、他のEXCELからデータを取り込みたい

メインプログラム(EXCEL VBA)より、
他のフォルダーにあるEXCELの項目の内容を取り込みたいです。
たとえば他のフォルダーのEXCELのRange("A2:A3").ValueをメインプログラムのRange("C2:C3").Valueにセットしたい時です。

・コマンドボタン押したら、どこのEXCELから取り込むかのポップアップ(?)は、表示はできてます。
・作業者が選んだパスとブックもMsgBoxで表示できてるので、もらう相手の場所も取得できてます。

・となると次はOPEN,INPUTですか?
テキストデータの取り込みですと、Inputでそのバッファを定義してるのですが、なんか違うような。。。

よろしくお願いします!

Aベストアンサー

私がやる方法です。

Dim writeSheet As Worksheet ' 自分自身の書き出し先シート
Set writeSheet = ThisWorkbook.Worksheets(1) ' Sheet1 を参照

Dim readBook As Workbook ' 相手ブック
Set readBook = Workbooks.Open(filename) ' 相手ブックを開いて参照
Dim readSheet As WorkSheet ' 相手シート
Set readSheet = readBook.Worksheets("sheetName") ' 相手シートを参照
' または Set readSheet = readBook.Worksheets(sheetIndex)

' 例えば
writeSheet.Cells(1, 1).Value = readSheet.Cells(2, 2).Value ' 相手シートの B2 の値を自分自身の A1 に書き込む

readBook.Close False ' 相手ブックを閉じる
Set readSheet = Nothing
Set readBook = Nothing

私がやる方法です。

Dim writeSheet As Worksheet ' 自分自身の書き出し先シート
Set writeSheet = ThisWorkbook.Worksheets(1) ' Sheet1 を参照

Dim readBook As Workbook ' 相手ブック
Set readBook = Workbooks.Open(filename) ' 相手ブックを開いて参照
Dim readSheet As WorkSheet ' 相手シート
Set readSheet = readBook.Worksheets("sheetName") ' 相手シートを参照
' または Set readSheet = readBook.Worksheets(sheetIndex)

' 例えば
writeSheet.Cells(1, 1).Value = readSheet.Ce...続きを読む

QEXCEL VBA で現在開いているブックのファイル名を取得する方法

EXCEL2003 VBAで業務を簡素化するために、現在開いているブックのファイル名を取得する方法が分かりません。
作業手順をマクロを使って処理していますが、オリジナルのワークブックをファイル名を変えて保存し、以後、このワークブックを読み込んで使用しています。
このときのVBAは、オリジナルのファイル名を使っているため、ファイル名を変更するとエラーになり、以後の業務に使用できません。
常にファイル名を取得出来るVBAをどなたか、教えて下さい。

Aベストアンサー

>現在開いているブックのファイル名
 ちょっと曖昧な表現かなぁという気もいたしますが、VBAが書いてあるブックのブック名は
ThisWorkbook.Name
で、現在 "アクティブにして" 操作対象になっているブックの名前は
ActiveWorkbook.Name
ですね。

 しかし、
>VBAは、オリジナルのファイル名を使っているため、ファイル名を変更するとエラーになり
というような文脈からすると、
ThisWorkbook.Name
の方ですかね。

QExel VBA 別ブックから該当データを検索し、必要なデータを取得する方法について

部品表というブックがあります
A列に商品名、B列に商品番号が入力してあります。C列のコードは未入力です。
A列     B列     C列      
商品名  商品番号  コード
モータ  U-1325-L  
ホルダ  R-134256

また、コード一覧表という別のブックには、A列に商品番号と、B列にコードが、何千件も入力されています。

やりたいことは
部品表のC列のコード欄に、コード一覧表ブックから商品番号と一致するコードを貼り付けしたいのです。

部品表は、何百種類もありますので、関数ではなく、マクロで処理を希望します。

自分では、部品表の商品番号をコピーして、コード一覧表で検索し、検索結果の右隣のセル(B列のコード)の値を部品表のC列に貼り付ければよいかと思い、書いてみたんですが…

Sub 別ブックから貼り付ける()
  Dim 検索する As Long
Windows("部品表.xls").Activate
検索する = cells(i,2).Value
Windows("コード一覧表.xls").Activate
ActiveWindow.SmallScroll Down:=-3
Selection.AutoFilter Field:=3, Criteria1:="=検索する", Operator:= xlAnd

と、してみたものの、検索しても、その検索結果の隣のセルのコードをどうやって取得すればいいのかが、わかりませんでした。

基本事項は本で学びましたが、呪文のようなコードはよく理解できません。懸命にネットで検索して、訳して理解する努力をしてはいますが。

どうぞよろしくお願いします。

部品表というブックがあります
A列に商品名、B列に商品番号が入力してあります。C列のコードは未入力です。
A列     B列     C列      
商品名  商品番号  コード
モータ  U-1325-L  
ホルダ  R-134256

また、コード一覧表という別のブックには、A列に商品番号と、B列にコードが、何千件も入力されています。

やりたいことは
部品表のC列のコード欄に、コード一覧表ブックから商品番号と一致するコードを貼り付けしたいのです。

部品表は、何百種類もありますので、関数...続きを読む

Aベストアンサー

こんにちは。
とりあえず実用性も踏まえました。
メインの動作はワークシート関数のVLOOKUPをVBA上で使用していますので理解はしやすいかと思います。
また、質問文から察するに「部品表.xls」と「コード一覧表.xls」の両方を開いて処理されていますが「コード一覧表.xls」はプログラム内で開いて閉じているので実行するときは「コード一覧表.xls」は閉じて置いてください。
Option Explicit
Sub Sample()
 Application.ScreenUpdating = False
 Dim I As Long
 Dim xlBook
 Set xlBook = Workbooks.Open("C:\★★\コード一覧表.xls") '★要変更★
 I = 2
 Do While Range("A" & I).Value <> ""
  ThisWorkbook.Worksheets("Sheet1").Range("C" & I).Value = Application.VLookup(ThisWorkbook.Worksheets("Sheet1").Range("B" & I).Value, xlBook.Worksheets("Sheet1").Range("A2:B65535"), 2, 0)
  I = I + 1
 Loop
 xlBook.Close
 Application.ScreenUpdating = True
 MsgBox ("完了")
End Sub

こんにちは。
とりあえず実用性も踏まえました。
メインの動作はワークシート関数のVLOOKUPをVBA上で使用していますので理解はしやすいかと思います。
また、質問文から察するに「部品表.xls」と「コード一覧表.xls」の両方を開いて処理されていますが「コード一覧表.xls」はプログラム内で開いて閉じているので実行するときは「コード一覧表.xls」は閉じて置いてください。
Option Explicit
Sub Sample()
 Application.ScreenUpdating = False
 Dim I As Long
 Dim xlBook
 Set xlBook = Workbooks....続きを読む

Qエクセルで空白セル”” と未入力セルの違い

関数で セルA1 に=if(B1=0,"","入力済")
としました。
セルの選択を素早くするためにショートカットキー「Ctrl+↓」を
利用しています。
通常の未入力空白セルは上記のショートカットで飛ばされて選択
されません。
これに対して上記関数で ""  として入力されたものを
コピーして値だけを貼り付けたとしても
上記ショートカットキーで飛ばされず選択されてしまいます。
見た目は 全く同じ 空白セルです。(関数も値貼り付けをしているので消えています。)
未入力の空白セルと 関数で""と入力されて値貼り付けを受けたセルではどこが違うのでしょうか。
また、未入力の空白セルに 戻すには関数でどのように入力させればいいのでしょうか。もちろんDeleteKeyを使って未入力の空白セルに
戻るのですがそれではショートカットキーでとばせるメリットがなくなります。関数で大量に処理したいのです。
おわかりの方お教えください。

Aベストアンサー

>未入力の空白セルと 関数で""と入力されて値貼り付けを受けたセルではどこが違うのでしょうか。

未入力の空白セルは「ISBLANK関数」で「真」を返します。

一方、値としての""が貼り付けられたセルは「ISBLANK関数」で「偽」を返します。

>また、未入力の空白セルに 戻すには関数でどのように入力させればいいのでしょうか。
不可能です。「式」は「値」を返すので「空白セル」と言う「状態」を返す事は出来ません。

>もちろんDeleteKeyを使って未入力の空白セルに
>戻るのですがそれではショートカットキーでとばせるメリットがなくなります。関数で大量に処理したいのです。

つまり「セルを1つづつ選択してDeleteキーで1つづつ空白セルに戻すのが面倒」なので「全部を一気に空白セルに戻す良い方法は無いか?」と言う事ですね?

だったら簡単です。

すべての式を
=if(B1=0,"","入力済")
ではなく
=if(B1=0,1/0,"入力済")
にしておきましょう。

すると、未入力の所は、空白("")にならず「#DIV/0!」になります。

そう表示されたら、シート全体を選択し「CTRL+G」を押して「ジャンプ」を出します。

「ジャンプ」のダイアログが出たら「セル選択」を押し、セル選択のダイアログを出します。

セル選択のダイアログが出たら「数式」を選び、その下のチェックは「エラー値」だけにします。

「OK」を押してダイアログを閉じると「#DIV/0!」の表示になったセルのみが選択状態になります。

「#DIV/0!」の表示になったセルのみが選択状態になったら、Deleteキーを押して、それらのセルを一気に「空白セル」にして下さい。

もちろん、大量にあっても、手順は変わりません。

>未入力の空白セルと 関数で""と入力されて値貼り付けを受けたセルではどこが違うのでしょうか。

未入力の空白セルは「ISBLANK関数」で「真」を返します。

一方、値としての""が貼り付けられたセルは「ISBLANK関数」で「偽」を返します。

>また、未入力の空白セルに 戻すには関数でどのように入力させればいいのでしょうか。
不可能です。「式」は「値」を返すので「空白セル」と言う「状態」を返す事は出来ません。

>もちろんDeleteKeyを使って未入力の空白セルに
>戻るのですがそれではショ...続きを読む

Qエクセルで、条件に一致した行を別のセルに抜き出す方法

エクセルで、指定した条件に一致するセルを含む行をすべて抜き出す方法が知りたいです。

たとえば、

<A列> <B列> <C列>
7/1 りんご 100円
7/2 ぶどう 200円
7/2 すいか 300円
7/3 みかん 100円

このような表があって、100円を含む行をそのままの形で、
別のセル(同じシート内)に抜き出したいのですが。

7/1 りんご 100円
7/3 みかん 100円

抽出するだけならオートフィルターでもできますが、
抽出結果を自動的に、別の場所に、常に表示させておきたいのです。

初歩的な質問だと思いますが、検索しても分からなかったので、よろしくお願いします。

Aベストアンサー

同じ質問が結構よく出てますが、そんなに初歩的でもありません
別シートのA1セルに「100円」と入力し、そのシートの任意のセルに以下の式を貼り付けて下さい。後は、下方向、右方向にコピー。
日付のセル書式は「日付」形式に再設定してください

=IF(COUNTIF(Sheet1!$C:$C,$A$1)>=ROW(A1),INDEX(Sheet1!A:A,LARGE(INDEX((Sheet1!$C$1:$C$500=$A$1)*ROW(Sheet1!$C$1:$C$500),),COUNTIF(Sheet1!$C:$C,$A$1)-ROW(A1)+1)),"")

データ範囲は500行までとしていますが、必要に応じて変更して下さい


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング