下記のようなエクセルがあります。

品物名の文字数が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円

マクロ等でできますでしょうか?
どうぞよろしくお願いいたします。

回答の条件
  • 1人3回まで
  • 登録:
  • 終了:2009/06/24 00:38:43
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答3件)

id:Mook No.1

回答回数1314ベストアンサー獲得回数393

ポイント200pt

下記のようでどうでしょうか。

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
id:ohtsu6

出来ました。

どうもありがとうございます。

2009/06/24 00:34:38
id:drill256 No.2

回答回数175ベストアンサー獲得回数7

ポイント200pt

別のシートに整形した表を作成する方法です。

以下の式を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までコピペしますとできあがり。

id:ohtsu6

どうもありがとうございます。

できました。

2009/06/24 00:34:46
id:jccrh1 No.3

回答回数111ベストアンサー獲得回数19

ポイント250pt

以下の対応でできると思います。

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

注)間違って、複数回実行しても大丈夫のように対応しています。

id:ohtsu6

出来ました。

複数回の件どうもありがとうございます。

どうもありがとうございます。

2009/06/24 00:37:05

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

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

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

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

回答リクエストを送信したユーザーはいません