
複数のセルの統合をしています。
目的:各セル内の文字を一つのセルに統合したいのです。
この作業をかなりたくさんせねばなりません。
現状行っていることは
(1)A1~A10まで、各セル改行ありで統合してます。
式にすると(A1&CHASE(10)&A2......)というような感じです。
この一連の統合作業を100以上行わねばなりません。
しかも、統合せねばならないセル数が上記のように(A1~A10)10個のセルとは限りません。
A11~A16のセルの統合もあれば、A16~A30のセルの統合もあります。
これをどうにか、マクロを使用して行いたいのですが、
どのようにすればセルの統合がスムーズにいきますでしょうか?
ちなみに、統合したいセルの和はkkkkkのいう文字が入っている、セルの直前までです。
つまり・・・
A1
A2
A3
A4(kkkkkk)→A3までを統合
・
・
・
A5
A6
A7
A8
A9
A10(kkkkkk)→A9までを統合。
色々と検索してみたのですが、良い方法が見つかりません。
ひたすら、数式を打ち込むしかないのでしょうか?
どなたかお知恵をお貸しください(T_T)
よろしくお願いいたします。
A 回答 (6件)
- 最新から表示
- 回答順に表示
No.6
- 回答日時:
ああ、すみません。
No.3 ですが、ケアレスミスしましたね。すみません。No.3 の B2 の数式を次の 2 行の数式に差し替えてください。B2
=if(a1="kkkkkk",a2,b1&"
"&a2)
なおご存じとは思いますが、セルの書式を「折り返して全体を表示する」に設定しないと表示上は改行されませんので、ご注意。
No.5
- 回答日時:
実際のデータの配置や作業の目的が不明なので、最も効率的な操作が異なりますが、A列に連続して入力されているデータで特定の文字「kkkkk」までの文字をセル内改行を使って連結したいということなら以下のような文字の割り付けの機能を用いる方法で一括して実行できます。
B1セルに「=IF(A1="kkkkk","",A1&CHAR(10))」と入力して下方向にオートフィルコピーします。
その選択状態のまま、右クリックして「コピー」、もう一度右クリックして「形式を選択して貼り付け」で「値」にし、そのまま、「データ」「区切り位置」で「完了」します。
そのまま、Ctrl+Shift+→キーのショートカット操作でB列から最終列まで選択し、最後に「編集」「フィル」「文字の割り付け」をし(2007以降のバージョンならホームタブの「編集」の中の下矢印アイコンをクリックして「両端揃え」を選択してください)、最後にもう一度右クリックして「セルの書式設定」の配置タブで「折り返して全体を表示する」を選択してみてください。
#マクロで対応する場合も含めて、このようなご質問では正確なシートのレイアウトや目的を具体的に提示されないと的確な回答が得られないと思います。
また、Officeソフトはバージョンによって使用できる機能や操作方法が大きく異なりますので、質問の際には必ずバージョンを明記するようにしましょう。
No.4
- 回答日時:
言いたい事はいくつかありますが・・・
Sub sample()
Dim myStr As String
Dim i As Long, j As Long
With Columns(2)
.ClearContents
.MergeCells = False
End With
j = 1: myStr = ""
For i = 1 To Cells(Rows.Count, 1).End(xlUp).Row
If Cells(i, 1) = "kkkkkk" Then
With Range(Cells(j, 2), Cells(i - 1, 2))
.WrapText = True
.MergeCells = True
End With
Cells(j, 2) = Left(myStr, Len(myStr) - 1)
j = i + 1: myStr = ""
Else
myStr = myStr & Cells(i, 1) & vbLf
End If
Next
End Sub
こういうことでしょうか。
> 統合したいセルの和はkkkkkのいう文字が入っている、セルの直前までです。
これが可変で「jjjjjj」もありえる、なんていう場合は、
ここまでお三方が下さったご回答も「全て」無駄になってしまいます。
質問の際は「詳細を含めて」いただけないと、回答のしようが無いことをご考慮下さい。
回答に補足で「実は・・」「追加で・・」とやっていくと、本気でキリが無いですから。
No.3
- 回答日時:
>統合したものは、AのとなりのB列に示したいです!
何だかよく分からないので、具体的なことを説明してほしいのですが…。
もしかして、質問文にある「A4(kkkkkk)→A3までを統合」とは、「結合した文字列を B4 セルに記入し、セルの結合はどこにも施さない」という意味でしょうか?何となく今、そんな気がしてきました。そうであれば、もう回答が出ていますね。
ちなみに Excel において「統合」とは、重複しているデータの削除、合算などを行う機能のことで、ご質問の内容とは全く異なるものです。
マクロを使いたいとのことですが、できれば質問者さんが既に調べたこと、途中まででも書いてみたコードを載せていただきたかったです。何しろここは QA サイトであり、業務委託ではなく、質問をする場なので…。
なお、セルに
B1 =a1
B2 =if(a1="kkkkkk",a2,b1&a2)
C2 =a1="kkkkkk"
あるいは
=0+(a1="kkkkkk")
と記入して B2 と C1 からそれぞれ下方向にオートフィルし、値複写で数式を除き、オートフィルタで「kkkkkk」でない行を抽出し、関係ない行をクリアすれば、お望みの結果は Excel の一般機能だけでサッとできてしまいます。たくさん繰り返す予定でもない限りマクロを使うまでもありませんので、ご参考に。
No.2
- 回答日時:
No1の方の回答はkkkkの右のB列に統合した文字データを表示する方法ですね。
では、わたしはそうではなくA列自体のセル自体を結合させ、そこに統合した文字データを表示する方法をやってみました。
Sub test01()
Dim n As Long
Dim Rng As Range, myC As Range
Dim myStr As String
For n = 1 To Cells(Rows.Count, "A").End(xlUp).Row
If Cells(n, "A").Value <> "kkkkkk" Then
If Rng Is Nothing Then
Set Rng = Cells(n, "A")
Else
Set Rng = Union(Rng, Cells(n, "A"))
End If
Else
If Not Rng Is Nothing Then
For Each myC In Rng
myStr = IIf(myStr = "", myC.Value, myStr & Chr(10) & myC.Value)
Next myC
Application.DisplayAlerts = False
Rng.Merge
Application.DisplayAlerts = True
Rng.Value = myStr
myStr = ""
Set Rng = Nothing
End If
End If
Next n
End Sub
No.1
- 回答日時:
文字列結合した結果を「どこに」表示したいのですか。
作成例:
sub macro1()
dim buf as string
dim r as long
range("B:B").clearcontents
’上から下まで繰り返す
for r = 1 to range("A65536").end(xlup).row
if cells(r, "A") = "(kkkkk)" then
’kkk行の処理
cells(r, "B") = mid(buf, 2)
cells(r, "B").wraptext = true
buf = ""
else
’それ以外の処理
buf = buf & vblf & cells(r, "A").value
end if
next r
end sub
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセルのA1~A5の任意のセルを選んだら1、A6~A10のセルなら2と返す設定にしたいと思ってます 6 2023/03/20 18:46
- Excel(エクセル) Excelのマクロで、特定のセルから順番に値を取得したい 5 2022/12/06 15:34
- Visual Basic(VBA) 顧客ごとに違う点検案内を作成するマクロ 4 2022/09/16 05:34
- Excel(エクセル) EXCEL関数(数式)を教えてください 11 2023/05/09 13:19
- Excel(エクセル) 現時点の年齢を算出して、その年齢と一致したセルを色付けしたい。 4 2022/06/23 17:49
- Excel(エクセル) 【EXCEL】=セル&セルが上手く表示できない。 7 2022/09/04 21:32
- Excel(エクセル) Vba エクセルマクロで、 A列の、A1セルからA10セルに空白のある行を削除する、のは Range 3 2022/11/05 17:44
- Excel(エクセル) エクセルの数式で教えてください。 2 2023/02/10 17:07
- Excel(エクセル) マクロだと数式が表示される 2 2022/09/10 14:48
- Excel(エクセル) エクセル関数についてお教えください 3 2023/07/24 12:33
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセル ボタンを押すとセルの...
-
エクセルマクロで別のシートを...
-
エクセル、表から名前を貼り付...
-
セルを結合した場合の関数(COU...
-
列番号を取得する式の書き方を...
-
excelでSUBTOTAL関数を設定した...
-
Excelで結合されたセル内にある...
-
エクセル VBA セルの色をS...
-
検索方法について
-
エクセルでセルをクリックして“...
-
エクセルでたくさんのセルを小...
-
マクロ:複数セルの選択
-
エクセル:自動保存の方法:she...
-
エクセルVBAで、自作関数作れま...
-
エクセルで年間合計、平均を集...
-
エクセルVBAでセルのFormulaHid...
-
セルの結合
-
EXCEL データのコピー
-
エクセルにて別のシートに違う...
-
Private Sub Worksheet_BeforeD...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
excelでSUBTOTAL関数を設定した...
-
EXCELで、結合されたセルに連続...
-
エクセル ボタンを押すとセルの...
-
セルを結合した場合の関数(COU...
-
エクセルでチェックボックスを...
-
エクセルで片方のセルに入力し...
-
Excel 離れたセルへの連続デー...
-
エクセルでたくさんのセルを小...
-
エクセルでセルをクリックして“...
-
エクセル 結合セル内に空白なら...
-
Excelでnullになるような式のセ...
-
VBAで結合したセルがクリアでき...
-
セルの値を取得してSQL文に組み...
-
エクセルで作業した日の日付を残す
-
Excel セルを結合したものを抽...
-
【EXCEL】条件に合致するセルの...
-
Excelのカウントアップボタンに...
-
VBAで困っています。
-
曜日を判定して、曜日ごとに特...
-
Excel2007 セルの削除について
おすすめ情報