[[20160224114539]] 『SUMIFのように文字列を結合』(megrin) >>BOT

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『SUMIFのように文字列を結合』(megrin)

よろしくお願いします。
銀行口座の明細(振込入金)をエクセルにインポートした後の処理で質問です。
同じ名義で複数回お振込された方の合計をSUMIF関数で表示しているのですが、
隣のセルに「振込日」を文字列として結合して、1つのセルに格納したいです。
(例:2/10,2/25,2/28 のように。TEXT関数は使えます)
同じ振込名義が何度も現れますが、それぞれの行に同じ文字列を表示して構いません。

< 使用 Excel:Excel2013、使用 OS:Windows7 >


 現在の表の形が分からない
 結果としてどのように表示されれば満足か不明瞭

 なので以下のリンク先にあるユーティリティを使ってレイアウトを提示願います。
[[20110209184943]] 『[談]シートレイアウトの投稿どうしてますか?』(momo) 

 ちなみに文字を繋げて表示になると、関数では文字の数だけ作業列が必要になると思うので
 VBAの対応になると思います。
(稲葉) 2016/02/24(水) 12:33

     |[A]      |[B]             |[C]   |[D]                   |[E]            
 [3] |振込日   |名義            |振込額|同一名義の振込額の合計|入金日         
 [4] |2016/2/9 |スズキ ハナコ  | 3,500|                 6,200|2/9,2/15       
 [5] |2016/2/10|ナカムラ ジロウ| 5,000|                 5,000|2/10           
 [6] |2016/2/10|ヤマダ タロウ  | 4,500|                 9,600|2/10,2/25,2/28 
 [7] |2016/2/15|スズキ ハナコ  | 2,700|                 6,200|2/9,2/15       
 [8] |2016/2/20|タナカ サブロウ| 6,000|                 6,000|2/20           
 [9] |2016/2/25|ヤマダ タロウ  | 4,300|                 9,600|2/10,2/25,2/28 
 [10]|2016/2/28|ヤマダ タロウ  |   800|                 9,600|2/10,2/25,2/28 

ご返信ありがとうございます。
ユーティリティが素晴らしくて驚きました。

現在D列まで表示している状態で、E列の追加を検討しています。
大がかりにならなければ作業列を使っても構いません。
よろしくお願いいたします。

(megrin) 2016/02/24(水) 14:35


 一つの取引先は最大何件現れるのだろうか?
 (入金日は最大何件つなげることになるか)
(ねむねむ) 2016/02/24(水) 14:52

ねむねむさん、ありがとうございます。
最大で5回あれば、足りるかと思います。
よろしくお願いいたします。
(megrin) 2016/02/24(水) 15:04

 ものすごい力技だが。

 =IF(A4="","",IFERROR(TEXT(SMALL(IF(B$4:B$100=B4,A$4:A$100,""),1),"m/d"),"")&
              IFERROR(TEXT(SMALL(IF(B$4:B$100=B4,A$4:A$100,""),2),",m/d"),"")&
              IFERROR(TEXT(SMALL(IF(B$4:B$100=B4,A$4:A$100,""),3),",m/d"),"")&
              IFERROR(TEXT(SMALL(IF(B$4:B$100=B4,A$4:A$100,""),4),",m/d"),"")&
              IFERROR(TEXT(SMALL(IF(B$4:B$100=B4,A$4:A$100,""),5),",m/d"),""))

 上記式では最大100行目までデータがあるものとしている。
 もっと行数がある場合は式中の「$100」部分をすべて同じ値で大きくしてくれ。

 また、SMALL関数の第二引数を「6」「7」と増やしたものを&でつなげることでつなげる件数の最大を増やせる。
(ねむねむ) 2016/02/24(水) 15:20

 標準モジュールに
    Function MEIGIConDay(v As String, Drng As Range, Mrng As Range)
        'MEIGIConDay(検索値,日付列範囲,名義列範囲)
        Dim a
        Dim m As String
        Dim d As String
        m = Mrng.Address
        d = Drng.Address
        a = Evaluate("=TRANSPOSE(IF(" & m & "=""" & v & """,TEXT(" & d & ",""m/d""),CHAR(2)))")
        a = Filter(a, Chr(2), False)
        MEIGIConDay = Join(a, ",")
    End Function

 としておいて、
 E4=MEIGIConDay(B4,$A$4:$A$10,$B$4:$B$10)
 これをコピーでどうでしょう?

 ※解釈できるようであれば
        MEIGIConDay = Join(Filter(Evaluate("=TRANSPOSE(IF(" & Mrng.Address & "=""" & v & """,TEXT(" & Drng.Address & ",""m/d""),CHAR(2)))"), Chr(2), False), ",")
 これ一行でも大丈夫です。
 15:28追記
(稲葉) 2016/02/24(水) 15:24

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.