• 締切済み

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

エクセルでwebクエリで取得した表を画像のように処理をマクロでしたいのですが どうすればいいですか 簡単に説明すると 表を取得 ↓ F12にあるメイショウマンテンをシニスターミニスターの横に移動させる ↓ B3の2019年1月19日(土) | 1回京都6日 | 15:35発走のうち2019年1月19日をシニスターミニスターの横に移動 ↓ B4のすばるステークスを2019年1月19日の横に移動 ↓ 12 13行を削除 ← これはできています ↓ 別のシートに移動 これで終わりです わかりにくければすいませんよろしくおねがいします

みんなの回答

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.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のご回答に対し、エラーが出ました、としか言えてないレベルのようだが、上記回答に、疑問点あれば、打ち切って無視してください。

  • HohoPapa
  • ベストアンサー率65% (455/693)
回答No.2

>getMyDay = Left(strdate, MyPos - 1) >の部分で止まってしまいます MyPos = InStr(1, strdate, "(") '半角「(」ではなく全角「(」かも これを MyPos = InStr(1, strdate, "(") '半角「(」ではなく全角「(」かも に書き換ええてみてください。

  • HohoPapa
  • ベストアンサー率65% (455/693)
回答No.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

hirorotti
質問者

補足

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

関連するQ&A