ここから本文です

お世話になっております。 以前、表の指定列の値の変化に応じて、ほかの指定列の...

nan********さん

2020/2/1116:28:54

お世話になっております。
以前、表の指定列の値の変化に応じて、ほかの指定列の文字列を連結する素晴らしいコードを教えていただきました。
表の見落としがあって、ごく稀な例外の場合にさら

に処理の条件を限定したいです。
教えていただいたコードでF列の文字列を連結してますが、連結するF列に空白セルがある場合(空白セルは1つのときもあれば複数のときもあります)空白の次の文字列までをAB列を参照した選択範囲としたいです。
マクロについて勉強中ですが、方法が検討もつきません。もしご存知でしたら助けていただけませんか?
自宅にネットがなく、表等の資料は添付できません。よろしくお願いいたします。

Option Explicit
'
Sub Macro1()
Dim i As Worksheet
Dim REnd As Long
Dim RNow As Long
Dim FData As String
'
REnd = Cells(Rows.Count, "B").End(xlUp).Row + 1
Application.ScreenUpdating = False
'
For RNow = REnd To 3 Step -1
FData = " " & Cells(RNow, "F") & FData
'
If Cells(RNow, "A") & Cells(RNow, "B") <> _
Cells(RNow - 1, "A") & Cells(RNow - 1, "B") Then
Cells(RNow, "F") = Mid(FData, 2)
'
If RNow < REnd Then
Rows(RNow + 1 & ":" & REnd).Delete
End If
Range("A" & RNow, "L" & RNow).Borders(xlEdgeTop).LineStyle _
= xlContinuous
FData = ""
REnd = RNow - 1
End If
Next RNow
End Sub

閲覧数:
31
回答数:
1
お礼:
100枚

違反報告

ベストアンサーに選ばれた回答

プロフィール画像

カテゴリマスター

taihenda****さん

2020/2/1203:03:32

F列が空白の時は代わりに同じ行のAB列を使う、という解釈ですが



Sub Macro1()
Dim i As Long, k As Long, n As Long, dic As Object, F As Variant
Set dic = CreateObject("Scripting.Dictionary")
n = Cells(Rows.Count, 1).End(xlUp).Row
F = Range("F3:F" & n)
For i = 3 To n
If Cells(i, 6) = "" Then
F(i - 2, 1) = Cells(i, 28).Value
End If
Next
For i = 3 To n
dic(Cells(i, 1) & Cells(i, 2)) = dic(Cells(i, 1) & Cells(i, 2)) & " " & F(i - 2, 1)
Next
For i = 3 To n
If Cells(i, 1) & Cells(i, 2) <> Cells(i - 1, 1) & Cells(i - 1, 2) Then
k = k + 1
Cells(i, 100) = k
Cells(i, 6) = dic(Cells(i, 1) & Cells(i, 2))
Else
Cells(i, 100) = Cells(i - 1, 100)
End If
Next
Range("A3:CV" & n).RemoveDuplicates Columns:=100, Header:=xlNo
Columns(100).ClearContents
Columns(6).AutoFit
With Range("A3:L" & dic.Count + 2)
.Borders(xlEdgeTop).LineStyle = True
.Borders(xlEdgeBottom).LineStyle = True
.Borders(xlInsideHorizontal).LineStyle = True
End With
Set dic = Nothing
End Sub

  • 質問者

    nan********さん

    2020/2/1419:44:37

    ご回答心から感謝します。元のコードですが罫線を引いたあと、罫線で分けた中のD列とE列の1番下の数値が1番上になるよう自分で少し手を加えているのですが、そのようにすることは可能でしょうか?

  • その他の返信を表示

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

この回答は投票によってベストアンサーに選ばれました!

この質問につけられたタグ

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる