こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

エクセルで複数の文字列の結合方法

以下の作業をマクロで処理したいと思っています。

エクセルのシート1に
  A   B   C
1 aaa アアア あああ
2 bbb イイイ いいい
3 ccc ウウウ ううう
4 ddd エエエ えええ
5 eee オオオ おおお

という表があったとします。

これらの文字列の横の組合せ(125通)の全てを
シート2のA列に表示させたいのです。

この表は5の3条の組合せなのですが、
実際には列も行数も多くて、列ごとに行数もバラバラです。

組合せの数が、65536行を超えるときにはシート2のB列に、
それも超えるならC、D、E列と表示させていきたいと思っています。

贅沢な希望かもしれませんが処理が早いほうがいいです。

マクロについては、まったくの初心者で何がなんだかわかりません。

じっくり勉強すればできることなのかもしれませんが、ちょっと急いでいます。

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

エクセルでは無理とか、テキストエディターの方が便利だ、
または、有料でも便利なソフトなどのアドバイス等ありましたらお願いいたします。

投稿日時 - 2007-10-24 21:02:33

QNo.3458233

すぐに回答ほしいです

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

ANo.1

レスがつかないようなので。
MicrosoftAccessはお持ちでないですか?エクセルでやるよりずいぶん簡単に出来ますよ。
あまりお勧めではありませんがエクセルのマクロでも処理可能です。
しっかり動作確認していないので不具合があったら申し訳ありません。
以下をモジュールにコピーし「Main」を実行してください。
ただしシートの並びは左からシート1、シート2としておく事。

Dim shtIn As Worksheet
Dim shtOut As Worksheet
Dim lngRowIn() As Long
Dim lngRowInCnt() As Long
Dim lngColIn As Long
Dim lngColInCnt As Long
Dim lngRowOut As Long
Dim lngColOut As Long
Public Sub Main()
Application.ScreenUpdating = False
Set shtIn = ThisWorkbook.Worksheets(1)
Set shtOut = ThisWorkbook.Worksheets(2)
lngColInCnt = shtIn.Cells(1, 1).End(xlToRight).Column
ReDim lngRowIn(1 To lngColInCnt)
ReDim lngRowInCnt(1 To lngColInCnt)
For lngColIn = 1 To lngColInCnt
lngRowInCnt(lngColIn) = shtIn.Cells(65536, lngColIn).End(xlUp).Row
Next
lngRowOut = 65536: lngColOut = 0
subSetRowIn 1
Application.ScreenUpdating = True
End Sub
Private Sub subSetRowIn(lngCol As Long)
Dim strOut As String
For lngRowIn(lngCol) = 1 To lngRowInCnt(lngCol)
If lngCol < lngColInCnt Then
subSetRowIn lngCol + 1
Else
If lngRowOut < 65536 Then
lngRowOut = lngRowOut + 1
Else
lngRowOut = 1
lngColOut = lngColOut + 1
End If
strOut = ""
For lngColIn = 1 To lngColInCnt
strOut = strOut & shtIn.Cells(lngRowIn(lngColIn), lngColIn)
Next
shtOut.Cells(lngRowOut, lngColOut) = strOut
End If
Next
End Sub

投稿日時 - 2007-10-25 20:55:53

補足

レス、ありがとうございます。残念ながらMicrosoftAccessは持っていません。上記のマクロを早速試してみます。

投稿日時 - 2007-10-25 21:07:47

お礼

データの量を調整すれば上手くいきました。ありがとうございました。

投稿日時 - 2008-04-17 15:55:24

あなたにオススメの質問