[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『文頭の数字を利用したタブ結合』(クロレッツ)
以下のように問題文が一行ごとにセルが分かれている場合、どうすれば一問ごとにセルを結合できますか?
例)
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.