1505709356 ExcelのVBAについて質問です。

ピボットテーブルに文字列を表示させたいと思いましたが、
出来なかったためマクロで配置換え的なものを使っております。
※マクロ構文を画像として添付いたします。

これを実行するとシート1→シート2で配列替えするのですが、
シート1から読みとった最後の値が入ってしまいます。
シート2には行は追加しないでセルを改行して入れたいです。

[シート1]
2017/09/04 りんご あおもり
2017/09/04 りんご やまなし
2017/09/04 みかん えひめ
2017/09/04 なし  やまなし
2017/09/05 りんご あおもり
2017/09/06 みかん わかやま
2017/09/06 みかん とちぎ

[シート2]
      l りんご   l みかん  l なし    
2017/09/04 l あおもり  l えひめ  l やまなし ←項目果物が複数ある場合は行は追加しないで
      l やまなし  l      l      ←セルを改行して入れたい
2017/09/05 l       l      l やまなし  
2017/09/06 l       l わかやま l       
      l       l とちぎ  l       

回答の条件
  • 1人10回まで
  • 13歳以上
  • 登録:2017/09/18 13:35:56
  • 終了:2017/09/22 13:40:05

ベストアンサー

id:gfik No.1

いつか回答回数16ベストアンサー獲得回数102017/09/20 20:44:45

ポイント300pt

お望みの答えとは違うかもしれませんが、

以下 9/21日に書き換えました、

これではだめでしょうか。

出来上がった表(赤枠)から改良(緑枠)して整頓(青枠)した表の
背景が青い部分だけを見ればお望みのものになると思います。
f:id:gfik:20170921185650p:image

関数はこうなります。
f:id:gfik:20170921185651p:image

id:gfik

ああ、やっとたぶん質問内容を理解できました。

たぶん、

x(dicA(tdi(i,1), dicB(tdl(i,2) = tdl(i,3)

の部分を

if len(x(dicA(tdi(i,1), dicB(tdl(i,2))) = 0 then
x(dicA(tdi(i,1), dicB(tdl(i,2) = tdl(i,3)
elseif len(tdl(i,3)) > 0 then
x(dicA(tdi(i,1), dicB(tdl(i,2)) = x(dicA(tdi(i,1), dicB(tdl(i,2)) & vbCrLf & tdl(i,3)
endif

でできるかもしれないです。
私自身ミスが多いいのにvbaで実行して確認していないため、たぶんできると思うです。


後、私のように他のことをやっている合間に答えている身としましては
vba部分はコピペできるようにしてもらえるとありがたいです。

2017/09/21 20:12:19
id:japan-nan

この度はご連絡が遅くなりまして申し訳ございませんでした。
VBA部分の記載に関しまして今後は気をつけて質問させていただきます。
改行コード!思い通りに出力することが出来ました。ありがとうございました。

2017/09/22 22:44:29

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません