- ベストアンサー
縦に並んだシートのセルデーターを他のシートに1行間隔で転記する
よろしくお願いします。 シート【あ】のデーターを、シート【い】のようにしたいのですが 方法を、教えてください。 シートあ A B C D 1 55 2 66 3 77 4 5 ↓ ↓ シート【い】 A B C D 1 55 2 3 66 4 5 77 Private Sub CommandButton2_Click() Range("C1:C124").ClearContents For i = 1 To 124 Step 2 For j = 1 To 124 Cells(i, "C").Value = Cells(i, "B").Value Next Next End Sub と、してみたのですが、だめでした。
- 1211M
- お礼率54% (90/165)
- Visual Basic
- 回答数2
- ありがとう数1
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
シート【あ】のデータを、シート【い】に一行おきに作成するのですよね。 いい悪いは別にして、提示のコードには、そのシートの区別がありません。 方法はいつくもありますが、簡単なサンプルを。 当然のことですが、CommandButtonは、シート【あ】にあるものとする '------------------------------------------- Private Sub CommandButton1_Click() Dim R As Long Dim R2 As Long Sheets("【い】").Range("C:C").ClearContents For R = 1 To Cells(Rows.Count, "B").End(xlUp).Row R2 = (R - 1) * 2 + 1 Sheets("【い】").Cells(R2, "C").Value = Cells(R, "B").Value Next R Sheets("【い】").Select End Sub '--------------------------------------------- お試しください。
その他の回答 (1)
- aleister
- ベストアンサー率31% (11/35)
Range("C1:C124").ClearContents Dim t As Integer t = 1 For i = 1 To 124 Step 1 If i <> 1 Then t = t + 2 End If Cells(t, "C").Value = Cells(i, "B").Value Next 少し無理やりですが。。
関連するQ&A
- VBA Next For でのコピペについて
EXCEL VBA初心者です。 AシートEW44からGD44までをコピーしてBというシートの最終行へコピーしたいです。 今下記のように組んでいるのですが、うまく作動しません。 Private Sub CommandButton1_Click() Dim i As Integer For i = 153 To 186 row1 = Worksheets("B").Cells(Rows.Count, 27).End(xlUp).Row Worksheets("A").Cells(i, 44).Value = Worksheets("B").Cells(row1 + 1, 27).Value Next i End Sub アドバイスいただけませんでしょうか。
- ベストアンサー
- Excel(エクセル)
- TextBoxの値を複数シートのセルに記入する
よろしくお願いします。 TextBoxの値を複数シートのセルに記入するようにしたいのですが 一つのシートにしか記入されません。 醜い構文ですみません。 Private Sub CommandButton1_Click() Dim a As Long Dim b As Long Dim f As Long Dim h As Long Dim c As Range Dim d As Range Dim e As Range Dim g As Range With Worksheets(Array("駐車状態", "材料", "外壁1", "外壁2", "屋根1")).Select Set c = Cells(1, 2) For a = 1 To 140 Step 7 Set c = Union(c, Cells(a, 2)) c = TextBox1.Value Next c.EntireRow.Select Set d = Cells(1, 4) For b = 1 To 140 Step 7 Set d = Union(d, Cells(b, 4)) d = TextBox1.Value Next d.EntireRow.Select Set g = Cells(2, 2) For h = 2 To 141 Step 7 Set g = Union(g, Cells(h, 2)) g = TextBox2.Value Next g.EntireRow.Select Set e = Cells(2, 4) For f = 2 To 141 Step 7 Set e = Union(e, Cells(f, 4)) e = TextBox2.Value Next e.EntireRow.Select End With End Sub
- ベストアンサー
- Excel(エクセル)
- VBAで最終行の取得について
UserFormのConboBoxで「○○」を選んで、 UserFormのTextBoxで『あいう』と入力すると、ワークシートに A B 1 ○○ ×× 2 あいう と表示され、 UserFormのConboBoxで「××」を選んで、 UserFormのTextBoxで『アイウ』と入力すると A B 1 ○○ ×× 2 あいう アイウ 3 : : と表示されるようにしたいと思います。 以下のプログラムまではできています。 ********************************************* Private Sub UserForm_Initialize() Dim lasClm As Integer, i As Integer lasClm = Sheet1.Range("A1").End(xlToRight).Column For i = 1 To lasClm ComboBox1.AddItem Sheet1.Cells(1, i).Value Next i End Sub ********************************************* Private Sub CommandButton1_Click() Select Case ComboBox1.Text Case Sheet1.Cells(1, 1).Value '「○○」が選択 Sheet1.Cells(2, 1).Value = TextBox1.Text ・・・(1) Case Sheet1.Cells(1, 2).Value '「××」が選択 Sheet1.Cells(2, 2).Value = TextBox1.Text ・・・(2) End Select UserForm1.Hide End Sub ********************************************** 今は(1)、(2)のように直接セルを指定しているのですが、 この部分を各列(A列、B列)の最終行の値を取得して、 最終行+1のセルに順次TextBoxに入力された値を代入していきたいのですが、 どのようにしたらよいのでしょうか。 しかし、A列とB列は同じように値が増えていくとは限りません。 例) A B 1 ○○ ×× 2 あいう アイウ 3 かきく 4 さしす となる場合もあるので、A列とB列それぞれの最終行の値を取得したいと思っています。
- ベストアンサー
- Visual Basic
- VBAで縦一列に数字を入力したい
Private Sub CommandButton1_Click() Dim n As Integer Dim i As Integer Dim x As Integer For i = 1 To n x = i + 3 n = InputBox("層数の値を入力してください") Cells(3, 1).Value = ("基板") Cells(x, 1).Value = i x = x + 1 Next End Sub 上記のようなマクロを組んだのですが、4行目に1が入ってとまってしまいました。 これを完成させるにはどうしたらいいでしょうか?
- ベストアンサー
- オフィス系ソフト
- EXCEL VBAの配列でわかりません。
こんなコードがあるのですが、最後の他のシート(作業中シート)に書き込もうとするとエラーになってしまいます。”Sheets("作業中").”を抜くと同じシートに結果は返ってくるのですが…。コードの内容は、ある範囲のある列から空白ではないセルを探し出してその行のデータを配列で汲み取り、他のシートに一括で洗い出すというものです。 Sub 作業中() Dim myRow As Long Dim Data As Variant Dim WC() As Variant Dim WCE() As Variant myRow = Range("H1").CurrentRegion.Rows.Count Data = Range("H1:M" & myRow).Value For i = 1 To myRow If Data(i, 5) <> "" Then a = a + 1 Else b = b + 1 End If Next ReDim WC(a) ReDim WCE(b) c = 0 d = 0 For i = 1 To myRow If Data(i, 5) <> "" Then WC(c) = Range("H" & i & ":K" & i).Value c = c + 1 Else WCE(d) = Range(Cells(i, 8), Cells(i, 11)).Value d = d + 1 End If Next For i = 0 To a Range(Cells(i + 1, 15), Cells(i + 1, 18)).Value = WC(i) Next For i = 0 To b Range(Cells(i + 1, 19), Cells(i + 1, 22)).Value = WCE(i) Next e = Range(Cells(1, 15), Cells(a, 18)).Value Sheets("作業中").Range(Cells(1, 1), Cells(a, 4)).Value = e End Sub ちなみに同じシートから↓のコードを実行するとうまくいきます。 なぜ~??わからな~い??おしえてくださーい!! Sub test() Dim a As Variant a = Range("H1:K4") Sheets("作業中").Range("N1:Q4") = a End Sub
- ベストアンサー
- オフィス系ソフト
- EXCELでシート名を他のシートにあるリストから取得するには?
sheet(1)には、名称のリスト(A(a)・B(b)・C(c)・・・)があり、sheet(2)には、アンケート用紙があります。 このsheet(2)をsheet(1)にある名称リストの分だけ、コピーし、コピーされたsheet(3)以降のシート名称をsheet(1)にある名称から順に取得して(コピーされたシート名称をA・B・C・・・と名付け)、さらに、 名付けられたシート上のある、一つのセルの値をsheet(1)のリスト(a・b・c・・・)を参照するものとしたいのですが、マクロをくめないでいます。 VAB初心者には難しいでしょうか。以下のように組んでみましたが・・・ Sub Macro1() Dim i As Long For i = 2 To 20 Sheet(2).Copy After:=Sheet(i) Range("F:L").Select ActiveCellR1C1 = "=Sheet(1)!R[i]C[-4]" Sheets(1).Range(Cells(i,"B").Value.Select Selection.Copy Sheets(i).Range("F1:L1").Paste Sheets(i).Name = Sheet(1).Cells(i, "A") Next i End Sub
- 締切済み
- その他MS Office製品
- Excel マクロ 値の転記
Excel マクロ 値の転記 Sheet2をSheet1に転記したいのですが、A列だけは3回同じ値を転記 するのには、※をどのように変えたらいいのでしょうか? 宜しくお願い致します。 〔Sheet1〕転記先 A B あ 10 あ 20 あ 30 い 40 い 50 〔Sheet2〕転記元 A B あ 10 い 20 う 30 え 40 お 50 Sub テスト() Dim i As Long For i = 1 To 30 '↓※ココをどう書いて良いのかが分かりません Worksheets("Sheet1").Cells(i, "A") = Worksheets("Sheet2").Cells(i, "A") Worksheets("Sheet1").Cells(i, "B") = Worksheets("Sheet2").Cells(i, "B") Next i End Sub
- ベストアンサー
- その他MS Office製品
- Excel 度数データのコピー
下の図で B12:C22 を検索して得点を度数分だけ、つまり 0 を 33個 10 を 96個 …………… 100 を 72個 というように I12:I1011 にコピーするにはどうしたらいいのでしょう。 |I ┼---------- 12|0 13|0 14|0 …|… 45|10 46|10 47|10 …|… 1010|100 1011|100 Sub ボタン1_Click() M = 0 For I = 0 To 10 L = Cells(3, I + 12).Value '度数 For J = 0 To L - 1 Cells(9, M + 12).Value = Cells(2, I + 12).Value M = M + 1 Next Next End Sub としたのですが、うまくいきません。L には最初33が入るはずですが Empty のままです。
- ベストアンサー
- Excel(エクセル)
- QNo.2826776の質問の続き 表から別シートに一覧表を作成したいのですが
質問の続きになってしまうのですが sheet1からsheet2へ転記するVBA Private Sub Worksheet_Change(ByVal Target As Range) Sheets("Sheet2").Cells.ClearContents Sheets("Sheet2").Cells(1, 1).Value = "日付" Sheets("Sheet2").Cells(1, 2).Value = "応援に行く人" Sheets("Sheet2").Cells(1, 3).Value = "応援をもらう店舗" r2 = 1 For r = 2 To Range("A65536").End(xlUp).Row For c = 2 To 256 If Cells(r, c) <> "" Then r2 = r2 + 1 Sheets("Sheet2").Cells(r2, 1).Value = Sheets("Sheet1").Cells(r, 1) Sheets("Sheet2").Cells(r2, 2).Value = Sheets("Sheet1").Cells(1, c) Sheets("Sheet2").Cells(r2, 3).Value = Sheets("Sheet1").Cells(r, c) End If Next c Next r End Sub と教えていただきました。 もうひとつ条件を入れたいのですが「"休"を無視する」 座標やシート名の入れ替えは理解できたのですが、やはり難しく ここを頼ってしまいました。教えてください。よろしくお願いします。
- ベストアンサー
- オフィス系ソフト