Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


8090 / 13644 ツリー ←次へ | 前へ→

【35167】対象の値をひとつのセルにまとめる はじめ 06/2/22(水) 19:18 質問[未読]
【35168】Re:対象の値をひとつのセルにまとめる ichinose 06/2/22(水) 20:02 発言[未読]
【35179】Re:対象の値をひとつのセルにまとめる はじめ 06/2/23(木) 11:03 質問[未読]
【35180】Re:対象の値をひとつのセルにまとめる ponpon 06/2/23(木) 11:58 発言[未読]
【35184】Re:対象の値をひとつのセルにまとめる はじめ 06/2/23(木) 13:30 お礼[未読]

【35167】対象の値をひとつのセルにまとめる
質問  はじめ  - 06/2/22(水) 19:18 -

引用なし
パスワード
    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の値はアルファベットの小文字に限定されています。
それらの値をアルファベット順に間に『+』を入れながら
ひとつのセルに入力していきます。

どうぞよろしくお願い致します

【35168】Re:対象の値をひとつのセルにまとめる
発言  ichinose  - 06/2/22(水) 20:02 -

引用なし
パスワード
   ▼はじめ さん:
こんばんは。

> 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ならでは(?)のソートを使いました。

【35179】Re:対象の値をひとつのセルにまとめる
質問  はじめ  - 06/2/23(木) 11:03 -

引用なし
パスワード
   ▼ichinose さん:

このまま使わせて頂きました。
パーフェクトに成功しました。
本当にどうもありがとうございました、助かりました。
Set rng = Range("aa1", Cells(Rows.Count, 27).End(xlUp))
この部分の『27』の意味が分かりません(汗、、、

修行中のため、おはずかしいのですが教えていただけたらと思います。

【35180】Re:対象の値をひとつのセルにまとめる
発言  ponpon  - 06/2/23(木) 11:58 -

引用なし
パスワード
   こんにちは。

ichinoseさんではありませんが・・

>Set rng = Range("aa1", Cells(Rows.Count, 27).End(xlUp))
Cells(行,列)だから
「27」はAA列になります。
range("AA65536")と同じことでは?
行数はバージョンに依存するので、Cells(Rows.Count, 27)という書き方は、
どのバージョンでもいけますね。

【35184】Re:対象の値をひとつのセルにまとめる
お礼  はじめ  - 06/2/23(木) 13:30 -

引用なし
パスワード
   ponponさま

良くわかりました!
どうもありがとうございました

8090 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free