• ベストアンサー

Excel 複数の記号から選んで別シートに表示方法

Office2013 Excelを使用しています。 シート1のD12セルに複数の記号(9種の☆★〇◎※×△▲などの記号)の1記号のみ表示されています、 5種(☆★〇◎※)だけはその記号を シート2の D12セルに表示する関数をご指導お願いいたします。  ☆は☆と表示、 △は表示しない、 ×は表示しない。  シート1のセルには ☆× のように2っの記号(≒2文字)はなく1記号だけです。。  表全体は40 × 60程の大きい表です。 D12が出来れば E12、D13など全体にコピーはできると思っています。    

質問者が選んだベストアンサー

  • ベストアンサー
  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.7

OR関数を利用するならすでに回答した配列委定数を利用するのがお勧めですが、他の関数で対応するなら以下のような関数が簡便です。 =IF(SUMPRODUCT((シート1!D12={"☆","★","〇","◎","※"})*1),シート1!D12,"") 上記の式は、配列定数の中にシート1!D12の値が含まれていれば(SUMPRODUCT関数の部分が1を返すのでTRUEと同じと判断されるので)シート1!D12の値を返し、該当値がない場合は0を返すので(FALSEと判断され)空白を返す式になっています。 =IFERROR(HLOOKUP(シート1!D12,{"☆","★","〇","◎","※"},1,0),"") 上記の式は、HLOOKUP関数の1行目のデータ、すなわち配列自身 (行配列)の中にシート1!D12の値が含まれていれば、その値自身を返し、データがない場合はN/Aエラーとなるので空白を返す式になっています(第4引数の0はFALSEと同じで完全一致で検索していますので、配列定数を昇順などに並べ替える必要がありません)。

その他の回答 (6)

  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.6

>=IF(OR(シート1!d12="☆","★","〇","◎","※",),シート1!d12,"")のように短く指定は無理でしょうか。 以下のような配列定数を使用した数式にします。 =IF(OR(シート1!D12={"☆","★","〇","◎","※"}),シート1!D12,"")

iki-sima
質問者

お礼

配列定数という短い数式で判り易いご指導ありがとうございました。 活用させていただきます・

  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.5

>理解不足でしょうか、シート2のD12セルに、 >=IF(OR(シート1!d12="☆",シート!d12="★",シート1!d12="〇",シート1!d12="◎",シート1!>d12="※",),シート1!d12,"") >とコピーしますと、都度シート1の確認・指定するダイアログが出てきます。  それは質問者様の御質問文の >シート1のD12セル という部分に書かれているシート名が間違っていて、実際のシート名は シート1 ではないためではないかと思われます。  ですから、回答No.1様の御回答にある =IF(OR(シート1!d12="☆",シート1!d12="★",シート1!d12="〇",シート1!d12="◎",シート1!d12="※",),シート1!d12,"") という関数の中の シート1 となっている箇所を実際のシート名に合わせて修正されると良いと思います。  例えば実際のシート名が シート1 ではなく、 Sheet1 である場合には、 =IF(OR(Sheet1!D12="☆",Sheet1!D12="★",Sheet1!D12="〇",Sheet1!D12="◎",Sheet1!D12="※",),Sheet1!D12,"") となりますし、実際のシート名が Sheet1 (2) である場合には =IF(OR('Sheet1 (2)'!D12="☆",'Sheet1 (2)'!D12="★",'Sheet1 (2)'!D12="〇",'Sheet1 (2)'!D12="◎",'Sheet1 (2)'!D12="※",),'Sheet1 (2)'!D12,"") になります。  又、一見すると シート1 の様に見えていても、シート名の末尾の「1」が半角数字の「1」ではなく、全角数字の「1」となっている シート1 である場合には、 =IF(OR(シート1!D12="☆",シート1!D12="★",シート1!D12="〇",シート1!D12="◎",シート1!D12="※",),シート1!D12,"") になります。  因みに、ORを使わない次の様な方法もあります。 =IF(ISNUMBER(MATCH(Sheet1!D12,{"☆","★","〇","◎","※"},0)),Sheet1!D12,"") =IF(ISNA(MATCH(Sheet1!D12,{"☆","★","〇","◎","※"},0)),"",Sheet1!D12) =IF(ISERROR(MATCH(Sheet1!D12,{"☆","★","〇","◎","※"},0)),"",Sheet1!D12) =IF(AND(LEN(Sheet1!D12)=1,ISNUMBER(FIND(Sheet1!D12,"☆★〇◎※"))),Sheet1!D12,"") =IF(AND(LEN(Sheet1!D12)=1,ISNUMBER(SEARCH(Sheet1!D12,"☆★〇◎※"))),Sheet1!D12,"") =IF(Sheet1!D12>"〇","",IFERROR(LOOKUP(Sheet1!D12,{"◎","☆","★","※","〇"}),""))  尚、最後のLOOKUP関数を利用する方法の場合は、{ }内に並んでいる文字列の順番が必ず昇順となる様にして下さい。

iki-sima
質問者

お礼

複数の数式の詳しいご指導ありがとうございました。。

iki-sima
質問者

補足

ご指導を実際に活用させていただくさいに、勘違いや見落とししそうな、 『一見すると シート1 の様に見えていても、シート名の末尾の「1」が半角数字の「1」ではなく、全角数字の「1」となっている』 や  『LOOKUP関数を利用する方法の場合は、{ }内に並んでいる文字列の順番が必ず昇順となる様に』 という事例まで詳しいご指導でたいへん助かります。 順に体験させてください。 ありがとうございます。

  • bunjii
  • ベストアンサー率43% (3589/8248)
回答No.4

シート1はSheet1に置き換えて良いでしょうか? >シート2の D12セルに表示する関数をご指導お願いいたします。 「D12セルに表示する関数」と言う言い方は好ましくありません。 「D12セルへ設定する関数」とでも言い換えてください。 Sheet2!D12=IF(SUMPRODUCT(({"☆","★","〇","◎","※"}=Sheet1!D12)*1),Sheet1!D12,"")

iki-sima
質問者

お礼

内容を活用させていただきます。 また質問の表現のご指導まで頂きありがとうございました。

  • dogs_cats
  • ベストアンサー率38% (278/717)
回答No.3

SUBSTITUTEを使用した方法 =IF(AND(SUBSTITUTE(Sheet1!D12,{"☆","★","○","◎","※"},)=Sheet1!D12)=FALSE,Sheet1!D12,"") sheet3のA1~A5に検索する文字を入力し、Vlookupで検索すると数式は短く出来ます。(セル範囲は任意のセル範囲に移動して結構です。) 数式のコピーを前提する場合は、検索元のセル範囲を絶対参照にする事です。 (セル番地のアルファベットを$で囲む) =IFERROR(VLOOKUP(Sheet1!D12,Sheet3!$A$1:$A$5,1,FALSE),"")

  • shintaro-2
  • ベストアンサー率36% (2266/6244)
回答No.2

>理解不足でしょうか、シート2のD12セルに、 >=IF(OR(シート1!d12="☆",シート!d12="★",シート1!d12="〇",シート1!d12="◎",シート1!d12="※",),シート1!d12,"") とコピーしますと、都度シート1の確認・指定するダイアログが出てきます。 > 都度ダイアログ(小画面)で指定せずに、自動的に参照・表示は無理でしょうか。 あまりその手のサジェッションが出てきた覚えがないので、 各人のエクセルの設定な気がします。 プルダウンで普通にコピーできたと思います。 >また >=IF(OR(シート1!d12="☆","★","〇","◎","※",),シート1!d12,"")のように短く指定は無理でしょうか。 やってみればわかります。

  • shintaro-2
  • ベストアンサー率36% (2266/6244)
回答No.1

何をされたいのかが不明ですが 記載されたことを実現するだけであれば 例えば =IF(OR(シート1!d12="☆",シート!d12="★",シート1!d12="〇",シート1!d12="◎",シート1!d12="※",),シート1!d12,"") とでも入力しておけば済みます。 でも、コピーしてフィルタをかけて表示するのでも良いのかもしれませんし、 そもそもシート1でフィルタ表示でも良いのかもしれません。

iki-sima
質問者

補足

早速のご指導で助かります。ありがとうございます。 理解不足でしょうか、シート2のD12セルに、 =IF(OR(シート1!d12="☆",シート!d12="★",シート1!d12="〇",シート1!d12="◎",シート1!d12="※",),シート1!d12,"") とコピーしますと、都度シート1の確認・指定するダイアログが出てきます。 都度ダイアログ(小画面)で指定せずに、自動的に参照・表示は無理でしょうか。 また =IF(OR(シート1!d12="☆","★","〇","◎","※",),シート1!d12,"")のように短く指定は無理でしょうか。 お手数ですがご指導をお願いいたします。

関連するQ&A

  • EXCELで、複数シートの同じセルを一覧にして表示する方法

    EXCELで、複数シートの同じセル(たとえば、複数シートのB5)を、べつの1枚のシートに特定の列に表示する方法を教えてください。シートには名前が付いていますが、コピーしたい順に左から並んでいます。 下記にINDIRECT関数を使用する方法が記載されていましたが、マクロを使用した方法を教えてください。 マクロに関しては全くの素人ですが宜しくお願いいたします。 http://oshiete1.goo.ne.jp/qa1727203.html

  • Excel 複数のデータを別シートに上から詰めて表示させたい

    Excelで、色々なシートに複数のデータがあります。 それらを一定条件で抽出して(そこは問題ないのですが) ある1枚のシートに「上から詰めて」1行ずつ表示させたいのですが、 その表示されるべき「複数のデータ」は、時に空欄になっている事も あるものです。 という事は、「上から詰めて」という条件をかなえるためには、 その表示させたいシートにセルを固定して参照させる訳には 行きませんよね・・・。 かと言って&を使ってみても、関数ではセル内改行させられない・・・ ですよね? そんな事で悩んでおります。 お知恵を貸してくださる方いらしたらお願いします。

  • 指定記号のみ別シートにコピー

    sheet1(表-1)の入力文字「A,C,E」をsheet2へコピーする。 sheet2(表-3)のように[A,C,E」以外及びsheet1空白のセルはsheet2でも空白としたい。 その際、sheet2(表-2)に入力済みの記号「○、●、◎」はそのまま残したい。 下記のコードでは、sheet2に入力済みの記号「○、●、◎」が消えてしまいます。 どなたかコードがわかる方よろしくお願いします。 Sub シートコピー() Dim r As Range For Each r In Worksheets("Sheet1").Range("B1:D5") If WorksheetFunction.CountIf(Range("A8:A10"), r.Value) Then Sheets("sheet2").Range(r.Address).Value = r.Value Else Sheets("sheet2").Range(r.Address).Value = "" End If Next End Sub セルA11に"0"を入力して実行してもsheet1空白セルはsheet2でも空白となり困っています。

  • エクセルで一つのブックにある複数のシートを一つのシートにまとめる。

    エクセルで一つのブックにある複数のシートを一つのシートにまとめる。 各シートには同じ形式の表(大きさも同じ)が1枚ずつあります。 それを一つのシートに、縦に並べて表示したい。 シートが100枚ぐらいありますので、ひとつひとつコピーするのは 大変です。 よろしくお願いします。

  • エクセルで複数のシートのコピー方法は

    エクセルで シート1~シートN までの複数シートを シート名(集計)にコピーする マクロで関数組む方法を指導願います 条件1 シート名は 作業のつど 名前が 変更します 条件2 シートの形式は全部同じです エクセル 2000

  • エクセルで他シートの英数記号を表示できないのですが。

    エクセルで他シートの(特定のセルの)英数記号を表示したいのですが、表示したいセルにリンク先のセル番号が表示されて、セル内の英数記号が表示されません。

  • エクセルの空白セルにリンクする別シートにゼロと表示

    エクセル2010を使用しています。 ひとつのシート(1)のセルが空白になっている場合に別のシート(2)でリンクしているセルにはゼロを表示したいのですが、どうもシート(1)のセルに関数(IFやVLOOKUP)が入力されているのでうまくシート(2)のセルに「0」と表示されません。 関数がないセルを指定すると「0」になります。 シート(2)のセルに「=IF(シート(1), "" ,0,シート(1))」のように強制的にゼロを表示させることもやってみましたが、表示はされますがその結果がグラフなどに反映するように設定してあるので、最終的にはこのやり方では全体的にうまく作動しません。 ですので、関数が入っているセルで空白になっている場合でも、自動的にゼロが反映されるやり方はあるでしょうか? よろしくお願いします。

  • シートが一枚しか表示しない

    Win7、Office2010を使用しています。 Excelのシートが1枚しか表示しません。 複数表示させたいのですが・・・・・・ご指導お願いします。

  • EXCELで複数のシートからデータを別シートに出す方法

    EXCELで複数のシートからデータを別シートに出す方法 EXCEL2007でデータが1シートに100行/10列ある物が10シートあります。 この10シートの任意の行にA~Dを付けて、別シート(Aシート~Dシート)に A~Dを付けた行を表示させたいのですが、方法がわかりませんでした。 ご教示お願いします。 また、可能なら別シートに表示させる時、10列ある物を4列にしたいのですが。 よろしくお願いします。

  • 3D集計による最大値とシート名の表示方法

    エクセル2002の複数のシートに同じレイアウトの表が作成してあります。 (各シートには名前がつけてあります。) 同じセル番地の最大値の値と最大値のあるシート名を表示したいと思います。 値の方は3D集計をMAX関数を使って行なえば求められるのですが、 最大値が位置するシート名を表示する方法がわかりません。 そのようなことはできるのでしょうか?どなたかおわかりの方 よろしくお願いします。

専門家に質問してみよう