http://q.hatena.ne.jp/1262665566

関数でもできるけど、VBAでやってみました。

vbastudy_28.xls
こちらをダウンロードして、開きます。

ツール→マクロ→Visual Basic Editorと開き、

saiseiみたいなボタンをクリック。

罫線、右寄せも同時にやってます(^^)

プログラムはこんな感じ。

Visual Basic:
  1. Sub test()
  2. Dim hyouAlastgyou As Integer
  3. Dim hyouAgyou As Integer
  4. Dim hyouBgyou As Integer
  5.  
  6. 'A列の最終行を求めます。
  7. hyouAlastgyou = ActiveSheet.Cells(ActiveSheet.Rows.Count, 1).End(xlUp).Row
  8.  
  9. '表Bを1行目から値を入れていくとします。
  10.  
  11. hyouBgyou = 1
  12.  
  13. 'A列が2行目からlastgyouまで入っているとして、
  14. 'それを1行ずつとっていきます。
  15.  
  16. For hyouAgyou = 2 To hyouAlastgyou
  17.  
  18.    ' hyouBgyou行目の8番目の列(H)に「品番」を代入します。
  19.     ActiveSheet.Cells(hyouBgyou, 8).Value = "品番"
  20.    ' hyouAgyou 行目 の 1番目の列(A列)の値を、hyouBgyou行目の9番目の列(I列)に代入します。
  21.     ActiveSheet.Cells(hyouBgyou, 9).Value = ActiveSheet.Cells(hyouAgyou, 1).Value
  22.  
  23.     '表Bを次の行に移します。
  24.     hyouBgyou = hyouBgyou + 1
  25.  
  26.    ' hyouBgyou行目の8番目の列(H)に「動物種類」を代入します。
  27.     ActiveSheet.Cells(hyouBgyou, 8).Value = "動物種類"
  28.    ' hyouAgyou 行目 の 2番目の列(B列)の値を、hyouBgyou行目の9番目の列(I列)に代入します。
  29.     ActiveSheet.Cells(hyouBgyou, 9).Value = ActiveSheet.Cells(hyouAgyou, 2).Value
  30.    ' hyouBgyou行目の9番目の列(I列)を右寄せにします。
  31.     ActiveSheet.Cells(hyouBgyou, 9).HorizontalAlignment = xlRight
  32.  
  33.     '表Bを次の行に移します。
  34.     hyouBgyou = hyouBgyou + 1
  35.  
  36.    ' hyouBgyou行目の8番目の列(H)に「色」を代入します。
  37.     ActiveSheet.Cells(hyouBgyou, 8).Value = "色"
  38.    ' hyouAgyou 行目 の 3番目の列(C列)の値を、hyouBgyou行目の9番目の列(I列)に代入します。
  39.     ActiveSheet.Cells(hyouBgyou, 9).Value = ActiveSheet.Cells(hyouAgyou, 3).Value
  40.    ' hyouBgyou行目の9番目の列(I列)を右寄せにします。
  41.     ActiveSheet.Cells(hyouBgyou, 9).HorizontalAlignment = xlRight
  42.  
  43.     '表Bを次の行に移します。
  44.     hyouBgyou = hyouBgyou + 1
  45.  
  46.    ' hyouBgyou行目の8番目の列(H)に「価格」を代入します。
  47.     ActiveSheet.Cells(hyouBgyou, 8).Value = "価格"
  48.    ' hyouAgyou 行目 の 5番目の列(E列)の値を、hyouBgyou行目の9番目の列(I列)に代入します。
  49.     ActiveSheet.Cells(hyouBgyou, 9).Value = ActiveSheet.Cells(hyouAgyou, 5).Value
  50.  
  51.  
  52.     '今現在の行から3行前の8番目の列(H列)から、今の行の9番目の列(I列)の部分に罫線を引きます。
  53.     ActiveSheet.Range(Cells(hyouBgyou - 3, 8), Cells(hyouBgyou, 9)).Borders.LineStyle = True
  54.  
  55.     '表Bを次の次の行に移します。
  56.     hyouBgyou = hyouBgyou + 2
  57.  
  58. '表Aを次の行に移します。
  59. Next hyouAgyou
  60.  
  61. End Sub

© 2011 simple blog いろいろ勉強中 Suffusion theme by Sayontan Sinha