000123など頭に0が付いたものをカウントしてコピーする中で、ゼロパディングが消えてしまうのを解消したい。
先に貼り付け先のシートを文字列にしておいて、書き込んだ際に消えないようにしているが、代入する段階で消えてしまいます。これを回避するにはどうすれば宜しいでしょうか?
wkが
VBA
1Worksheets.Add(After:=Worksheets(Worksheets.Count)) _ 2.name = ("Sheet2") 3With Intersect(ActiveSheet.UsedRange, Columns("A")) 4 .NumberFormat = "@" 5 .Value = .Value 6End With 7 8'得意先コードの転記と行数の集計 9Dim i As Long, db, wk, db1, wk1 10Set db = CreateObject("Scripting.Dictionary") 11Set db1 = CreateObject("Scripting.Dictionary") 12With Sheets("sheet1") 13For i = 1 To .Cells(Rows.Count, "A").End(xlUp).Row 14 wk = .Cells(i, "B") 15 db(wk) = db(wk) + .Cells(i, "B") 16 wk1 = .Cells(i, "A") 17 db1(wk1) = db1(wk1) + .Cells(i, "A") 18 Debug.Print (wk & " " & " " & wk1 & " ") 19Next 20 Worksheets("Sheet2").Cells(1, "A").Resize(db.Count) = Application.Transpose(db.Keys)
イミディエイト(ログ)
出金支払先コード 支払通知番号 000892 739119000309 000892 739119000309 000892 739119000309 000892 739119000309 000892 739119000309 000892 739119000309 004050 739119000310 004050 739119000310 004050 739119000310 004050 739119000310 004050 739119000310 004050 739119000310 004050 739119000310
代入結果(Sheet2)
出金支払先コード 892 4050 コード
wk,wk1の型をVariantではなくStringにするとどうなりますか?
Y.Hさん
回答有難う御座います。
Dim i As Long, db, db1, wk, wk1の部分ですよね、String型にするとエラーが出てしまいます。オブジェクト型ではないと。
cells()はRangeオブジェクトを返します。Excelのセルに表示している文字列を取得したいので
wk = .Cells(i, "B").Text
wk1 = .Cells(i, "A").Text
にしてみてください。
・・・結局最後の行実行時に頭の0が消えてしまうかもしれませんが・・・
Y.Hさん
.Textを加えたモノで実行してみましたが、やはり0が消えてしまいます。Transposeで代入する前と後でセルの書式が、文字列→標準に切り替わっているのも気になります。
最終手段で"'"つけてしまいます。
要件満たせるでしょうか・・・
wk = ”’” & .Cells(i, "B").Value
wk1 = ”’” & .Cells(i, "A").Value
Y.H.さん
ありがとうございます、無事要望を満たすことができました。