|
▼はじめ さん:
こんばんは。
> Y Z AA
>1 30 5
>2 37 3
>3 42 1 n
>4 45 2
>5 48 2 p
>6 51 4 l
>7 55 2
>8 60 5 o
>9 61 6 p
>
>このような表のAA列の値を使ってひとつのセルに
>入力を行いたいと思います。
>この場合、Range("E1")に『l+n+o+p+p』と入力されるコードを書きたいと
>思います。
>表の行数はブックによって違いますがY-AAにデータが入力されているのは
>共通しています。
>AAの値はアルファベットの小文字に限定されています。
>それらの値をアルファベット順に間に『+』を入れながら
>ひとつのセルに入力していきます。
>
>どうぞよろしくお願い致します
'===================================
Sub test()
Dim rng As Range
Dim ans As Range
Dim crng As Range
Dim ccnt As Long
Dim idx As Long
On Error Resume Next
Set rng = Range("aa1", Cells(Rows.Count, 27).End(xlUp))
If rng.Count > 1 Then
With rng
Set ans = .SpecialCells(xlCellTypeConstants)
If Err.Number = 0 Then
ReDim myarray(1 To ans.Count)
ccnt = 0
For Each crng In ans
myarray(ccnt + 1) = Asc(crng.Value)
ccnt = ccnt + 1
Next
ReDim larray(1 To ccnt)
For idx = 1 To ccnt
larray(idx) = Application.Small(myarray(), idx)
larray(idx) = Chr(larray(idx))
Next
Range("e1").Value = Join(larray(), "+")
End If
End With
Else
Range("e1").Value = rng.Value
End If
End Sub
Excelならでは(?)のソートを使いました。
|
|