
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
解決されてましたらスルーしてください
以下のような考え方はどうでしょう
A列の空白セルを削除して
B列に & がある部分の抜き出し(行そのまま)
C列に & がない部分の抜き出し
C列先頭1つを削除して
空白行を削除して
A列を削除して
ループする記述がないので、ステップ実行で動きを見てください
なお、A列初めの内容に & があること、
※ 元々のデータ上でやるので注意してください
Public Sub Samp1()
Application.ScreenUpdating = False
With Range("A2", Cells(Rows.Count, "A").End(xlUp))
On Error Resume Next
.SpecialCells(xlCellTypeBlanks).Delete xlShiftUp
On Error GoTo 0
With .Offset(, 1)
.FormulaR1C1 = "=IF(COUNTIF(RC1,""*&*""),RC1,"""")"
.Value = .Value
End With
With .Offset(, 2)
.FormulaR1C1 = "=IF(RC[-1]="""",RC1,"""")"
.Value = .Value
.Cells(1).Delete xlShiftUp
.SpecialCells(xlCellTypeBlanks).EntireRow.Delete
End With
.EntireColumn.Delete
End With
Application.ScreenUpdating = True
End Sub
※ 上記は & のあるセルが連続しないことが前提です
連続することがあれば、以下のようになるかと
Public Sub Samp2()
Dim rng As Range
Application.ScreenUpdating = False
With Range("A2", Cells(Rows.Count, "A").End(xlUp))
On Error Resume Next
.SpecialCells(xlCellTypeBlanks).Delete xlShiftUp
On Error GoTo 0
With .Offset(, 1)
.FormulaR1C1 = "=IF(COUNTIF(RC1,""*&*""),RC1,"""")"
.Value = .Value
Set rng = .SpecialCells(xlCellTypeBlanks).EntireRow
End With
With .Offset(, 2)
.FormulaR1C1 = "=IF(RC[-1]="""",RC1,"""")"
.Value = .Value
.Cells(1).Delete xlShiftUp
Intersect(rng _
, .SpecialCells(xlCellTypeBlanks).EntireRow).Delete
End With
.EntireColumn.Delete
End With
Application.ScreenUpdating = True
End Sub
No.2
- 回答日時:
こんにちは。
マクロの典型的な練習問題のような題材ですね。
実行後では空白行は消えているということは、空白を削除する、というルールが加わっているようです。
'//
Sub AlignmentTest()
Dim Rng As Range
Dim c As Range
Dim stRng As Range
Dim lastRow As Long
Dim i As Long
Set Rng = Range("A2", Cells(Rows.Count, 1).End(xlUp))
Application.ScreenUpdating = False
For Each c In Rng
If c.Value Like "#&*" Then
Set stRng = c.Offset(, 1)
ElseIf c.Value <> "" Then
c.Copy stRng
c.ClearContents
Set stRng = c.Offset(, 1)
End If
Next c
'空いている行を埋める
lastRow = Cells(Rows.Count, 1).End(xlUp).Row
For i = lastRow To 2 Step -1
If Cells(i, 1).Value = "" And Cells(i, 2).Value = "" Then
Cells(i, 1).Resize(, 2).Delete '2列分削除
End If
Next i
Application.ScreenUpdating = True
End Sub
'///
No.1
- 回答日時:
こんにちは!
カット&ペーストではなく、Sheet2に表示するようにしてみました。
元データはSheet1にあるとします。
標準モジュールにしてみてください。
Sub Sample1()
Dim i As Long, wS As Worksheet
Set wS = Worksheets("Sheet2")
wS.Range("A:B").ClearContents
With Worksheets("Sheet1")
For i = 2 To .Cells(Rows.Count, "A").End(xlUp).Row
If .Cells(i, "A") <> "" Then
If InStr(.Cells(i, "A"), "&") > 0 Then
wS.Cells(Rows.Count, "B").End(xlUp).Offset(1, -1) = .Cells(i, "A")
Else
wS.Cells(Rows.Count, "B").End(xlUp).Offset(1) = .Cells(i, "A")
End If
End If
Next i
End With
End Sub
こんな感じではどうでしょうか?m(_ _)m
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBAで、特定の文字より後を削除して残った数値を文字列に変換と特定の文字より前も削除したい 3 2022/04/15 19:21
- Excel(エクセル) エクセルの条件付き書式で*を使いたい 4 2022/05/13 16:49
- Excel(エクセル) 関数EXACT(文字列,文字列)とexcelVBA 3 2022/04/14 15:07
- Excel(エクセル) エクセルで文字列と数字が混在する列に書式設定したい。 3 2022/12/19 09:11
- Visual Basic(VBA) EXCEL VBA 単語置き換え について質問です ブック名 ぶぶぶ シート名 ししし セル V3〜 3 2023/03/08 01:41
- Excel(エクセル) Excelのリストにある文字を含むセルを、複数の色で色付けしたいです 2 2022/08/11 17:39
- Excel(エクセル) Excel VBAで、行の高さを、上下1文字分程度高くしたい 3 2023/04/23 00:17
- その他(データベース) Accessのクエリで1フィールドの抽出条件設定をNullでなく全角半角含む空白のみの文字列でない文 1 2023/04/24 15:20
- C言語・C++・C# VisualStudioのソースコードで漢字を使いたい 4 2022/05/21 10:16
- Excel(エクセル) Excelのマクロで、特定のセルから順番に値を取得したい 5 2022/12/06 15:34
このQ&Aを見た人はこんなQ&Aも見ています
-
ショボ短歌会
ひどい短歌を詠んでください。
-
初めて自分の家と他人の家が違う、と意識した時
子供の頃、友達の家に行くと「なんか自分の家と匂いが違うな?」って思いませんでしたか?
-
性格いい人が優勝
できるだけ性格いい人になって回答をお願いします。
-
単二電池
あなたの家に何本ありますか?
-
自分用のお土産
国内や海外に旅行へ行った時、自分用のお土産ってどれくらい買いますか?
-
【VBA】特定の値が入った行をコピーして別シートに貼り付ける方法をおしえていただきたいです。
Excel(エクセル)
-
【VBA】特定の文字が入っている行の一部を抽出して別シートコピーするには
Visual Basic(VBA)
-
【VBA】特定列に文字が入っていたらそのセル行をコピーしてマスターブックの同じ行に貼り付けたい
その他(Microsoft Office)
-
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・「それ、メッセージ花火でわざわざ伝えること?」
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・【お題】甲子園での思い出の残し方
- ・【お題】動物のキャッチフレーズ
- ・人生で一番思い出に残ってる靴
- ・これ何て呼びますか Part2
- ・スタッフと宿泊客が全員斜め上を行くホテルのレビュー
- ・あなたが好きな本屋さんを教えてください
- ・かっこよく答えてください!!
- ・一回も披露したことのない豆知識
- ・ショボ短歌会
- ・いちばん失敗した人決定戦
- ・性格悪い人が優勝
- ・最速怪談選手権
- ・限定しりとり
- ・性格いい人が優勝
- ・これ何て呼びますか
- ・チョコミントアイス
- ・単二電池
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・ゴリラ向け動画サイト「ウホウホ動画」にありがちなこと
- ・泣きながら食べたご飯の思い出
- ・一番好きなみそ汁の具材は?
- ・人生で一番お金がなかったとき
- ・カラオケの鉄板ソング
- ・自分用のお土産
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【Excel関数】UNIQUE関数で"0"...
-
特定の文字がある行以外を削除...
-
[EXCEL]ボタン押す→時刻が表に...
-
エクセル 上下で列幅を変えるには
-
エクセルのセルに指定画像(.jpg...
-
エクセル 数字のみ残したい
-
Excel グラフのプロットからデ...
-
Excelのフィルター後の一番上の...
-
Excel VBAで「セルが選択された...
-
excelのデータで色つき行の抽出...
-
Excel VBA 空白行があるセル範...
-
VBAで色の付いているセルの行削除
-
excel 小さすぎて見えないセル...
-
エクセルで昨日までの日付デー...
-
VBAを教えてください。
-
エクセルで特定の文字列が入っ...
-
AのセルとB行を比較して、一致...
-
エクセルVBA 一番端のセルの求...
-
Excelでカタカナ・ひらがな・英...
-
エクセルマクロで偶数行(又は...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
特定の文字がある行以外を削除...
-
【Excel関数】UNIQUE関数で"0"...
-
エクセルで特定の文字列が入っ...
-
[EXCEL]ボタン押す→時刻が表に...
-
エクセル マクロで数値が変っ...
-
Excel グラフのプロットからデ...
-
結合されたセルをプルダウンの...
-
エクセル マクロ オートフィ...
-
エクセル 上下で列幅を変えるには
-
excel 小さすぎて見えないセル...
-
Excel ウインドウ枠の固定をす...
-
Excelのフィルター後の一番上の...
-
エクセル 時間の表示形式AM/PM...
-
エクセルのセルに指定画像(.jpg...
-
VBAで色の付いているセルの行削除
-
excelのデータで色つき行の抽出...
-
A1に入力された文字列と同じ文...
-
アクティブになっている行をマ...
-
電話番号の入力方式が違うデー...
-
連続データが入った行の一番右...
おすすめ情報