Excelで特定の文字列を含むセルを右に1・上に1セル移動させたいです


今、A列にこのようなデータがあります(全て文字列として扱っています)。

--------------
りんご
111129300
111139933
ごりら
111149954
らっぱ
111198332
ぱんだ
--------------

この状況におきまして。
"1111"という文字列を含むセルのみ切り取り、右に1・上に1セル移動した場所のセルに貼り付けたいです。
例えば111129300がA列の10行目にある場合、これをB列の9行目に移動させたいです。

マクロ等、効率的な方法がありましたらお教えいただけますと幸いです。よろしくお願い致します。

回答の条件
  • 1人20回まで
  • 登録:2019/05/24 03:39:44
  • 終了:2019/05/28 21:36:24

ベストアンサー

id:kimuram No.1

きむむ回答回数27ベストアンサー獲得回数112019/05/24 09:37:19

ポイント500pt

VBAで以下のように構成してみました。
試してみてください。


Option Explicit
Sub 特定文字列をセル移動()
' A列の各セルが文字列"1111"を含むセルを対象として、
' 右に1・上に1セル移動する。
'
Dim wkLastRow
Dim wkCnt
Dim refCell As Range
' 有効な最終行を求める
wkLastRow = Cells.SpecialCells(xlCellTypeLastCell).Row

wkCnt = 0
' A列の先頭から最終行のセルまでを対象として逐次処理する
For Each refCell In Range(Cells(1, 1), Cells(wkLastRow, 1))
'If Left(refcell, 4) = "1111" Then ' "1111" で始まる文字列のとき
If InStr(refCell, "1111") > 0 Then ' "1111"を含む場合
wkCnt = wkCnt + 1
Debug.Print wkCnt, refCell.Address, refCell
refCell.Cut refCell.Offset(-1, 1) 'セルを移動する
End If
DoEvents
Next
MsgBox "処理終了! 処理数:" & wkCnt
End Sub

id:moon-fondu

遅くなりましてすみません、実行しました!
ありがとうございます、うまく移動できました(^^;

2019/05/28 21:33:17

その他の回答(1件)

id:kimuram No.1

きむむ回答回数27ベストアンサー獲得回数112019/05/24 09:37:19ここでベストアンサー

ポイント500pt

VBAで以下のように構成してみました。
試してみてください。


Option Explicit
Sub 特定文字列をセル移動()
' A列の各セルが文字列"1111"を含むセルを対象として、
' 右に1・上に1セル移動する。
'
Dim wkLastRow
Dim wkCnt
Dim refCell As Range
' 有効な最終行を求める
wkLastRow = Cells.SpecialCells(xlCellTypeLastCell).Row

wkCnt = 0
' A列の先頭から最終行のセルまでを対象として逐次処理する
For Each refCell In Range(Cells(1, 1), Cells(wkLastRow, 1))
'If Left(refcell, 4) = "1111" Then ' "1111" で始まる文字列のとき
If InStr(refCell, "1111") > 0 Then ' "1111"を含む場合
wkCnt = wkCnt + 1
Debug.Print wkCnt, refCell.Address, refCell
refCell.Cut refCell.Offset(-1, 1) 'セルを移動する
End If
DoEvents
Next
MsgBox "処理終了! 処理数:" & wkCnt
End Sub

id:moon-fondu

遅くなりましてすみません、実行しました!
ありがとうございます、うまく移動できました(^^;

2019/05/28 21:33:17
id:Asayuri No.2

Asayuri回答回数242ベストアンサー獲得回数562019/05/24 21:28:37

ポイント200pt

 
A列は文字列 B列は数値としてから
 
セルB9に 次の関数式を 入力します
=IF(COUNTIF(A10,"*1111*"),A10,"")
 
セルB9を B列の他のセルへ コピー貼り付けします
 
以上で ご希望のデータを 得ることができます
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

 
 
 

id:moon-fondu

ありがとうございます、こういったやり方もあるんですね。勉強になります!

2019/05/28 21:36:00

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません