初心者です、質問の内容がわかりにくかったらすみません。(同じ質問があったらごめんなさい)
エクセルのオートフィルタ機能のオプションにある“XXXで始まる”という機能を関数で使うことが出来ないでしょうか?やりたい事、打ち込んだデータの中からXXXで始まる複数の行を抜き出したいのです。マクロ等の使い方がわからないので出来れば関数で処理がしたいです、これって出来ますか?
データの中から一行だけ抜き出すのはLOOKUP等を使えば出来ると思うのですが。よろしくお願いします。

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

A 回答 (6件)

F3のセルに



=IF(LEFT(C2,3)=TEXT($F$1,"000"),C2,"nasi")

と入力すると、C2の左から3文字文のデータを拾い、これが、F1セルの内容と一致したら、C2の値を、そうでなければ、nasiと、F3に表示されると思います。(3桁の数字の時←違うようなら、"000"内の0の数を変えてください)

 なお、この式をコピーし、F4以降のセルに貼り付けると、C3,C4,C5…を調べ、F1と合致すると表示、不一致なら、nasiとなると思いますので、試してみてください。

 なお、たぶん、こちらに誤解するところが まだまだ あると思いますので、不都合がありましたら、申し訳ありませんが、再度、今回のような不具合の情報を書き込んでくださいませ。

 ではでは。

この回答への補足

ありがとうございます、初心者の何もわからない僕に丁寧に教えて頂いて。
すみませんが、もう少し教えて下さい。
上記方法でほぼやりたい事と同じなんですけど出来るのであれば教えて下さい。
上記方法だと3文字(0の数を変えない限り)しか検索できないと思うのですが
検索文字数を何文字でもOKにしたいのですが。やりたい事が、電話帳の検索みたいに頭の何文字かを入力し一致する電話番号を抜き出すみたいなことをやりたいので状況によって検索する文字数が変わってしまうので。あと、nasiの行を非表示にするなんて事も出来ますか?なにからなにまですみません。よろしくお願いします。

補足日時:2001/07/02 09:47
    • good
    • 0

 失礼しました。

下の回答は、「オートフィルター」を使った時点で、目的を達成しているかもしれませんですね。(会社のものは、目的のものを抜き出したあと、上下セルの間で計算する必要があるので、マクロを使用しています)

 なので、無難なのは、「オートフィルター」を使うことだろうと思います。
    • good
    • 0
この回答へのお礼

ありがとうございました。やっぱり最後はオートフィルターを使うことになっちゃうんですよね、とりあえず簡易プログラムも試して見ます。何度も何度も見ず知らずの僕に色々とご教授くださってありがとうございました、色々と勉強になりました。また何かあったらお願いします。今回の質問はこれで終わりにします、本当に何回も何回もありがとうございました。

お礼日時:2001/07/03 22:38

 行を間引くという関数は、残念ながらないですね。

これ以降は、マクロの領域になります。

会社で似たような処理をしているのですが、「マクロの記録」という簡易プログラミング機能を使っています。
あらかじめ、別シートに、コピーされるべき表を作っておきます。

1.オートフィルターで、不要な行を間引く。
2.ツール→マクロ→新しいマクロの記録 を指定し、「OK」をクリックする。
3.コピーされるべき、シートを選んだあと、その領域を、多めの列数ドラッグして、「Delete」キーを押す。
4.「取り出したい範囲+1行」をドラッグして、「コピー」を指定する。
5.別シートを選び、セル1つをクリックし、「形式を選択して貼り付け」「値のみ」を指定する。
6.ツール→マクロ→記録終了 をクリックする。

で、一応、汎用できるマクロが完成すると思います。

2.で、ショートカットキーを作成することもできますし、「表示」→「ツールバー」で、「コマンド」タグを指定し、マクロ → ユーザー設定ボタン で、ボタンを作ることもできます。

本当は、もっと簡素なプログラムにできるんだと思いますが、まだまだ、僕自身勉強不足で、よいアドバイスができません。 このあたりは、申し訳ないです。
    • good
    • 0

=IF(LEFT(C2,3)=TEXT($F$1,"000"),C2,"nasi") の代わりに




=IF(LEFT(C2,LEN($F$1))=TEXT($F$1,"####"),C2,"")としてみてください。

(変更点)
3→LEN($f$1) … F1の文字数を数えます。
"000" → "####" …この場合、4桁以内という指定になると思います。
"nasi" → "" … ダブルコーテーション2つ(ヌルストリングダラといいます)にすると、なんにもない=空欄 という指定になります。

(そのあとで、f4以降の列にコピーしてくださいませ)

ご要望に合うか、今一度おためしくださいませ。

この回答への補足

何度も何度もすみません、文字数の制限は上記回答で直りました、ありがとうございました。もう一つの質問は僕の説明不足でした、すみません。
“nashiの行を非表示にしたい”は下記のようにしたいのです、よろしかったらもう一度ご教授ください、お願いします。
 
   A  |  B   |左記の表の時にAAと検索をし画面に
1 AAA | 123  |表示されるのを1と3の行にしたいです
------------------|2の行は全て非表示にしたいのです。
2 ABC | 124  |つまり、検索と一致するもの以外は
------------------|画面に表示をしたくないのです。
3 AAC | 125  |
------------------|

   A  |  B   |検索後の結果を左記のようにしたい
1 AAA | 123  |  
------------------| 
3 AAC | 125  |
------------------|

説明不足ですみませんでした、宜しくお願い致します。

補足日時:2001/07/03 09:31
    • good
    • 0

if文とleft文の組み合わせでできるのではないでしょうか。



=if(left$(セル番号,文字数)="検索文字",セル番号,"")

とすると、「セル番号」の中に、左から「文字数」までが「検索文字」になるものを表示。それ以外は、非表示になるんじゃないかと思います。

ちなみに、前後に非検索文字があるならmid$、終わりの部分を検索するなら、right$というものもあるかと思います。

この回答への補足

すみません、教えて貰ったやり方でやったのですがうまくいきません。
LEFT関数の指定範囲がうまく行きません、入力した行の場所しか範囲にならないし、うまく答えが出ませんどうしたらよいですか?
入力した式は“=IF(LEFT(C2:C500,3)=F2,F3:F500,"nasi")”です。この式だと
C2:C500の範囲を左3文字検索してF2と一致したらF3:F500に表示されると思っていたのですが。間違えてますか?

参考(やりたい事)
   A b
1| 1234 | xxx
-------------
2| 1235 | zzz
-------------
3| 1345 | www
-------------
の時にAの列を検索して頭が123の1と2行を抜き出したいですが。

よろしくおねがいます。

補足日時:2001/06/29 09:56
    • good
    • 0
この回答へのお礼

ありがとうございます!今は自宅に戻ってきてしまったので、打ち込んだデータがなく試せませんので、明日でもすぐに試してみます。思ったとおりの結果になればうれしいのですが出来なかった時は、またお願いします。多分僕の望んでいるような結果が得られると思います。ありがとうございました。

お礼日時:2001/06/28 23:30

たとえばこんなのはどうでしょう。


データの範囲を指定してデータの並べ替えで
その「×××」が入ってる列を「最優先されるキー」に選択して
まずデータを並べ替えてしまいます。
そうするとその頭が同じ「×××」というデータが集まってきますので
そこでギュッと削除するなり なんなり・・・・・・

どうでしょうか?
    • good
    • 0
この回答へのお礼

回答ありがとうございました。試してみますが、僕が思っているのとちょっと違うような気がします。とりあえずやってみます、ありがとうございました。

お礼日時:2001/06/28 23:24

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

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

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

Qオートフィルタ機能(オートフィルタ⇒オプション⇒もどる)

Excel2002を使っています。
オートフィルタ機能(オートフィルタ⇒オプション)を利用してデータ検索をしています。
最近になって検索は即出来ますが、「もどる」をクリックすると時間が非常にかかってしまいます。
シートのデータ数が多い過ぎるためでしょうか?(7000行位あります)
又、他によい検索方法があれば教えてください。
抽出条件は2008/01/05以上 2008/05/30以下 等でも行っています。
よろしくお願いいたします。

Aベストアンサー

別シートからデータ→フィルタ→フィルタオプションの設定で抽出しては如何でしょうか。元表から別シートに抽出できるので「戻る」が不要です。
以下にご質問の抽出条件での手順例です。
(1)仮に元シートをsheet1、別シートのsheet2にA1(未入力)、A2に=AND(Sheet1!A2>="2008/01/05"*1,Sheet1!A2<="2008/05/30"*1)を設定
(2)sheet2のC1を選択→データ→フィルタ→フィルタオプションの設定→指定した範囲にチェック、リスト範囲欄に元シート範囲、検索条件範囲欄にA1:A2、抽出範囲欄にA3→OK

QEXCELのLOOKUP関数に似た関数

EXCELのLOOKUP関数でベクトル形式の場合、

「検査値が見つからない場合、検査範囲内で検査値以下の最大値が、一致する値として使用されます」

のですが、これと似たケースで

「検査値が見つからない場合、検査範囲内で検査値以上の最小値が、一致する値として使用されます」

のように値を返して欲しいのです。

方法をご存知の方、お力をお貸し願います。

Aベストアンサー

INDEX関数とMATCH関数の組み合わせでは?
=INDEX(範囲,行,列)
上記の行か列、又は両方にMATCH関数(照合の型 -1[降順])を使用する。
=INDEX(範囲,MATCH(検査値,範囲の左端の列,-1),列)

QエクセルのLOOKUP関数について

エクセルのLOOKUP関数の検査値には、英文字は指定できませんか?
漢字名の処ではちゃんとデータを持ってくるのですが英文字の処になるとエラーになります。
誰か助けてください。

Aベストアンサー

私が試してみた範囲ではうまく持ってきますが...
原因としては
○半角文字でデータが入っていて、検索値が全角文字になっている。
○データの検索される文字がランダムに並んでいる。
  この場合、たとえば HLOOKUP(B3,E2:J3,2,FALSE) のように
関数の引数に「,false」の部分を加えるとうまくゆくと思います。

QExcel:オートフィルタ機能について質問です

Excel2000のオートフィルタ機能を利用して、1シート3~4万件あるデータの集計などをしています。
その中で以下の点についてお教えください。

1.フィルタリングしてセルが飛び飛びに表示された状態で、ある列に1から順に連番を振りたいのです。
たとえばフィルタリングして
A1
A3
A7
A8
A13

のように絞り込まれたセルに、上から順に01,02,03,04,05...というように番号を振りたいのですが、オートフィル機能では間のセルまで入ってしまうし、=A1+1 のような関数でもやはり間のセルが邪魔です。
フィルタをかけた状態で連番を振ることはできますでしょうか。(書式は数値でも文字列でも構いません)

2.フィルタリングした状態で、連続した複数のセルをコピー&「形式を選択して貼り付け」をしたら、間に隠れているセルに値が入ってしまいます。
フィルタをかけて表示されているセルにのみ貼り付ける方法はありますでしょうか。

以上、よろしくお願いいたします。

Aベストアンサー

こんばんは。
1. は式でも可能ですが、4万行にもなると重過ぎます。
2. は、VBA以外には不可能だと思います。

1.
最終列の検査行は、B列になっています。
Range("B65536")の部分を適宜替えてください。

'<シートモジュールか標準モジュールでお使いください。>
Sub SkipNumbering()
Dim i As Long, k As Long
Dim lastrow As Long
Const c As Long = 1 '列数を入れてください。 例:1 = A列

lastrow = Range("B65536").End(xlUp).Row 'B列の最終行を調べます
k = 1
Application.ScreenUpdating = False
For i = 1 To lastrow
If Cells(i, c).EntireRow.Hidden = False Then
  Cells(i, c).Value = k
  k = k + 1
End If
Next
 Cells(1, c).Resize(lastrow).NumberFormatLocal = "00"
 Application.ScreenUpdating = True
End Sub


2.
Visual Basic Editor の画面を開けたら、
ツール-参照設定で、Microsoft Forms x.x Object Library (x.x は数字が入ります)にチェックを入れてください。

挿入-標準モジュールをクリックしてから、以下のものを貼り付けてください。

一応、ショートカット設定をしましたので、このショートカットを実行すれば、Alt + C で、貼り付けできます。なお、貼り付けられるデータは、Text(文字、数字の定数) データに限ります。他の表示形式などは貼り付けられません。


'<標準モジュール>

Sub SkipCopy()
 '要 参照設定 Microsoft Forms x.x Object Library
 Dim myData As Variant
 Dim i As Long, j As Long, buf As String
 Dim CB As DataObject
 Set CB = New DataObject
 On Error Resume Next
 With CB
 .GetFromClipboard
 buf = .GetText
 End With
 On Error GoTo 0
 If Len(buf) = 0 Then MsgBox "クリップボードが空です。", 16: Exit Sub
 myData = Split(buf, vbCrLf)
 Do
 With ActiveCell
  If .Offset(i).EntireRow.Hidden = False Then
  .Offset(i).Value = myData(j)
  j = j + 1
  End If
  i = i + 1
 End With
 Loop Until j > UBound(myData)
End Sub
'
Sub SetMyShortCut()
 'ショートカット設定
 'Alt + C
 Application.OnKey "%c", "SkipCopy"
 Application.OnKey "%C", "SkipCopy"
End Sub
'
Sub SetOffMyShortCut()
 'ショートカット解除
 Application.OnKey "%c"
 Application.OnKey "%C"
End Sub

こんばんは。
1. は式でも可能ですが、4万行にもなると重過ぎます。
2. は、VBA以外には不可能だと思います。

1.
最終列の検査行は、B列になっています。
Range("B65536")の部分を適宜替えてください。

'<シートモジュールか標準モジュールでお使いください。>
Sub SkipNumbering()
Dim i As Long, k As Long
Dim lastrow As Long
Const c As Long = 1 '列数を入れてください。 例:1 = A列

lastrow = Range("B65536").End(xlUp).Row 'B列の最終行を調べます
k = 1
Application.ScreenUpdati...続きを読む

Qエクセルのオートフィルタ機能について

スミマセン。初心者ですのでかなり低レベルな質問かと思いますがよろしくお願いします。

エクセルで作られた表があります。
D列に年齢、E列に性別が入力されていて、
オートフィルタ機能を使って、30代、女性を抽出しなくてはなりません。
そこでD列とE列すべてを選択し、データ→フィルタ→オートフィルタを選択しました。
それぞれの列の先頭に矢印が出てきました。
そこでD列の矢印をクリックし、オプションを選択。
出てきたオートフィルタオブションに
30歳 以上 AND 39歳 以下
と選択してみたのですが、何も抽出されません。
30歳 より大きい AND 39歳 より小さい
でもダメでした。
性別の方は「女性」を選択したら出てきたので問題はないのですが。

私は何を間違えているのでしょうか?
是非教えてください。
ちなみに一度だけいじっていた時にちゃんと抽出されました(^-^;
ただ、次にやったらまた抽出されなくなり、
正しく抽出された時と、そうでない時との違いが自分ではわかりません(><”)
よろしくお願いします。

スミマセン。初心者ですのでかなり低レベルな質問かと思いますがよろしくお願いします。

エクセルで作られた表があります。
D列に年齢、E列に性別が入力されていて、
オートフィルタ機能を使って、30代、女性を抽出しなくてはなりません。
そこでD列とE列すべてを選択し、データ→フィルタ→オートフィルタを選択しました。
それぞれの列の先頭に矢印が出てきました。
そこでD列の矢印をクリックし、オプションを選択。
出てきたオートフィルタオブションに
30歳 以上 AND 39歳 以下
...続きを読む

Aベストアンサー

こんばんは!
間違っていたらごめんなさい。

年齢の列は「歳」まで入力しているわけですよね?
もしそうであれば文字列になりますので
○以上、○以下 のような条件での抽出はできないと思います。
(数値であれば問題ありません)

苦肉の策ですが
フィルタオプションでワイルドカードを使う方法があります。
 3? を 含む で抽出してみてください、
これで30~39歳の抽出ができると思います。

以上、当方使用のExcel2003での回答でしたが、
参考になれば幸いです。m(__)m


このカテゴリの人気Q&Aランキング

おすすめ情報