A
1 月/日
2 4/10
3 4/23
4 4/15
5 4/10
6 4/8
というデータがあるとします。
そのデータ下の方に自動的に日付の若い順に重複データは1行のみの表示をさせる(下のような感じ)良い方法はありませんか?できればVBAでない方が嬉しいのですが…
11 4/8
12 4/10
13 4/15
14 4/23

A 回答 (8件)

個人的には yesletsさんがおっしゃる通り フィルタオプションの


設定が良いと思います。関数でやるなら

■A11セル
=IF(COUNT(A2:A10),MIN(A2:A10),"")
■A12セル
=IF(A11="","",IF(MAX(A$2:A$10)=A11,"",
LARGE(A$2:A$10,RANK(A11,A$2:A$10)-1)))
下方向にコピー

でできます。
    • good
    • 0
この回答へのお礼

ありがとうございます。
関数でやりたかったのす。
この方法が私の求めていたものです。
いや~こんなこともできるんだというのが正直な実感です。

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

お礼日時:2006/04/30 01:38

エクセルで、セルに正式な日付け入力をすると、そのセルには、日付シリアル値(1900年1月1日以来の実日数)という正整数がセットされます。

それで正整数の例で説明しても質問の場合にも当てはまります。
例データ
A1:A10
12
11
13
12
10
6
11
10
2
2
例えばC1に
=SMALL(IF(COUNTIF(OFFSET($A$1,0,0,ROW($A$1:$A$10)),$A$1:$A$10)=1,$A$1:$A$10,99999),ROW())
と入れて、
SHIFT、CTRL,ENTERの3つのキーを同時に押します(配列数式)
そして、C1で、+ハンドルを出して下方向に引っ張ります。
結果
2
6
10
11
12
13
99999
この 99999 は、SMALL関数を使う関係で、最近の日付のシリアル値は3万8千台なので、将来にも、まず超えない数値ということで入れています。
その直前で式の複写を止めるか、=IF(上記式=99999,"",上記式)
にするなどして、見えなくすることができます。
    • good
    • 0

A11:=MIN(A2:A6)


A12:=SMALL($A$2:$A$6,COUNTIF($A$2:$A$6,"<="&A11)+1)

エラー処理はしていません
    • good
    • 0

「自動的に」が入力をした時点で自動的に(つまり関数を使って)という意味なのか、単に「したい時」なのかわかりませんが、「したい時」ならば、



(1)A1にある文字列(月/日)と同じ文字列をA10に入力
(2)A1からA6を選択
(3)フィルタオプションの設定で
   抽出先に「指定した範囲」を選択
   リスト範囲A1:A6を確認(入力されているはず)
   抽出範囲にA10:A15を入力
   「重複するデータは無視する」にチェック
   実行ボタンをクリック

で出来ると思います。

この回答への補足

ありがとうございます。
自動は上部に入力した途端に表示されるイメージです。

補足日時:2006/04/30 01:26
    • good
    • 0

No.3追記です。


作業列使わない場合、
[A11]=SMALL(IF(COUNTIF(OFFSET($A$2,,,ROW($A$1:$A$5)),$A$2:$A$6)=1,$A$2:$A$6,""),ROW(A1))
と入力orコピーして、セル編集状態で、通常[Enter]キーのみ押すところを、
[Ctrl]+[Shift]+[Enter]キー同時押し。
配列数式です。
これを[A12:A15]へコピー。
(くどくなるので、エラー処理していません^ ^;)
    • good
    • 0

こんにちは。


例えば未使用列を作業用に使えるなら、一旦重複を排除します。(仮にB列)
[B2]=IF(COUNTIF($A$2:A2,A2)=1,A2,"")
B6までコピー。

[A11]=IF(COUNT($B$2:$B$6)<ROW(A1),"",SMALL($B$2:$B$6,ROW(A1)))
A15までコピー。
    • good
    • 0

1.セル A11 に次式を入力して、此れを下方にズズー


  ッと複写
=IF(ISERROR(SMALL(A$2:A$9,ROW(1:1))),"",SMALL(A$2:A$9,ROW(1:1)))
2.セル A11 以降全ての式を選択して[コピー]→[値
  の貼り付け]
3.“重複するレコードは無視する”機能を適用して
  [フィルタオプションの設定]を実行
    • good
    • 0

vlookupって関数を使うといいですよ。

    • good
    • 0
この回答へのお礼

/(??)

お礼日時:2006/04/28 23:56

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

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

QCSVファイルの「20090423」を日付型の「2009/4/23」へ変換したい

CSVファイルには書式設定が標準で「20090423」と入力されていますが
これを日付型の「2009/4/23」へ変換したいのですがどうすればいいでしょうか?
現在は

With Columns(1)
.Replace what:="200809", Replacement:="2008/09/", LookAt:=xlPart
.Replace what:="200810", Replacement:="2008/10/", LookAt:=xlPart
.Replace what:="200811", Replacement:="2008/11/", LookAt:=xlPart
.Replace what:="200812", Replacement:="2008/12/", LookAt:=xlPart
.Replace what:="200901", Replacement:="2009/01/", LookAt:=xlPart
.Replace what:="200902", Replacement:="2009/02/", LookAt:=xlPart
End With

とやっていますが量が多くて追いつけません。
ご教授よろしくお願いします。

CSVファイルには書式設定が標準で「20090423」と入力されていますが
これを日付型の「2009/4/23」へ変換したいのですがどうすればいいでしょうか?
現在は

With Columns(1)
.Replace what:="200809", Replacement:="2008/09/", LookAt:=xlPart
.Replace what:="200810", Replacement:="2008/10/", LookAt:=xlPart
.Replace what:="200811", Replacement:="2008/11/", LookAt:=xlPart
.Replace what:="200812", Replacement:="2008/12/", LookAt:=xlPart
.Replace what:="200901", Replacement:="2009/0...続きを読む

Aベストアンサー

こんばんは。

区切り位置の回答が出ていますので、こちらもマクロの処理を出します。A列を対象とした場合です。

Sub Test1()
For Each c In Range("A1", Range("A65536").End(xlUp))
 If IsNumeric(c.Value) And Len(c.Value) > 5 Then
    c.Value = Format(c.Value, "00""/""00""/""00")
 End If
Next c
End Sub

Sub Test2()
  Range("A1", Range("A65536").End(xlUp)).TextToColumns _
    DataType:=xlDelimited, _
    FieldInfo:=Array(1, 5)
End Sub

書式は任意で処理してください。マクロで入れる場合は、その都度変更するのではなく、一括で書式を入れてください。メモリの負担が少ないです。

Test1 は、処理のコードを
 Application.ScreenUpdating = False
 
 Application.ScreenUpdating = True
で、はさんだほうが良いかもしれません。

こんばんは。

区切り位置の回答が出ていますので、こちらもマクロの処理を出します。A列を対象とした場合です。

Sub Test1()
For Each c In Range("A1", Range("A65536").End(xlUp))
 If IsNumeric(c.Value) And Len(c.Value) > 5 Then
    c.Value = Format(c.Value, "00""/""00""/""00")
 End If
Next c
End Sub

Sub Test2()
  Range("A1", Range("A65536").End(xlUp)).TextToColumns _
    DataType:=xlDelimited, _
    FieldInfo:=Array(1, 5)
End Sub

書式は任意で処...続きを読む

Q15/7/22 と入力すると 2015/7/22 なる (エクセル)

エクセルで日付の入力を和暦二桁で行いたいのですが、西暦に置き換わってしまいます。

直す方法はないのでしょうか?

Windows XP
Excel2000

を使っています。

Aベストアンサー

こんにちは。maruru01です。

そういう仕様ですので、無理です。
「H15/7/22」
と和暦を表す文字(昭和はS、大正はT、明治はM)を付けると出来ます。

QExcel2003にて データ重複時に『重複』とエラー表示させたい

いつもこちらでは皆様にご回答いただきお世話になっております。
またひとつご指導いただければとおもっております。

図のようにB列とF列には『名前』を入力するようになっています。
B列とF列で重複する名前があった場合C列、G列に『重複』と
表示させたいと思っております。

このような該当データが2列にまたがる場合のC列、G列に入れる数式をお教えください。

よろしくお願いいたします。

Aベストアンサー

No.2です!
たびたびごめんなさい。

すでにNo.3さんで回答が出ていますので、
少し遊んでみました。

↓の画像で説明させていただくと
両方の列で重複している場合は「両列重複」
自列のみで重複している場合は「(B)または(F)列重複」
と表示する方法です。

作業用の列を使わせてもらっています。
作業列I2セルに
=COUNTIF(F:F,B2)*100+COUNTIF(B:B,B2)
J2セルに
=COUNTIF(B:B,F2)*100+COUNTIF(F:F,F2)
としてI2・J2セルを範囲指定し、J2セルのフィルハンドルで下へコピーします。
この表を参照して

C2セルに
=IF(AND(INT(I2/100)>0,MOD(I2,100)>1),"両列重複",IF(AND(INT(I2/100)=0,MOD(I2,100)>1),"B列重複",IF(AND(INT(I2/100)>0,MOD(I2,100)=1),"F列重複","")))
とし、オートフィルで下へコピー

G2セルに
=IF(AND(INT(J2/100)>0,MOD(J2,100)>1),"両列重複",IF(AND(INT(J2/100)=0,MOD(J2,100)>1),"F列重複",IF(AND(INT(J2/100)>0,MOD(J2,100)=1),"B列重複","")))
とし、同様にオートフィルで下へコピー

これで画像のような感じになります。
以上、余計なお世話でしょうが、
お遊び程度でやってみました。
どうも長々と失礼しました。m(__)m

No.2です!
たびたびごめんなさい。

すでにNo.3さんで回答が出ていますので、
少し遊んでみました。

↓の画像で説明させていただくと
両方の列で重複している場合は「両列重複」
自列のみで重複している場合は「(B)または(F)列重複」
と表示する方法です。

作業用の列を使わせてもらっています。
作業列I2セルに
=COUNTIF(F:F,B2)*100+COUNTIF(B:B,B2)
J2セルに
=COUNTIF(B:B,F2)*100+COUNTIF(F:F,F2)
としてI2・J2セルを範囲指定し、J2セルのフィルハンドルで下へコピーします。
この表を...続きを読む

Q例えば、8月1日~8月31日の“~”中にある日(8月15日など)を抽出したいです!

エクセル2003を使っています。

一つのセルに、『8月1日~8月31日』などと入力しています。
オートフィルターを設定しておいて、オプションの中で、例えば“8月15日/を含む”にした場合に、
先程の『8月1日~8月31日』の行が表示されるようにしたいです。
オートフィルターでできますか?オートフィルターでできないなら、どのようにすればできるでしょうか?

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

Aベストアンサー

#3です。

>切り出した後に、B2からC2間に含まれる日付を検索できるやり方はありますか?
>もちろんオートフィルターは使えないと思いますが・・・。

前の回答に書いていますが(#2さんも書いていらっしゃいますが)、開始日と終了日の隣のセルに求める日付が含まれているかどうかを判別する式を立てて、その列でオートフィルタをかける方法ではいけませんか。

#3で書いたことをもう少し詳しく書くと、
1)ワークシート上(例えばD1)に基準となる日付の入力欄を作る。
2)D2に=IF(AND(B2<=D$1,C2>=D$1),"○","")と入力して、以下適当な範囲まで(例えばD30まで)コピー。

以上で、D1に入力した日付に応じて、それが開始日と終了日の間に含まれる場合に○印が入るようになります。あとは、

3)D1:D30を範囲選択して、データ→フィルタ→オートフィルタ。

とすると、もしD2:D30の範囲に○印があれば、ドロップダウンリストの中に「○」と出てきますので、それを選択すると○印がある列だけが抽出されると思います。

もしおっしゃっていることを取り違えているようでしたら申し訳ありません。

#3です。

>切り出した後に、B2からC2間に含まれる日付を検索できるやり方はありますか?
>もちろんオートフィルターは使えないと思いますが・・・。

前の回答に書いていますが(#2さんも書いていらっしゃいますが)、開始日と終了日の隣のセルに求める日付が含まれているかどうかを判別する式を立てて、その列でオートフィルタをかける方法ではいけませんか。

#3で書いたことをもう少し詳しく書くと、
1)ワークシート上(例えばD1)に基準となる日付の入力欄を作る。
2)D2に=IF(AND(B2<=D$1...続きを読む

QExcelで1-7-8と入力すると、2001/7/8 となってしまう

Excel新規作成で半角1-7-8と入力したいのに、2001/7/8 となってしまうのですが、どうしたらよろしいでしょうか。
アドバイスよろしくお願いします。

 

Aベストアンサー

No.1の回答者です(^_^)

>膨大な入力なのでいちいちいれずにすむ方法はありますか。

既にNo3の方が回答して下さっていますが

1.入力(設定)したい範囲を範囲選択
2.範囲選択したエリア内で右クリック
3.セルの書式設定の「表示形式」タブ内の
4.分類を「文字列」にしてOK

先に入力をしてから後から設定をするのではなく
この設定をした後で入力をして下さいね。


人気Q&Aランキング

おすすめ情報