• ベストアンサー

Excel:条件付き文字列の結合方法

noname#52504の回答

noname#52504
noname#52504
回答No.7

横から失礼します。 作業列を使ってもよければ、数式でもできなくはありませんが、 #4さんがおっしゃるように、20,000行ともなると相当重たい処理になります。 また、数式とはいえ、必ずしも判りやすいとは言えないかもしれません。 私自身マクロによる解決をお奨めしますが、 「内容がわからないものを使うのに抵抗がある」というのもごもっともだと思いますので、 参考までに、数式による解決法を例示します。 以下、2行目からデータが入っているとして、 1.作業列ア [ID別に連番を振る]  Sheet1!D2:=COUNTIF($A$2:A2,A2)  として下方にフィル。  2.作業列イ [IDと作業列アの連番を連結した検索コードを生成する]  Sheet1!E2:=A2&" "&D2  として下方にフィル。 3.作業列ウ [ID毎に、商品名を結合していく]  Sheet1!F2:=IF(D2=1,"",OFFSET($F$2,MATCH(A2&" "&(D2-1),$E$2:E2,0)-1,)&"、")&C2  ※そのIDの最初の商品なら、その商品名だけを返す。   そのIDのN番目の商品であれば、検索コードからN-1番目を探して、その作業列ウの値に自分を付け加える。 4.結果列 [ID毎に検索して、作業列ウの最後の値を返す]  Sheet2!C2:=VLOOKUP(A2&" "&COUNTIF(Sheet1!$A$2:$A$29999,A2),Sheet1!$E$2:$F$29999,2,0)  ※IDの数をカウントして、最後の検索コードを割り出す。   検索コードを検索して、作業列ウの値を返す。

関連するQ&A

  • Excel 文字列の結合について

    いつもお世話になってます。 Win2000 Office2000です。 文字列を結合するのに=A1&A2などで結合できますが片方が空白だった場合に空白を返すことは可能でしょうか? 正確には2行目が入ってたり入ってなかったりしてるので     A列   B列   C列 1行目 りんご イチゴ  桃 2行目 赤い       甘い これで=A1&A2と入れて他もフィルドラッグでやると 別シートA1:りんご赤い 別シートA2:イチゴ0 別シートA3:桃甘い これで「イチゴ0」となってますが空白にしたいのです。 探し方が悪かったのか過去ログで見つからず、お知恵を拝借できたらと思います。 よろしくお願い致します。

  • Excel2002 条件によりセルの文字色を変える

    Excel2002について質問させていただきます。 たとえば2つのシートがあります。・・・  Sheet1         Sheet2 A列  B列      A列   B列   商品 在庫      商品  在庫    A   ●       A    1    B   ●       B    2     C   ●       C    1 Sheet1のB列在庫の文字色を、Sheet2のB列在庫の値により色を変えたいのですが、1は青、2は赤 のように・・。 希望としてはマクロで行いたいのですが、可能でしょうか? よろしくお願いいたします。

  • Excelでの文字列抽出

    Excelで文字列の抽出とそれを並べる方法を教えてください。 関数だけを用いて実現できるのか、マクロを使わなければできないのかも分かりません。 この関数をこの様に使えばよいというのを教えていただけると幸いです。 やりたいことは、下記条件で、シート2のB列にシート1のG列~P列までに登録されている担当者名に該当するB列の店名を4店まで抽出したいのです。 分かりづらくて申し訳ございませんが、よろしくお願い致します。 ------------------------ シートが2枚(シート1/シート2)あります。 シート1  B列は4行毎に結合されており、店名が登録されています。  G列~P列までは1行目は担当者名、2,3,4行目は補足情報が登録されています。  シート2  A列に担当者名が入っています。(4行毎に結合しています)  B列にA列の担当者名に該当する、シート1の店名を4店まで登録したい。

  • Excel2007のマクロで文字列を結合

    Excel2007のマクロで文字列を結合したいのですがうまくいきません。 1、セルA1からU1までデータが1つずつ入ってます。 2、1のデータを3列ずつ結合してA3からG3にコピー。 例えば、セルA1あ、B1い、C1う、D1え、E1お、F1か、ならセルA3あいう、セルB3えおか、のようにマクロで一機にできるソースをお願いします。

  • Excel:シート間参照し置換したい

    初心者です。異なるシート間における表を参照し、置換の ような事がしたいのですが、VLOOKUPが使えるのでしょうか? やりたいのは、下記の通りです。 Sheet1のような表があります。 Sheet2のA列を参照し、Sheet1のB列を変換し、 Sheet3のような結果を得たいのです。 近似値もできるみたいなのでVLOOKUPを使おうと 思ったのですが、「含む」は論理値でどう指定すればいいか 分からず困っています。 そもそもVLOOKUPでできるかも疑問ですし... 教えてください、よろしくお願いします。 Sheet1 A列     B列         12345    りんご、みかん、イチゴ 67891    いんげん 23456    チョコ、あめ 67890    みかん、りんご 56789    あめ Sheet2 A列     B列 りんご    くだもの みかん    くだもの いちご    くだもの いんげん   野菜 チョコ    おかし あめ     おかし Sheet3 A列     B列         12345    くだもの 67891    野菜 23456    おかし 67890    くだもの 56789    おかし

  • Excel文字列の結合に条件式を付けたい

    エクセルで複数セルの文字列を1つに結合する際、条件を満たすものだけを結合して表示することはできないでしょうか。 <添付画像の例> A2:E2のうち1行目に「1」が付いたものだけを結合させ、セルG2に「あうお」と表示させたい

  • Excel2007のVBAで文字列を結合

    Excel2007のマクロで文字列を結合したいのですがうまくいきません。 下記がお題になります 1、セルA1からU1までデータが1つずつ入ってます。 2、1のデータを3列ずつ結合してA3からG3にコピー。 例えば、セルA1あ、B1い、C1う、D1え、E1お、F1か、ならセルA3あいう、セルB3えおか、のようにマクロで一機にできるソースをお願いします。

  • EXELで文字列の結合はどのように

    EXELで文字列の結合方法を教えてください。 A列にある文字列とB列にある文字列を結合したものをC列に入れたいのです。 例えば、A列「JAS」、B列「-123」で、C列「JAS-123」 というようにです。 よろしくお願いします。

  • 結合した文字列をファイル名に使えない

    Excel上に入力されているパス名とファイル名のデータを組み合わせて、 様々なファイルを開いたりコピーしたりするVBAのコードを作ろうとしています。 仮にシート上のA1セルに、C:\Documents and Settings\デスクトップ というパス名 A2セルに URIAGE.xls というファイル名が入力されていたとして、 A1の文字列データとB1の文字列データを結合する場合、 Sub FileSousa()  Dim a As String  Dim b As String  Dim c As String  a = Cells(1, "A").Value  b = Cells(2, "A").Value  c = Chr(34) & a & "\" & b & Chr(34)  Range("A3") = c としてみると、確かにA3セルには、"C:\Documents and Settings\デスクトップ\URIAGE.xls" と出力され、文字列が結合されたことがわかるのですが、その変数cのデータを使って  Workbooks.Open Filename:=c として、そのファイルを開こうとすると、ファイル名が見つからないとしてエラーになります。 ファイルはデスクトップ上の確かにその名前で存在しており、直接 Workbooks.Open Filename:="C:\Documents and Settings\デスクトップ\URIAGE.xls" とすると開きます。 " を Chr(34)によって入力したのがいけないのでしょうか、 Workbooks.Open Filename:=××× には、変数を置いてはいけないのでしょうか。 そもそも文字列の結合は、"あ" & "い" → "あい" となるのが基本だと思うのですが、 a="あ"、b="い"、c=a&b → c="あい"として結合した変数cについては、ファイル操作上のファイル名の設定項目として使えないのでしょうか。

  • Excel2003の条件付き書式について

    お世話になります。 条件付書式で下記のようなことが可能か、可能であれば設定方法をご教授お願いします。 【シート1】(単価リスト)※単価の昇順で並べ替えています。    A     B     C       D    E 1 レベル  単価  カテゴリー  商品名  在庫 2   1     5      AAA     りんご   ● 3   2     7      BBB     みかん 4   3     8     CCC     いちご 5   2     8     DDD     か き   【シート2】(各商品に必要な材料表)※材料名の昇順で並べ替えされています。     A       B     C 1 カテゴリー  商品名   材料 2  BBB     みかん  オレンジ 3  DDD     か き   オレンジ 4  CCC     いちご   赤 3  AAA     りんご    赤  4  BBB     みかん   黄 5  AAA     りんご    黒 6  AAA     りんご    白  上記のような同じBOOK内の2枚のシートで商品名をキーとして 【シート1】のE列「在庫」に「●」が入っている商品の場合 【シート2】の商品名セルが塗りつぶされるようにしたいのです。 【シート2】には、1つの商品に対して必要な材料すべてが行を変えて記入されているため、同じ商品名が複数あります。 たとえばりんごの場合 【シート1】のE列「在庫」に「●」が入っているので【シート2】の商品名「りんご」 のセル(B3、B5、B6)はすべて塗りつぶされる。 (他の商品は「在庫」に「●」が入っていないので【シート2】の商品名セルは塗りつぶしなしのまま) 条件付き書式の「数式で」で検索する関数と「●」が入っている場合は FLASEとなるようIF関数の組み合わせを条件1と条件2に指定して試してみたのですが 上手くいきませんでした。 説明が足りなかったり、分かりにくければ補足させていただきますので宜しくお願いします。