[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『文頭の数字を利用したタブ結合』(クロレッツ)
以下のように問題文が一行ごとにセルが分かれている場合、どうすれば一問ごとにセルを結合できますか?
例)
1行目)Text
2行目)1. question
3行目)(A) 1 (B) 2
4行目)(C) 3 (D) 4
5行目)
6行目)2. problem
7行目)(A)korea (B)japan
8行目)(C)spain (D)rusia
9行目)
10行目)3.・・・
1行目〜5行目、6行目〜9行目、10〜・・・
という風に結合したいです
ちなみに列はすべて同列内なので問題ないです
< 使用 Excel:Microsoft365、使用 OS:unknown >
Sub test()
Dim i As Long
For i = 2 To Cells(Rows.Count, "A").End(xlUp).Row Step 4
Cells(i, "B") = Cells(i, "A") & " " & Cells(i + 1, "A") & " " & Cells(i + 2, "A")
Next
End Sub
結果図
|[A] |[B]
[1]|Text |
[2]|1. question |1. question (A) 1 (B) 2 (C) 3 (D) 4
[3]|(A) 1 (B) 2 |
[4]|(C) 3 (D) 4 |
[5]| |
[6]|2. problem |2. problem (A)korea (B)japan (C)spain (D)rusia
[7]|(A)korea (B)japan|
[8]|(C)spain (D)rusia|
行を詰めるのであれば
Sub test2()
Dim i As Long, r As Long
Range("B1") = "結合列"
For i = 2 To Cells(Rows.Count, "A").End(xlUp).Row Step 4
r = Cells(Rows.Count, "B").End(xlUp).Offset(1, 0).Row
Cells(r, "B") = Cells(i, "A") & " " & Cells(i + 1, "A") & " " & Cells(i + 2, "A")
Next
End Sub
結果図
|[A] |[B]
[1]|Text |結合列
[2]|1. question |1. question (A) 1 (B) 2 (C) 3 (D) 4
[3]|(A) 1 (B) 2 |2. problem (A)korea (B)japan (C)spain (D)rusia
[4]|(C) 3 (D) 4 |
[5]| |
[6]|2. problem |
[7]|(A)korea (B)japan|
[8]|(C)spain (D)rusia|
(フォーキー) 2023/01/24(火) 01:13:45
「タブ結合」というのがどのようなものか知らないので、単なるセル結合だとして、 また、それによって何が改善されるのかも不明ですが、 以下のようなことなんでしょうか。 (各ブロックの間には、ちょうど1行の空白行がある前提です。)
Sub main()
Dim myRange As Range
Dim area As Range
Dim s$
Set myRange = Range("A1", Cells(Rows.Count, "A").End(xlUp))
For Each area In myRange.SpecialCells(xlCellTypeConstants).Areas
s = getText(area) '文字列を取得
area.ClearContents
Call myMerge(area) 'セル結合
area(1) = s
Next
End Sub
Function getText(area As Range) As String
Dim ary
ary = Application.Transpose(area.Value)
getText = Join(ary, vbLf)
End Function
Function myMerge(area As Range)
Dim area2 As Range
Set area2 = area.Resize(area.Rows.Count + 1)
With area2
.Merge 'セル結合
.HorizontalAlignment = xlLeft
.VerticalAlignment = xlCenter
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
End With
End Function
(γ) 2023/01/24(火) 06:32:13
どう、うまくいかないのでしょうか? 「こうゆう作業をしてみたが、結果こうでダメだった」ということを説明しないと、回答した方にも、もやもや感が残ると思います。
提示の例だと、作業列を使って、簡単な数式で対応できると思いますが、以下でどうでしょうか? 「セルを結合」というのがセルのマージの意味なら数式では無理なのでスルーして下さい。
__A_____________ __B___ __C __D __E__________________________________________
1 Text 作業列 No 問題文
2 1.question 1 1 1.question♪(A)1(B)2♪(C)3(D)4
3 (A)1(B)2 1 2 2.problem♪(A)korea(B)japan♪(C)spain(D)rusia
4 (C)3(D)4 1
5 1
6 2.problem 2
7 (A)korea(B)japan 2
8 (C)spain(D)rusia 2
[B2] =LET(_No,LEFT(A2)*1,IF(ISNUMBER(_No),_No,B1)) ↓にコピー
[D2] =UNIQUE(B2:B8) 自動でスピルします。
[E2] =TEXTJOIN("♪",TRUE,FILTER($A$2:$A$8,$B$2:$B$8=D2,"")) ↓にコピー
わかりやすいい様に「♪」で区切ってますが、タブ区切なら↓ [E2] =TEXTJOIN(CHAR(9),TRUE,FILTER($A$2:$A$8,$B$2:$B$8=D2,""))
(まる) 2023/01/24(火) 21:36:15
名前を変えて再質問されています。 どちらで進行するか決めて欲しいですね (´・ω・`) 2023/01/24(火) 21:38:04
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.