---------------------------------------------------------------------------------------------------------
Option Explicit
Public Sub motolist()
Const sh1 As String = "29.4月実績" 'コピー元シート
Const sh2 As String = "元データ(201607~)" 'コピー元シート
Const sh3 As String = "リスト" 'コピー元シート
Dim maxRow1 As Long 'コピー元最大行
Dim maxrow2 As Long 'コピー先最大行
Dim maxrow3 As Long 'コピー先最大行
Dim rg1 As String
Dim rg2 As String
Dim rg3 As String
maxRow1 = Worksheets(sh1).Cells(Rows.Count, "A").End(xlUp).Row 'コピー元のA列最大行取得
maxrow2 = Worksheets(sh2).Cells(Rows.Count, "A").End(xlUp).Row 'コピー先のA列最大行取得
maxrow3 = Worksheets(sh3).Cells(Rows.Count, "A").End(xlUp).Row 'コピー先のA列最大行取得
MsgBox ("maxrow1=" & maxRow1 & " maxrow2=" & maxrow2 & " maxrow3=" & maxrow3) '①追加
rg1 = "A2:AD" & maxRow1
rg2 = "A" & (maxrow2 + 1)
Worksheets(sh1).Range(rg1).Copy Worksheets(sh2).Range(rg2)
rg1 = "D2:D" & maxRow1
rg3 = "A" & (maxrow3 + 1)
Worksheets(sh1).Range(rg1).Copy Worksheets(sh3).Range(rg3)
rg1 = "H2:I" & maxRow1
rg3 = "B" & (maxrow3 + 1)
Worksheets(sh1).Range(rg1).Copy Worksheets(sh3).Range(rg3)
rg1 = "K2:L" & maxRow1
rg3 = "D" & (maxrow3 + 1)
Worksheets(sh1).Range(rg1).Copy Worksheets(sh3).Range(rg3)
rg1 = "AE2: AI" & maxRow1
rg3 = "F" & (maxrow3 + 1)
Worksheets(sh1).Range(rg1).Copy Worksheets(sh3).Range(rg3)
End Sub
---------------------------------------------------------------------------------------------------------
以前、上記マクロをご教授頂いたのですが、
下記のところだけF列へ貼り付けをする際、値で貼り付けをしたいです。
Sh1のAE:AI列に数式が入っている為です。

rg1 = "AE2: AI" & maxRow1
rg3 = "F" & (maxrow3 + 1)
Worksheets(sh1).Range(rg1).Copy Worksheets(sh3).Range(rg3)

値で貼り付けというのが「PasteSpecial Paste:=xlPasteAll」というのは調べてわかったのですが
どう繋げたら良いのか?ご教授頂ければ幸いです。

何卒、ご教授願います。

A 回答 (4件)

例えば値だけを貼り付ける例(2行にする)


xlPasteAllだと、値も式も色も背景、罫線なども全てが貼り付きます。


Worksheets(sh1).Range(rg1).Copy Worksheets(sh2).Range(rg2)

Worksheets(sh1).Range(rg1).Copy
Worksheets(sh2).Range(rg2).PasteSpecial Paste:=xlPasteValues
    • good
    • 1
この回答へのお礼

ご教授頂きましてありがとうございます。
値を張り付けるのは2行にするのですね。
とても勉強になりました。
無事解決いたしまいた。
ありがとうございました。

お礼日時:2017/05/16 13:22

欲しいのが値だけなら「コピー&ペースト」である必要がそもそもない


はずです。範囲の値を代入するだけでいいですよね。
    • good
    • 1

こんにちは!



>PasteSpecial Paste:=xlPasteAll
は、セルの数式・書式も含めてそのままコピー&ペーストされます。
「値」のみ貼り付けにしたい場合は

Worksheets(sh1).Range(rg1).Copy
Worksheets(sh3).Range(rg3).PasteSpecial Paste:=xlPasteValues

といった感じにしてはどうでしょうか?m(_ _)m
    • good
    • 1
この回答へのお礼

tom04さま
いつもご教授いただきましてありがとうございます。
無事解決いたしました。
ありがとうございました。

お礼日時:2017/05/16 13:22

こんにちは



通常のコピーとは違って、一度には全部の処理ができないので、一旦クリップボード上にコピーしてから、PasteSpecialでペーストしてください。

具体的なコードサンプルはこんな感じです。(↓)
https://msdn.microsoft.com/ja-jp/library/office/ …
    • good
    • 1
この回答へのお礼

fujillinさま
いつもご教授頂きましてありがとうございました。
サンプルコード参考にさせて頂きます。
ありがとうございました。

お礼日時:2017/05/16 13:23

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aと関連する良く見られている質問

QVBA 値のみ貼り付けがうまくいきません

VBA初心者です。
あるブックのあるシート上のセルを、別のシートの指定の場所にコピー&ペースト(値のみ)しようとしているのですが、「オブジェクトが必要です」、というメッセージが出てしまいうまくいきません。どなたかどこを改善すれば良いかお教えいただけないでしょうか?

以下が実行してようとしているコードです。

Sub Sheet0123to4()

Sheets(1).Select
Range("I1:M7").Select
Selection.Copy

Sheets(5).Select
Range("A1:E7").Select
Slection.PasteSpecial Paste:=xlPasteValues, Operation:=xlPasteSpecialOperationNone, _ SkipBlanks:=False, Transpose:=False

End Sub

Aベストアンサー

「e」が抜けてます。「Slection.PasteSpecial …」を「Selection.PasteSpecial …」に直してみてください。

QExcelを使って行列変換をしたい(大量件数)

先日質問させていただいたものです。
さらなる加工が必要になりました。

例えば、
◆test
aaaaaa
iiiiiiiiiiiii
uuuuu
eeeee
ooooo
◆test2
kaaaaa
kiiiiiiiiiii
kuuuuu
keeeee
kooooo
...

これらのデータを
◆test aaaaaa
    iiiiiiiiiiiiii
    uuuuuu
eeeeee
oooooo
◆test2 kaaaaa
     kiiiiiiiiiii
     kuuuu
     keeeee
     koooooo

に変換はできたのですが、今度は
◆test aaaaaaaa iiiiiiiiiii uuuuuuuuuuu eeeeeee oooooo
◆test2 kaaaaaa kiiiiiiiii kuuuuuuuuu keeeeee koooooooo

のように変換する必要がでてしまいました。

マクロなどで一括で変換できないでしょうか。
当方知識が乏しいため困っております。

先日質問させていただいたものです。
さらなる加工が必要になりました。

例えば、
◆test
aaaaaa
iiiiiiiiiiiii
uuuuu
eeeee
ooooo
◆test2
kaaaaa
kiiiiiiiiiii
kuuuuu
keeeee
kooooo
...

これらのデータを
◆test aaaaaa
    iiiiiiiiiiiiii
    uuuuuu
eeeeee
oooooo
◆test2 kaaaaa
     kiiiiiiiiiii
     kuuuu
     keeeee
     koooooo

に変換はできたのですが、今度は
◆test aaaaaaaa iiiiiiiiiii uuuuuuuuuuu eeeee...続きを読む

Aベストアンサー

こんにちは!

別シートに表示しても良いですか?
元データはSheet1のA列にあり、Sheet2に表示するとします。
標準モジュールにしてください。

Sub Sample1()
Dim i As Long, cnt As Long, wS As Worksheet
Set wS = Worksheets("Sheet2")
wS.Cells.ClearContents
With Worksheets("Sheet1")
For i = 1 To .Cells(Rows.Count, "A").End(xlUp).Row
If InStr(.Cells(i, "A"), "◆") > 0 Then
cnt = cnt + 1
wS.Cells(cnt, "A") = .Cells(i, "A")
Else
wS.Cells(cnt, Columns.Count).End(xlToLeft).Offset(, 1) = .Cells(i, "A")
End If
Next i
End With
End Sub

こんな感じではどうでしょうか?m(_ _)m

こんにちは!

別シートに表示しても良いですか?
元データはSheet1のA列にあり、Sheet2に表示するとします。
標準モジュールにしてください。

Sub Sample1()
Dim i As Long, cnt As Long, wS As Worksheet
Set wS = Worksheets("Sheet2")
wS.Cells.ClearContents
With Worksheets("Sheet1")
For i = 1 To .Cells(Rows.Count, "A").End(xlUp).Row
If InStr(.Cells(i, "A"), "◆") > 0 Then
cnt = cnt + 1
wS.Cells(...続きを読む

QVBAで抽出とコピペのループがうまくいかない?

Excel2010のVBAに詳しい方、至急です。
前回も同様の質問をして、回答していただいた方のアドバイスをもとに自分でも改善?してみたつもりなのですが無理だったので再度質問させていただきます。

ポケモン図鑑という表をタイプごとにリストを抽出して、
そのデータをA列に数値が入っている行から最後の行までをコピーして、
抽出した際の条件と同じ名前のシートに所定の場所に貼り付け、最後に貼り付け先のシートのとある箇所をコピーして、ポケモン図鑑というシートにデータをペーストするというマクロなんですが、実際に通しても数値が0となってしまいます。
メッセージボックスで入力した後、「終了しました」と出るのですが期待通りに抽出してコピー&ペーストができていないようで困っています。
だれかたすけていただけませんか。

※抽出する項目
lightening※1
fire※2
water
leaf
wind
dragon

※1抽出する際、テキストフィルターのユーザー設定で
「lightening」からはじまる「伝説・幻」を含まないという条件で抽出しなければならない。
※2抽出する際、テキストフィルターのユーザー設定で
「fire」からはじまる「伝説・幻」を含まないという条件で抽出しなければならない。

Sub Pokemon()
Dim sh1 As Worksheet, sh2 As Worksheet
Dim hizuke As String, wnum As String
Dim rng As Range
Dim i As Long, imax As Long
Dim j As Variant, c As Long
Dim sname As String
Dim fsh As Variant
fsh = Array("lightening", "fire", "water", "leaf", "wind", "dragon")
hizuke = InputBox("ポケモンを捕まえた日付を入力して下さい")
If hizuke = "" Then Exit Sub
If IsDate(hizuke) = False Then
MsgBox "日付不正"
Exit Sub
End If
Set sh1 = Worksheets("ポケモン図鑑")
With sh1
Set rng = .Range(.Cells(4, 5), .Cells(4, .Cells(4, Columns.Count).End(xlToLeft).Column))
End With
j = Application.Match(CLng(CDate(hizuke)), rng, 0)
If IsError(j) Then
MsgBox "該当日付がありません"
Exit Sub
End If
wnum = InputBox("選択した日付が何週目になるかを入力して下さい")
If wnum = "" Then Exit Sub
If wnum < 1 Or wnum > 5 Then
MsgBox "週不正"
Exit Sub
End If
Application.ScreenUpdating = False
c = wnum * 2 + 3
For Each sh2 In Worksheets
For i = 0 To 5
If sh2.Name = fsh(i) Then
With sh2
If .Cells(5, c) <> "" Then
.Range(.Cells(5, c), .Cells(.Cells(Rows.Count, c).End(xlUp).Row, c)).ClearContents
End If
End With
Exit For
End If
Next i
Next sh2
With sh2
If .Cells(5, c) <> "" Then
.Range(.Cells(5, c), .Cells(.Cells(Rows.Count, c).End(xlUp).Row, c)).ClearContents
End If
End With
End If
Next sh2
With sh1
imax = .Cells(Rows.Count, "A").End(xlUp).Row
For i = 6 To imax
If .Range("A" & i).Value <> "" Then
sname = .Range("D" & i).Value
Select Case sname
Case "lightening","fire","water", "leaf", "wind", "dragon"
Case Else
sname = ""
End If
End Select
If sname <> "" Then
Set sh2 = Worksheets(sname)
sh2.Cells(sh2.Cells(Rows.Count, c).End(xlUp).Row + 1, c).Value = .Cells(i, j + 4)
End If
End If
Next i
For i = 32 To 40
Set sh2 = Nothing
Select Case i
Case 1
Set sh2 = Worksheets("lightening")
Case 2
Set sh2 = Worksheets("fire")
Case 4
Set sh2 = Worksheets("water")
Case 6
Set sh2 = Worksheets("leaf")
Case 7
Set sh2 = Worksheets("wind")
Case 9
Set sh2 = Worksheets("dogagon")
End Select
If Not sh2 Is Nothing Then
.Cells(i, j + 4).Value = sh2.Cells(sh2.Cells(Rows.Count, c + 1).End(xlUp).Row, c + 1).Value
End If
Next i
End With
Application.ScreenUpdating = True
MsgBox "ポケモン抽出コピペ終わり!"
End Sub

Excel2010のVBAに詳しい方、至急です。
前回も同様の質問をして、回答していただいた方のアドバイスをもとに自分でも改善?してみたつもりなのですが無理だったので再度質問させていただきます。

ポケモン図鑑という表をタイプごとにリストを抽出して、
そのデータをA列に数値が入っている行から最後の行までをコピーして、
抽出した際の条件と同じ名前のシートに所定の場所に貼り付け、最後に貼り付け先のシートのとある箇所をコピーして、ポケモン図鑑というシートにデータをペーストするというマクロ...続きを読む

Aベストアンサー

プログラム自体の動きは全くチェックしていません。
色々おかしいところがありますが 自分でデバッグくらいできるように
ならないとダメだと思います。

42行目と 50行目の「End If」はどこに掛かっていますか?
51行目の Next sh2はどこに掛かっていますか?
最後の方の「dogagon」てつづりは合ってますか?
61行目の「End If」と 62行目の「End Select」の順番は合ってますか?
67行目の「End If」はどこと以下同文

初心者レベルでいいので VBAについての勉強を先にすべきだと思います。

Q【マクロ】同一フォルダ内の複数ブックの複数シートの特定セルの集計を出したい

以前、複数シートを集計したい(別シートへ集計させたい)という質問をさせていただき
ご回答いただきました。
https://oshiete.goo.ne.jp/qa/9705836.html

これに似たような質問なのですが、今度は複数シートの集計だけでなく、同一フォルダにある複数のブックの複数シート(同じフォーマット)の
特定のセルを集計して、「合計」というシートに集計した数値を表示させるマクロを作成したいです。
※ブックは開かず閉じたまま実行したいです。

複数ブックはそれぞれ支店&課名になっており、シート名はその支店の担当者名になっております。
全ブックの個人シートの特定セルを合計すると「合計」というシートの各支店、各課の前年、計画、実績に数値を合計させるといった
ことができたらなと思っております。

個人別シートのそれぞれA、B、Cの黄色のセルを合計シートの月別の前年、計画、実績へ表示させたいです。

何卒、ご教授願います。

Aベストアンサー

「それ以外」シートの方ですが下記URLへ格納しました。
http://climbi.com/b/10229/0

条件は、
個人シートのD列 ”売上”の行が集計対象(2つ以上あること)(上から2つまでを集計)
上記を「それ以外」シートの①②へ集計する
で行っています。

QExcel 別シートへのデータ抽出方法

Excelのシート1から条件が一致するデータをシート2に表示させるにはどのような関数を使用すれば良いのでしょうか?
初心者なのでわからないことばかりですがよろしくお願い致します。

イメージは下記のような感じです
〈シート1〉
A B C D
1 ID11 氏名 部署 内容
2 ID 22 氏名 部署 内容



〈シート2〉シート1のA列の値とシート2のA1に入力した値が一致する項目の行を表示させたい。
A B C D
1 ID 11 ←(できれば手段で入力したい)
2 シート1A列がID11の行全てを表示

説明がうまくできず、申し訳ありませんがどうか教えて頂けると助かります。
お願い致します。

Aベストアンサー

こんにちは!

> シート1A列がID11の行全てを表示
というコトですので、Sheet1のA列には重複してデータが存在するというコトですよね?

一例です
↓の画像のようにSheet2のA1セルに検索したい「ID」を入力するとします。
A4セルに
=IFERROR(INDEX(Sheet1!A$1:A$100,SMALL(IF(Sheet1!$A$1:$A$100=$A$1,ROW($A$1:$A$100)),ROW(A1)))&"","")

配列数式ですので、Ctrl+Shift+Enterで確定!
この画面からコピー&ペーストする場合は
上記数式をドラッグ&コピー → A4セルを選択 → 数式バー内に貼り付け → そのまま(編集可能なまま)
Ctrl+Shiftキーを押しながらEnterキーで確定!
A4セルのフィルハンドルで列・行方向にコピーすると
画像のような感じになります。m(_ _)m

Q<エクセル>2つのデータに間違いがないかをチェックしたい

エクセルで入力したデータが、ルールに基づいて正しく入力できているかどうかを確認するような関数はありますか?

例として(添付画像もつけさせていただきました)「粉薬」と「飲薬」を入力し、各容量を入力します。
「粉薬」と「××g」、「飲薬」と「××」は必ずセットで入力されていることが必須です。
もし誤って「粉薬」のときに「××」と入力をした場合に、間違った入力がされていることが表示されるような関数はありますでしょうか?
枠外に〇や×として表示される
セルに色がつく・・・等

色々検索をして試してみたのですがうまくいきません。
VBAなども出てきたのですが私自身知識が全くないことと、作成したデータをあまりエクセルが得意ではない人が使う可能性などを考え、できれば関数などでできれば・・・と考えています。

Aベストアンサー

=IF(NOT(ISERROR(FIND("粉薬",B2))),IF(NOT(ISERROR(FIND("g",C2))),"○","×"),"・")
b2に粉薬の文字がある場合で、かつ、(c2にgの文字がある場合には、○を表示、ない場合は×を表示)、左記以外は・を表示

Qエクセルデータをカンマ区切り、ダブルコーテーションで囲んだデータにする方法を教えてください

はじめまして。
仕事でエクセルデータをカンマ区切り、ダブルコーテーション囲みのテキストデータにする必要があります。

例)
”111”,"222","","","","666""

このように空白のセルもあり、そのセルもダブルコーテーションで囲みたいです。
VBAで変更する方法をどこかで見かけましたが、張り付けてみましたが、上手く動きませんでした。
超初心者ですので、わかりやすく教えていただけると有り難いです。

お手数をおかけしますが、宜しくお願い致します。

Aベストアンサー

Unicode 出力の件ですが、せっかく、個人用マクロブックに納められる(つもり)ので、それを、書き換えるよりも、後づけマクロのほうがよいかもしれません。一緒にしてしまうと、Unicodeのみになってしまいますから、それも望まないし……
とあれこれ考えて、単独マクロで、Unicodeファイル判別するプログラムもつけました。BigEndien も LittleEndienも別けますが、出力は、BigEndienだけです。
こういうのは、余計なものかもしれません。

'//
Public Sub Convert2UNICODE()
'シフトJISをUnicodeに替えるマクロ
Dim stream As Object
Dim stream2 As Object
Dim fname As Variant
Dim buf As Variant
Dim b() As Byte
Dim i As Long
fname = Application.GetOpenFilename _
 ("File (*.*), *.*", 1, "ファイルオープン")
 If VarType(fname) = vbBoolean Then Exit Sub
 Open fname For Binary As #1
   ReDim b(1 To 6)
    Get #1, , b
  Close #1
 For i = 1 To 6
 buf = buf & Hex(b(i))
 Next
 If buf Like "FFFE*" Or buf Like "FEFF*" Then
  MsgBox "ファイルはすでにUnicodeです。", vbExclamation
  Exit Sub
 End If
 '-------変換プログラム-----------
On Error GoTo ErrHandler
Set stream = CreateObject("ADODB.Stream")
  stream.Open
  stream.Type = 2
  stream.Charset = "shift_jis"
  stream.LoadFromFile fname

Set stream2 = CreateObject("ADODB.Stream")
  stream2.Open
  stream2.Charset = "unicode"
  stream.CopyTo stream2
  stream2.SaveToFile (fname), 2
  stream2.Close
  stream.Close

Set stream2 = Nothing
Set stream = Nothing
Exit Sub
ErrHandler:
 If Err.Number <> 0 Then 
  Msgbox Err.Number & " :" & Err.Description
End If
End Sub

Unicode 出力の件ですが、せっかく、個人用マクロブックに納められる(つもり)ので、それを、書き換えるよりも、後づけマクロのほうがよいかもしれません。一緒にしてしまうと、Unicodeのみになってしまいますから、それも望まないし……
とあれこれ考えて、単独マクロで、Unicodeファイル判別するプログラムもつけました。BigEndien も LittleEndienも別けますが、出力は、BigEndienだけです。
こういうのは、余計なものかもしれません。

'//
Public Sub Convert2UNICODE()
'シフトJISをUnicodeに替えるマクロ
Di...続きを読む

Qエクセル 関数について

エクセル表を作成しているのですが、わからない関数について教えてください!
画像のようなデータ表(タイトル=☆☆とします)から別シートへ、基準にもとづき自動入力されるようにしたいです!

抽出先の新しいシートですが、
A1=空白です
A2=名前
B1,C1,D1,E1,F1,G1,H1=日付を順に入力しています
B2,C2,D2,E2,F2,G2,H2=日付からTEXT(B1,"aaa")で曜日を出しています
A3,A4=画像のデータから名前を出しています(=☆☆!G3)
A4,A5=画像のデータから名前を出しています(=☆☆!G4)
A6,A7=画像のデータから名前を出しています(=☆☆!G5)
A8,A9=画像のデータから名前を出しています(=☆☆!G6)

①B~Hの3,5,7,9行目に☆☆シートをもとに労働時間を抽出したい

②B~Hの4,6,8,10行目に☆☆シートをもとに出勤時間を抽出したい

③抽出する際は休みの日は空白にしたい
→☆☆!A3:F6にない曜日は空白

④抽出する際は別シートの祝日データをもとに、祝日も空白にしたい
※祝日データは別シート(シート名=祝日一覧のA1:A17に祝日の日付が入っています
→D,E,Fはゴールデンウィークのため無条件で空白

空白は✖を入れています。
横並びのデータの区切り目は・で区切っています
A列の3,4、5,6、7,8、9,10はセルを結合しています

//// A・B・C・D・E・F・G・ H
1】✖・5月1日・5月2日・5月3日・5月4日・5月5日・5月6日・5月7日
2】名前・月・火・水・木・金・土・日
3】A・7・7・✖・✖・✖・7 ・✖
4】結合・10:00・10:00・✖・✖・✖・10:00・✖
5】B・✖・5.5・✖・✖・✖・✖・✖
6】結合・11:00・✖・✖・✖・✖・✖
7】C・4・10・✖・✖・✖・4・✖
8】結合・12:00・12:00・✖・✖・✖・12:00・✖
9】D・3・8・✖・✖・✖・✖・✖
10】結合・19:00・14:00・✖・✖・✖・✖・✖



こうなるように作り上げたいのですが関数が分かりません。
IF関数やFINDを使って試行錯誤しているのですが、エクセル初心者で知識が浅すぎて入れている関数ではエラーになってしまいます。。
賢者の皆様、知恵をお貸しください。。

エクセル表を作成しているのですが、わからない関数について教えてください!
画像のようなデータ表(タイトル=☆☆とします)から別シートへ、基準にもとづき自動入力されるようにしたいです!

抽出先の新しいシートですが、
A1=空白です
A2=名前
B1,C1,D1,E1,F1,G1,H1=日付を順に入力しています
B2,C2,D2,E2,F2,G2,H2=日付からTEXT(B1,"aaa")で曜日を出しています
A3,A4=画像のデータから名前を出しています(=☆☆!G3)
A4,A5=画像のデータから名前を出しています(=☆☆!G4)
A6,A7=画像のデータから名前を出し...続きを読む

Aベストアンサー

こんにちは

ご質問の前半の①、②は単なるセルの参照なので、参照するセル位置を計算すればよいだけですね。
残りの③、④は、ご質問文だけではよくわかりませんが、空白にする条件式を作成して、上記の参照をする代わりに空白にすれば済むでしょう。
ただし、表計算で集計することを考慮した表の作り方とは思えないので、計算を面倒にしているだけとも思えますが・・・

①、②に関しては元の表から参照する位置を計算できれば、INDEXやOFFSET関数で求めることができます。
行数は、「(=☆☆!G3)」のように直接指定のようなので、名前から検索する必要はないみたいなので、単純に「抽出シート」の3、4行が元シートの4行に、5、6行が元シートの5行を…といった按配で参照できればよいので、
 行は INT((ROW()+1)/2)+2 のような計算で算出できると思います。
添付の図では4行目から実データが始まっているようなので、上記の計算にしていますが、図をよく見ると実際は3行目なのかも知れませんので、その場合は調整が必要です。

列に関しては、日付で元シートから検索するにしても、元シートに日付欄が無いようなので、どうやって照合なさるつもりなのかわかりませんが、例えば元シートの2行目の曜日表示はDATE型の値を曜日表示しているものと仮定するなら、
 MATCH(B$1,元シート!1:1,0)
で、該当する列数を得ることができます。(H列なら8、K列なら11・・・)
「出」を参照したい場合はそのまま、「退」なら+1、「計」は+2をすることで参照したい列を算出することが可能です。
あとは上記の行と列を利用してINDEXやOFFSET関数で参照すればよいだけです。

③に関しては、元シートのA~F列に該当する曜日の文字があるかをチェックすれば良いので、
 ISERROR(MATCH(TEXT(B$2,"aaa"),OFFSET(元シート!$A$1,対象行数-1,0,1,7),0))
のようなチェックをかければ判別できるでしょう。
(↑の式中の「対象行数」は①で求める、対象行の式を意味します)
他にももう少しスマートな方法がありそうな気もしますが・・・とりあえずの方法として。

④も③と同様ですが、別シートのデータがどのようになっているのか不明なのでよくわかりません。
>A1:A17に祝日の日付が入っています
とのことなので、日付で検索して該当するものがあるかないかで、ほとんど③と同様の方法で判別が可能と思います。
それぞれが作成できたなら、それらのORをとれば、求める条件になるものと思います。

これらの式を順に組み合わせてゆけば、ご希望の関数式を作成できると思いますが、一気に結果を求めようとすると式が複雑になる傾向が多分にありますので、中間集計シートを作成したり、作業列や行を利用するなどして、集計(といっても単なる参照ですが)をしやすい形に変換しておくという方法のほうがやり易いかも知れませんね。

回答を考えながら感じた個人的な感想を言わせてもらえば、計算で表示する仕組みをほとんど考慮せずに作成された表形式だという気がします。
なさりたいことは基本的には単純な参照に近い内容なので、計算の仕組みを事前に考えて全体の構成を行えば、ほとんど同じ内容の表でも、もっと簡単に計算が可能なものができるものと思います。
きつい言い方ですが、わざわざ複雑で難しいものにしておいてから、「自動計算は誰かやってくれ~」と言っいるような気がします。

こんにちは

ご質問の前半の①、②は単なるセルの参照なので、参照するセル位置を計算すればよいだけですね。
残りの③、④は、ご質問文だけではよくわかりませんが、空白にする条件式を作成して、上記の参照をする代わりに空白にすれば済むでしょう。
ただし、表計算で集計することを考慮した表の作り方とは思えないので、計算を面倒にしているだけとも思えますが・・・

①、②に関しては元の表から参照する位置を計算できれば、INDEXやOFFSET関数で求めることができます。
行数は、「(=☆☆!G3)」のように直接指定のよ...続きを読む

Qエクセルvba 一つ上の行を指定した回数分コピーする。

教えて下さい。vba初心者です。

A B C D E F G H
7 522 加藤 沖縄 みかん 縄 1 1/5 空欄
8 123 吉田 愛媛 りんご 水 3 2/10 空欄

1️⃣一番最後に入力した行をすぐ下にコピーしたい。(ここでは7行目…入力して行くと行は増えます。)
2️⃣指定回数はE列。

この列ではE列が3回になりますので、
コピーしたい範囲はA〜G列を、すぐ下の8行〜9行までの2回分コピーしたいです。

完成希望例
A B C D E F G H
7 522 加藤 沖縄 みかん 縄 1 1/5 空欄
8 123 吉田 愛媛 りんご 水 3 2/10 空欄
9 123 吉田 愛媛 りんご 水 3 2/10 空欄
10 123 吉田 愛媛 りんご 水 3 2/10 空欄

にしたいです。

教えて下さい。vba初心者です。

A B C D E F G H
7 522 加藤 沖縄 みかん 縄 1 1/5 空欄
8 123 吉田 愛媛 りんご 水 3 2/10 空欄

1️⃣一番最後に入力した行をすぐ下にコピーしたい。(ここでは7行目…入力して行くと行は増えます。)
2️⃣指定回数はE列。

この列ではE列が3回になりますので、
コピーしたい範囲はA〜G列を、すぐ下の8行〜9行までの2回分コピーしたいです。

完成希望例
A B C D E F G H
...続きを読む

Aベストアンサー

前の絵のリスト範囲の所、名前定義も使えますよ。
というか、数式を入れるところの右のボタンみたいのを
押すと、入力する代わりにマウスで別シートでも
ドラッグで範囲指定できるから、範囲指定とぴったり
合致すれば、勝手に名前に変換されるみたいだった。
名前で指定の時、先頭に=はつけないみたいです。

ボタンはどっちをお使いですか?
呼び出している subの名前で判ります。
Private Sub CommandButton1_Click()
と決まっているのがActiveXの方です。

QExcelのセルの書式設定で質問です。

いつもExcelで悩んだ時にお世話になっています。
今回はセルの書式設定で助けていただきたいです。
前回ご教授いただき、1商品の価格に対して60万行あるデータベースから該当するJANコードを抜きだし一つのセルに改行して納めることができました。
それで作成されたものが添付画像のようなもので、セル内で改行して価格と13桁のJANコード(1価格に1~20くらい)があります。
このようなセルが何千とあります。
すると桁区切りに設定していた価格の,がなくなりました。
設定し直しても変わりません。
ググってユーザー定義から Ctrl+J でセル内の各行に定義を設定するという方法を知りました。
手探りで1行目の価格に#,##を、残りのJANコード行に標準/Gを設定してみましたが出来ません。
試しにJANコード部を#############にしてみましたが桁区切り点は付きません。
今は一つ一つクリックして手動で付けています。
どのようなユーザー定義を設定すれば可能でしょうか?
またJANコード数は価格(商品)によって違います。
最大数のユーザー定義を設定して貼り付ければすべてのセルに設定できるでしょうか?
例えば20行分の書式設定をしたものを1行しかコードがないセルに貼り付けても問題ないでしょうか?
ご教授お願いします。

いつもExcelで悩んだ時にお世話になっています。
今回はセルの書式設定で助けていただきたいです。
前回ご教授いただき、1商品の価格に対して60万行あるデータベースから該当するJANコードを抜きだし一つのセルに改行して納めることができました。
それで作成されたものが添付画像のようなもので、セル内で改行して価格と13桁のJANコード(1価格に1~20くらい)があります。
このようなセルが何千とあります。
すると桁区切りに設定していた価格の,がなくなりました。
設定し直しても変わりません。
ググっ...続きを読む

Aベストアンサー

前回の質問を見ていないので,どの様にして1つのセルに改行して数値(属性としては文字)を入れたか分かりませんが,おそらく書式設定ではなく,データを入れる部分を直さないといけないと思います.多分,
=A1&CHAR(10)&A2
みたいな関数で折り返し表示しているのだと思いますが,これを以下の関数にするとカンマが付きます.
=TEXT(A1,"#,###")&CHAR(10)&TEXT(A2,"#,###")


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング

おすすめ情報