こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

webクエリで取得した表の処理について

エクセルでwebクエリで取得した表を画像のように処理をマクロでしたいのですが どうすればいいですか
簡単に説明すると
表を取得


F12にあるメイショウマンテンをシニスターミニスターの横に移動させる

B3の2019年1月19日(土) | 1回京都6日 | 15:35発走のうち2019年1月19日をシニスターミニスターの横に移動

B4のすばるステークスを2019年1月19日の横に移動

12 13行を削除 ← これはできています

別のシートに移動
これで終わりです
わかりにくければすいませんよろしくおねがいします

投稿日時 - 2019-01-19 23:02:00

QNo.9579384

困ってます

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

-広告-
-広告-

回答(3)

ANo.3

何の面白味もないないような課題だな。項目の組み換えだけだ。
Sub test07()
k = 2 'Sheet2のデータの最初行
'--シートの定義
sh1 = Worksheets("Sheet1") ’(原データ・)インプットシート WEBクエリ結果
sh2 = Worksheets("Sheet2") ’アウトプットシート
For i = 11 To 最終行 Step 3
sh2.Cells(k, "A") = sh1.Cells(i, "A")
sh2.Cells(k, "B") = sh1.Cells(i, "B")
'・以下同様 略
'・
k = k + 1 '次の行に書き出す用意
Next i
End Sub
’---
Sheet1の最終行番号はいくつ、や1つの順位で3行おき(Step 3に影響)データらしいが、正しいかどうか私は確かめる気がないが、確認して。
データの代入(引っ張ってくるデータ)は、i行からの項目と、i+1行からの項目の2種がある(2行上下構成の)ようだが、上記で省略した部分の、代入式の右辺で、Cells(,)の行指定部分(カンマの左の引数)が、iかi+1か注意すれば仕舞。
'---
#1のご回答に対し、エラーが出ました、としか言えてないレベルのようだが、上記回答に、疑問点あれば、打ち切って無視してください。

投稿日時 - 2019-01-26 21:31:22

ANo.2

>getMyDay = Left(strdate, MyPos - 1)
>の部分で止まってしまいます

MyPos = InStr(1, strdate, "(") '半角「(」ではなく全角「(」かも
これを
MyPos = InStr(1, strdate, "(") '半角「(」ではなく全角「(」かも
に書き換ええてみてください。

投稿日時 - 2019-01-20 22:59:26

ANo.1

1.webクエリで表を取得
2.加工
3.別シートに複写
という処理ではなく
1.webクエリで表を取得
2.別シートに個々のセルを複写しながら加工
とした方が楽と思います。

処理後のシートの7行目までは説明がないので
あてずっぽうです。

Option Explicit

Sub Sample()

 Dim RowCnt As Long
 Dim GetSh As Worksheet
 Dim PutSh As Worksheet
 Dim PutRow As Long

 Set GetSh = ThisWorkbook.Sheets(1)
 Set PutSh = ThisWorkbook.Sheets(2)

 GetSh.Rows(1).Copy PutSh.Rows(1)
 GetSh.Rows(2).Copy PutSh.Rows(2)
 GetSh.Rows(3).Copy PutSh.Rows(3)
 GetSh.Rows(4).Copy PutSh.Rows(4)
 GetSh.Rows(5).Copy PutSh.Rows(5)
 PutSh.Cells(4, 3).Value = PutSh.Cells(5, 2).Value
 GetSh.Rows(6).Copy PutSh.Rows(5)
 GetSh.Rows(8).Copy PutSh.Rows(6)
 GetSh.Rows(9).Copy PutSh.Rows(7)
 
 RowCnt = 11
 PutRow = 7
 Do
  If GetSh.Cells(RowCnt, 1).Value = "" Then Exit Do
  PutRow = PutRow + 1
  PutSh.Cells(PutRow, 1).Value = GetSh.Cells(RowCnt, 1).Value
  PutSh.Cells(PutRow, 2).Value = GetSh.Cells(RowCnt, 2).Value
  PutSh.Cells(PutRow, 3).Value = GetSh.Cells(RowCnt, 3).Value
  PutSh.Cells(PutRow, 4).Value = GetSh.Cells(RowCnt, 5).Value
  PutSh.Cells(PutRow, 5).Value = GetSh.Cells(RowCnt, 6).Value
  PutSh.Cells(PutRow, 6).Value = GetSh.Cells(RowCnt + 1, 6).Value
  PutSh.Cells(PutRow, 7).Value = getMyDay(GetSh.Cells(4, 2).Value)
  PutSh.Cells(PutRow, 8).Value = GetSh.Cells(5, 2).Value
  RowCnt = RowCnt + 3
 Loop
End Sub

Function getMyDay(strdate As String) As String
 Dim MyPos As Long
 MyPos = InStr(1, strdate, "(") '半角「(」ではなく全角「(」かも
 getMyDay = Left(strdate, MyPos - 1)
End Function

投稿日時 - 2019-01-20 17:16:13

補足

getMyDay = Left(strdate, MyPos - 1)
の部分で止まってしまいます

投稿日時 - 2019-01-20 22:25:13

-広告-
-広告-

あなたにオススメの質問

-広告-
-広告-