品物名の文字数が5文字以上ある場合は、
自動的に行が送られる(セルにスペースが入るようにしたい)です。
このようなエクセルデータがあります。
A B C
品物名 仕入れ 価格
みかん 340円 440円
パイナップル 240円 340円
オレンジ 140円 240円
マンゴスチン 540円 740円
梨 140円 240円
バナナ 110円 135円
これを品物名が5文字以上の場合は、
品物名の行のBとCにスペースを
さらに下にスペースを入れて整形したいです。
A B C
品物名 仕入れ 価格
みかん 340円 440円
パイナップル
240円 340円
オレンジ 140円 240円
マンゴスチン
540円 740円
梨 140円 240円
バナナ 110円 135円
マクロ等でできますでしょうか?
どうぞよろしくお願いいたします。
下記のようでどうでしょうか。
Sub formatting5() Dim lastRow As Long lastRow = Cells(Rows.Count, "A").End(xlUp).Row Dim i As Long For i = lastRow To 2 Step -1 If Len(Cells(i, "A").Value) >= 5 Then Rows(i).Insert Cells(i, "A").Value = Cells(i + 1, "A").Value Cells(i + 1, "A").Value = "" End If Next End Sub
別のシートに整形した表を作成する方法です。
以下の式をSheet2のa1に入れます。
=IF(COLUMN()=1,IF(ROW()<=2,Sheet1!A1,IF(LEN(OFFSET(A$1,ROW()-2,0,1,1))>=5,"",OFFSET(Sheet1!A$1,COUNTA(OFFSET(A$1,0,0,ROW()-1,1))-COUNTBLANK(OFFSET(A$1,0,0,ROW()-1,1)),0,1,1))),IF(LEN($A1)>=5,"",OFFSET(Sheet1!A$1,COUNTA(OFFSET($A$1,0,0,ROW(),1))-COUNTBLANK(OFFSET($A$1,0,0,ROW(),1))-1,0,1,1)))
そして、c9までコピペしますとできあがり。
どうもありがとうございます。
できました。
以下の対応でできると思います。
Sub 行下げ() For I = ActiveSheet.UsedRange.Rows.Count To 2 Step -1 If Len(Cells(I, 1)) >= 5 And Len(Cells(I, 2)) + Len(Cells(I, 3)) >= 1 Then Cells(I + 1, 1).Insert Shift:=xlDown Cells(I, 2).Insert Shift:=xlDown Cells(I, 3).Insert Shift:=xlDown End If Next I End Sub
注)間違って、複数回実行しても大丈夫のように対応しています。
出来ました。
複数回の件どうもありがとうございます。
どうもありがとうございます。
出来ました。
どうもありがとうございます。