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

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

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

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

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

A 回答 (4件)

エクセルの並べ替え機能を使うと、残念ながら、空白は、一番下になります。


簡単なのは、空白に「0」を入れておいて、昇順を使うと上のほうになります。

マクロを使う方法もあるそうですが、その方法は、わかりません。
    • good
    • 0
この回答へのお礼

アドバイスありがとうございます♪
やっぱり、それが一番懸命な方法のようですね!><

あんまり難しい設定は(マクロとか)
できないとおもうので、
0を入れて並べ替え>文字色白にして 見えないようにすることにしました!

お礼日時:2011/04/11 16:41

毎日昇順で並べ替えているのでしたら。

クイックアクセスツールバーに「昇順で並べ替え」コマンドを入れておくといいのでは?

クイックアクセスツールバーのカスタマイズ方法について・・・
リボンのさらに上にある小さなアイコンの場所で右クリック
「クイックアクセスツールバー」と書いてある部分をクリックするとユーザー設定画面が開きます
左右に選択するところがありますので、その右側の部分から「昇順で並べ替え」と書いてあると場所が下ほどにありますので見つけたらそれを選択して「追加」をくりっくすると、右の画面上にアイコンが追加されます
追加後は「OK」でユーザー設定画面を閉じてクイックアクセスツールバーの中に「昇順で並べ替え」アイコンがあるか確認

次に・・・(添付画像より説明)
A2セルをクリック後「Shift」キーを押したまま数値の入力されている最後のセルでクリック
添付画像ではA2をクリックして「Shift」キーを押したままA10をクリックします(1行目の空白セルは範囲に入れないこと)
クイックアクセスツールバーに先程追加した「昇順で並べ替え」アイコン(コマンド)をクリックしてあげると昇順で並べ替えられます

そういうことじゃなくて~ってことでしょうかねぇ・・・? 
「【エクセル】Excel2007 並べ替え」の回答画像3
    • good
    • 0
この回答へのお礼

画像までつけていただいてありがとうございます。

残念ながらそういうことじゃ…ないんです。

この画像を例にお話すると、
並べ替えをしたあとに 

「A2~A4は空白、
 続いて数字が昇順に並ぶ」

というのが、私の目指す形なんです。

回答者様のやり方だと、
空白セルが数字より下になってしまいます。
(降順に並べ替えても同じこと…)

お礼日時:2011/04/11 15:45

毎朝入力しているとのことでしたら日付の列が用意されていることでしょう。

例えばA2セルから下方には日付が例えばA2セルに4/11,A3セルが空白セル、A4セルには4/12,A5セルは空白のセル、A6セルも空白セル、A7セルには4/10,A8セルは空白セル、A9セルには4/13とデータが入力されているとします。
そこで並べ替えのための作業列としてC1セルには並べ替え列とでも入力してからC2セルには次の式を入力して下方にオートフィルドラッグします。

=IF(ISNUMBER(A2),RANK(A2,A:A,1),IF(AND(A2="",COUNT(A2:A$1000)>0),C1,""))

これでC列にはA列で空白のセルでも番号が表示されます。

その後にA列からC列までを選択し、「ホーム」タブの「並べ替えとフィルター」をクリックし、「ユーザー設定の並べ替え」を選択します。表示の画面で「先頭行をデータの見出しとして使用する」にチェックをしてから最優先されるキーに「並べ替え列」を、順序は昇順でOKすればよいでしょう。

例では日付を並べ替えの対象にしていますが、これに限ったことではありません。ご自分が今並べ替えを行いたい列を対象に上記と同様の式をたてて並べ替えをすればよいでしょう。

この回答への補足

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

やってみましたが、日付のみが並べ替えの対象となってしまい
やはり、空白は無視されてしまいます。

空白の中では、C列のナンバー順になるのですが、
ならべかえた時に 空白が一番上にくるようにしたいのです…。

私が指示どおりに作れてないのかな…

補足日時:2011/04/11 13:35
    • good
    • 0

並び替え対象の表範囲を「全て選択」した状態で並び替え後、空白行を切り取り→先頭に挿入で如何でしょうか。

この回答への補足

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

確かにそうすれば空白セルが上にきますね。
実は、空白セルを含む行が毎日追加されていくのですよ。

毎朝1回の並べ替えで作業を完了させたいのと、
空白セルを含むセルが多すぎて正しく切り取りするのが
大変なのです…

補足日時:2011/04/11 10:45
    • good
    • 0

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

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

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

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

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

Qエクセルの並び変えで、空白セルを一番上にもってくる方法を教えてください。

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

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

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

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

Aベストアンサー

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

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

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

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

宜しくお願い致します。

Aベストアンサー

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

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

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エクセル2003で並べ替えする場合で、空白行を先頭ではなく末尾に表示し

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

Aベストアンサー

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




>並べ替えると

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

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

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


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

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




>並べ替えると

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

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エクセルで、条件に一致した行を別のセルに抜き出す方法

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

たとえば、

<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行までとしていますが、必要に応じて変更して下さい

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「並び替えとフィルター」を使って空白以外を抽出

シート1に別のシートから抽出した人名が並んでいます。
シート2にも別のシートから抽出した数字が並んでいます。
人名と数字は同じ行/列に格納されます。
シート1もシート2も空白が含まれています。
シート3に人名と数値を隣り合わせで格納したいのです。

シート1とシート2共に、「並び替えとフィルター」を使って空白以外を
抽出したいのですが、「昇順/降順」を使うと、人名と数字の関連が崩れる
ので困っています。
「並び替えとフィルター」で不可能ならば、別な方法でも構いません。
ご教示いただけますようお願い致します。

シート1                 シート2
  A   B   C   D         A   B   C   D
1 太郎     次郎         1 100       10
2 三郎 花子     春子     2   5  200       50
3         秋子 夏子     3         500  100
4 四郎 五郎 六郎         4  80  300  400
5 七郎         冬子     5 300            60

シート3
  A   B   C   D   E   F   G   H
1 太郎 100  花子 200  次郎 10  春子 50
2 三郎   5  五郎 300  秋子 500  夏子100     
3 四郎  80          六郎 400  冬子 400   
4 七郎 300     
5                 

シート1に別のシートから抽出した人名が並んでいます。
シート2にも別のシートから抽出した数字が並んでいます。
人名と数字は同じ行/列に格納されます。
シート1もシート2も空白が含まれています。
シート3に人名と数値を隣り合わせで格納したいのです。

シート1とシート2共に、「並び替えとフィルター」を使って空白以外を
抽出したいのですが、「昇順/降順」を使うと、人名と数字の関連が崩れる
ので困っています。
「並び替えとフィルター」で不可能ならば、別な方法でも構いません。
ご教示いただ...続きを読む

Aベストアンサー

No8の回答の補足です。

質問の流れを見ると、元データがすべて数式で表示されているのでしょうか。
この場合は、NO8の回答では数式セルがすべて選択されてしまう可能性が高いので、空白に見えるセルだけ選択するには、以下のような手順でデータ処理する必要があります。

すなわち、元データを選択して右クリック「コピー」、シート3で右クリック「形式を選択して貼り付け」で「値」で貼り付けて数式をすべて値に変更しておきます。
このようにすると空白に見えるセルには空白文字列が入力されていますので(実際の空白セルではないので)、以下のような手順で空白文字列セルをすべて選択して、No8の回答の手順で空白文字列セルを一括削除することができます。

すなわち、1つの空白文字列セルを選択して、右クリックコピー、Ctrl+Fで検索ダイアログを出して、そのまま検索する文字列の欄にCtrl+Vで空白文字列を貼り付けてから「すべて検索」してCtrl+Aで該当セルをすべて選択して右クリックから「削除」してください。

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...続きを読む

Qエクセル・・色の着いたセルの個数を数える関数はある?

エクセルの表内で塗りつぶしされているセルだけを数える様な関数はありますか?
セルには文字や数値は入力されておらず、塗りつぶしているだけです。
よろしくお願いいたします。

Aベストアンサー

こんにちは。

ユーザー定義関数で作ってみました。Ver4 マクロ関数で十分だと私は思いますが、Ver 4 マクロ関数ではケシカランというような方?は、以下のようなVBAでの解決方法が便利かなって思います。

VB Editor の標準モジュールに貼り付けてください。(挿入-標準モジュール)

なお、一般のブックの標準モジュールのユーザー定義関数に、Public キーワードをつけたところで、グローバル関数になるわけではありませんので、もしその点に不安のある方は、マニュアル等で、確認されたほうがよいかもしれませんね。

なお、以下は、引数のインデックスに0を入れると、配列出力するようにしてあります。

'------------------------------------
Function ColorCellCount(範囲 As Range, Optional インデックス As Integer = 1, Optional パターン As Integer = 0)
  Dim myRng As Range
  Dim myIndex As Integer
  Dim myPattern As Integer
  Dim myColor() As Integer
  Dim Ret() As Double
  Dim c As Range
  Dim i As Long
  Dim j As Long
  Set myRng = 範囲
  myIndex = インデックス
  myPattern = パターン
For Each c In myRng
   On Error Resume Next
   If myPattern = 0 Then
     i = WorksheetFunction.Match(c.Interior.ColorIndex, myColor, 0)
   Else
     i = WorksheetFunction.Match(c.Font.ColorIndex, myColor, 0)
   End If
   If i = 0 Then
     ReDim Preserve myColor(j)
     ReDim Preserve Ret(j)
      If myPattern = 0 Then
       myColor(j) = c.Interior.ColorIndex
      Else
       myColor(j) = c.Font.ColorIndex
      End If
      Ret(j) = 1
     j = j + 1
     On Error GoTo 0
     Else
      Ret(i - 1) = Ret(i - 1) + 1
   End If
  Next
  If myIndex <= 0 Then
   ColorCellCount = Ret()
  ElseIf myIndex > UBound(Ret) + 1 Then
   ColorCellCount = Ret(UBound(Ret()))
   Else
   ColorCellCount = Ret(myIndex - 1)
  End If
  Set myRng = Nothing
End Function

ワークシート上での使い方は、

A列
色付き
色なし
色なし
色付き
色付き

=ColorCellCount(A1:A5, 1 )

とすれば、上から数えて、1番目の色のセルの数が出ます。

=ColorCellCount(A1:A5, 2 )
を入れれば、色なしのセルの数が出ます。

=SUMPRODUCT(ColorCellCount(A1:A5, 0 ))

とすれば、全部の合計が出ます。

なお、
=ColorCellCount(A1:A5,1,1)

とすれば、文字の色を数えます。

こんにちは。

ユーザー定義関数で作ってみました。Ver4 マクロ関数で十分だと私は思いますが、Ver 4 マクロ関数ではケシカランというような方?は、以下のようなVBAでの解決方法が便利かなって思います。

VB Editor の標準モジュールに貼り付けてください。(挿入-標準モジュール)

なお、一般のブックの標準モジュールのユーザー定義関数に、Public キーワードをつけたところで、グローバル関数になるわけではありませんので、もしその点に不安のある方は、マニュアル等で、確認されたほうがよいかもし...続きを読む


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

人気Q&Aランキング

おすすめ情報