dポイントプレゼントキャンペーン実施中!

A1のセルに(高)or(→)と言う文字が含まれてたら、C1に交通費と表示される。
A1のセルに(現金)と言う文字が含まれてたら、C1に外注と表示される。

わかりにくくて申し訳ないですが、宜しくお願いします。

A 回答 (8件)

No.7です。


大変失礼しました。
>実務を考えると範囲を限定し、
>「=IFERROR(VLOOKUP(SUMPRODUCT((COUNTIF(A1,Sheet2!$A$1:$A$1000)=1)*1,
>(Sheet2!$B$1:$B$1000)),Sheet2!B:C,2,TRUE),"")」
>などと1000行程度にするなどの工夫が必要かも知れません。
と書いたのですが、EXCELの最大有効桁数を考慮していませんでした。
EXCELの最大有効桁数は15桁ですので、shhet2の2のべき乗が51行目で
15桁を超えてしまいます。
このため、この手順で処理できるのはsheet2が50行まで(sheet1の行数は、この制限を受けません)、つまり最大仕分け種類は50種類までとなります。
その場合の上記関数は
「=IFERROR(VLOOKUP(SUMPRODUCT((COUNTIF(A1,Sheet2!$A$1:$A$50)=1)*1,(Sheet2!$B$1:$B$50)),Sheet2!B:C,2,TRUE),"")」
となります。
    • good
    • 0

既に回答された方々の中には、「ワイルドカード」と「sumproduct関数」を使ったものがみうけられなかったので、この二つをつかったアイディアを書いておきます。


1.仕分けすべきシートはshhet1とし、自動仕分けのキーとなる文字(列)は、別シート(例えばsheet2)に一覧表として作成するものとします。
2.sheet1のA列に入力するとC列にsheet2で設定した条件に合致した仕分けが表示されるものとします。
3.sheet1のC1に「=IFERROR(VLOOKUP(SUMPRODUCT((COUNTIF(A1,Sheet2!A:A)=1)*1,(Sheet2!B:B)),Sheet2!B:C,2,TRUE),"")」と記述し、下方向へオートフィルを使って入力予定行数分コピーします。
4.sheet2に添付画像のようにキーとなる文字(列)をアスタリスク(*)で囲んだ文字列をA列にリストとして記入します。
5.sheet1のA列に入力された文字列にはsheet2A列のリストの2つ以上が同時に含まれる可能性があり、この場合は、リストのより下に記載された文字(列)を優先することとします。
6.上記5を実現するための仕掛けとしてsheet2のB1に「=2^(ROW()-1)」を記述し、下方向へオートフィルを使ってA列のリスト分コピーします。
7.sheet2のC列にはA列に入力したキーとなる文字(列)に対応する「仕分け」を記入します。
8.countif関数を使って、sheet2のA列の文字列がsheet1のA列の入力値に含まれるか判断します。(含まれれは1が返ります。但し、2つ以上が該当する場合があります。)
9.sumproduct関数を使って、sheet2の上記8の条件を満たす行のB列の合計値を求めます。
10.vlookup関数を使って、上記9の合計値から条件に合致するリストの最も下にある「仕分け」を求めます。

以上の手順で、sheet2にリストを追加していけば、仕分けの種類が増えても対応できます。

ただし、sumproduct関数を使用し、上記3で示した数式では、EXCELの最大行数分を計算するため、PCの性能によっては、仕分けが表示されるまでに時間を要する可能性があります。
実務を考えると範囲を限定し、
「=IFERROR(VLOOKUP(SUMPRODUCT((COUNTIF(A1,Sheet2!$A$1:$A$1000)=1)*1,(Sheet2!$B$1:$B$1000)),Sheet2!B:C,2,TRUE),"")」
などと1000行程度にするなどの工夫が必要かも知れません。
「エクセルで簡単な自動仕分けがしたいです。」の回答画像7
    • good
    • 0

添附圖參照(Excel 2019)



C1: =IFERROR(IF(FIND("高",A1),"交通費"),"")&IFERROR(IF(FIND("→",A1),"交通費"),"")&IFERROR(IF(FIND("現金",A1),"外注"),"")
「エクセルで簡単な自動仕分けがしたいです。」の回答画像6
    • good
    • 1

それで理解できなければ無理ですね

    • good
    • 0

こんにちは



>含まれてたら
という意味が言葉通り「含まれる」である場合、その判定分が増えるので少しだけ複雑になりますが、基本的にはIF文のネスト(=重複)で可能です。

以下は、「含まれている」を判定する場合の例です
C1セルに
=IF(NOT(ISERROR(FIND("高",A1)))+NOT(ISERROR(FIND("→",A1))),"交通費",IF(ISERROR(FIND("現金",A1)),"","外注"))

※ 単に一致するか否かで判断できるのであれば、式はかなり簡単になできます。
※ 順に判定しているので、例えばA1セルの値が「現金払いで高額」という文言の場合は、「高」が先に判定されるので、結果は「交通費」と表示されます。
    • good
    • 0

お書きの内容だけならIF関数で場合分けするだけでもいいかなと思ったので聞きました。


そう判断して、IFの回答をしたら「実はたくさんあるのでIFでは書ききれません」みたいな展開になるんじゃないかと危惧したので。
条件の後出しは敬遠されるので、どの程度のボリューム感なのかは最初に書いておいた方がいいですよ。

そうであれば対応表を作って、INDEXとMATCHとかでできると思います。
「含まれる」という表現なので実際のデータ内容がわかりませんし、この辺りにしておきたいと思います。
    • good
    • 0
この回答へのお礼

初めての質問でしたので、よく理解していなくて申し訳ありません。
自分の聞きたいことが、なかなか文章におこすと難しくて簡潔にしてしまいました。
抽出文字列が10種類程度で仕分け後の種別が5種類程度くらいの予定になります。
まだまだエクセルも使い慣れてなく、適当に追加すればいけると思い浅はかでした。
わざわざ注意して頂きありがとうございました。

お礼日時:2020/09/04 16:49

一応確認ですが、分けたい内容はそれだけですか?


(実はもっとたくさんあるとかではない?)
    • good
    • 0
この回答へのお礼

たくさんあります。
やり方さえわかれば、条件は追加していけばいいかなと思っていたのですが、特殊な感じになりそうですか?

お礼日時:2020/09/04 12:50
    • good
    • 0
この回答へのお礼

数字じゃなく複数の特定の文字なんですけど、例の式を教えて下さい。

お礼日時:2020/09/04 12:51

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