ログインしてさらにmixiを楽しもう

コメントを投稿して情報交換!
更新通知を受け取って、最新情報をゲット!

Excel VBA 製作所コミュの 連続した数字で飛び飛びの数字のところに行挿入するには

  • mixiチェック
  • このエントリーをはてなブックマークに追加
お久しぶりです
競馬のデータをウェブからコピーペーストしてるのですが
仮に
   A   B    C  D   E   F  
  日 曜日 場所 R 距離 状
 8月11日 日 小倉 1R T1200 良
 8月11日 日 小倉 2R T2000 良
 8月11日 日 小倉 3R T1200 良
 8月11日 日 小倉 5R D1000 良
となってる表を
A  B    C  D   E   F  
    日 曜日 場所 R 距離 状
 8月11日 日 小倉 1R T1200 良
 8月11日 日 小倉 2R T2000 良
 8月11日 日 小倉 3R T1200 良
 8月11日 日 小倉 4R -    -
 8月11日 日 小倉 5R D1000 良
みたいにしたくて
出来たのは出来たのですが
別のシートにコピーペーストした時に
     A   B    C   D   E     
    日 曜日 場所 R 距離 状
 8月11日 日 小倉 1R T1200 良
 8月11日 日 小倉 2R T2000 良
 8月11日 日 小倉 3R T1200 良
#REF #REF #REF 4R -    -
 8月11日 日 小倉 5R D1000 良
になってしまいました
いろいろ考えて条件分岐にして
1 E列に「-」がある行を選択する
2 その行の一行上に移動する
3 移動した行のAからC列をコピーペーストする
という風にしたらいいのではと思うのですが構文の書き方がわからなくて困ってます
助けてください

コメント(21)

#REFというエラーが出るということは、そこに何か式が入力されているんですよね?
どんな式ですか?
また#REFというエラーは参照先がないことを意味しています。参照しているセルとの位置関係、シート名など問題点はありませんか?
>>[001]
Aは日付Bは曜日 Cは場所ですが
コピペするときに「形式を選択して貼り付け」で値を選べばよいのでは?
>>[2]
それはわかっていますが・・・。
今あるものを利用できないかと思い入力されている「式」が知りたかったのですが、うまく伝わらなかったようです。

やりたいこと1-3を実現するなら、僕ならFor nextあるいはDo Loopで上から順に列Eの値についてIfで「-」かどうかを判別し、「-」があったらその行番号をもとに1行上のデータをコピー&ペーストするでしょうか。
>>[4] 私も投稿してからその方法考えましたが 構文がわからなくて
>>[5]
どこがわからないのでしょうか?
まったくわからないのでしょうか?
>>[6] はいすいません
全くわかりません 教えていただけるとありがたいです
>>[7]
「新しいマクロの記録」を利用して調べると、見えてくるんじゃないかな。
>>[8] ありがとうございます。 少しやってみます 尚明日の夕方より出張なので
書き込みが遅くなるかもしれませんすいません
記録でしたところ
検索の部分だけですが
Cells.Find(What:="-", After:=ActiveCell, LookIn:=xlFormulas, LookAt:= _
xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase:= _
False, MatchByte:=False, SearchFormat:=False).Activate
となって そこからoffsetで上に移動 で A-Cをコピーペーストの流れでいいですか
>>[008]
今帰って来ました よろしくお願いいたします
>>[12]
 よろしくと言われても......何でもサポートは出来ませんよ。
>>[14]
 見ただけでは私には判りませんし、それを検証する時間も裂けません。
 ご自分で検証して確かめてみて下さい。
>>[015]
わかりました検証後また書きます
>>[7]
>全くわかりません 教えていただけるとありがたいです
ですと、ちょっと無理だと思いますよ。

失礼ですけれども、「教えて下さい」じゃなくて、「作って下さい」のレベルのように思えます。
そうじゃないかも知れないですが、手取り足取りの教授は、ここでは無理です。

まずは、優しいVBAの本の1冊(いや半分)でも読むことをお勧めします。
Sub CheckCellE()
Dim endRow As Long
Dim i As Integer

endRow = Cells(Rows.Count, 1).End(xlUp).Row 'Find the end of the row
For i = 1 To endRow
' E列に「-」がある行を選択する
If Cells(i, 5).Value = "-" Then  
'その行の一行上に移動する , 移動した行のAからC列をコピーペーストする
Range(Cells(i - 1, 1), Cells(i - 1, 3)).Copy Destination:=Cells(i, 1)
End If
Next i

End Sub


このままですと1Rのデータがない場合には意図したようにはなりませんね。
>>[18] 有難うございます少し試してみます
やってみました

sub conv()

dim sI as long
dim sJ as long
dim sP as long
dim tbl(11,6) as variant

'テーブルに11R分の無しデータを準備
for sI=1 to 11
tbl(sI,1)=cells(2,1):tbl(sI,2)=cells(2,2):tbl(sI,3)=cells(2,3)
tbl(sI,4)=trim(str(sI)) & "R"
tbl(sI,5)="-":tbl(sI,6)="-"
next

'nRが存在するものをテーブルにセット
sP=Cells(65536,1).End(xlUp).Row
for sI=1 to 11
for sJ=2 to sP
if tbl(sI,4)=cells(sJ,4) then tbl(sI,5)=cells(sJ,5):tbl(sI,6)=cells(sJ,6)
next
next

'セルに書き出す
for sI=1 to 11
for sJ=1 to 6
cells(sI+1,sJ)=tbl(sI,sJ)
next
next

'書式を整える
Range("A2:F12").Select
Selection.NumberFormatLocal = "m""月""d""日"""
With Selection.Font
.Name = "MS Pゴシック"
.Size = 10
.ColorIndex = xlAutomatic
End With

end sub

ログインすると、残り2件のコメントが見れるよ

mixiユーザー
ログインしてコメントしよう!

Excel VBA 製作所 更新情報

Excel VBA 製作所のメンバーはこんなコミュニティにも参加しています

星印の数は、共通して参加しているメンバーが多いほど増えます。

人気コミュニティランキング