excel中,如何实现从一个表中检索数据,并排列到另一个表中。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了excel中,如何实现从一个表中检索数据,并排列到另一个表中。相关的知识,希望对你有一定的参考价值。

如图:
表1:是基础数据信息录入表,A、B列是年度和月份,H列是我要检索的信息。
表2:表头月份可以选择;
实现功能:当我在表2的月份中,选择相应的月份时,下面的B、C、D、(EF)、G列的数据,从表1读取,按项目逐项列出,且只读取表1H列中是“资金计划批复”的项目。

参考技术A   可以在表1隐藏列里,录入编号(可以用公式),表2用vlookup()查数据,如果行数不是太多,可以用数组公式。可以追问。追问

大侠,能详细点不?

追答

传样本文件,好写公式

参考技术B 用函数就行吧

Objective-C - Firebase 从数据库中检索数据并填充到表中

【中文标题】Objective-C - Firebase 从数据库中检索数据并填充到表中【英文标题】:Objective-C - Firebase retrieving data from database and populate in table 【发布时间】:2016-08-01 05:22:55 【问题描述】:

Database structure

我有一个 Firebase 数据库设置(请参考图片)。

我有一个“FeedViewController”来显示数据库中每个帖子的内容。用户可以发布一个或多个帖子。

从 Firebase 快照中检索这些帖子并将它们存储到字典中时,我发现在 Firebase 的 observeEventType 函数之外无法访问该字典的值。

我的想法是检索这些键值对,将它们存储到 NSObject 自定义类对象(Post *post)中,并使用该对象为我的“FeedViewController”加载表格视图。在 observeEventType 函数内部,我可以访问对象的值,但在外部,我不能。结果,我不知道如何使用这些值来填充我的 FeedViewController 中的表格视图。我知道这个 observeEventType 函数是一个异步回调,但我不知道如何访问对象的值并填充我的表。我不知道 dispatch_async(dispatch_get_main_queue() 函数在这里做什么。任何帮助将不胜感激。谢谢!

FeedViewController.m

#import "FeedViewController.h"
#import "Post.h"
#import "BackgroundLayer.h"
#import "SimpleTableCell.h"
#import "FBSDKCoreKit/FBSDKCoreKit.h"
#import "FBSDKLoginKit/FBSDKLoginKit.h"
#import "FBSDKCoreKit/FBSDKGraphRequest.h"
@import Firebase;
@import FirebaseAuth;
@import FirebaseStorage;
@import FirebaseDatabase;

@interface FeedViewController()

@property (strong, nonatomic) Post *post;

@end

@implementation FeedViewController

-(void) viewDidLoad 

[super viewDidLoad];

_ref = [[FIRDatabase database] reference];

self.post = [[Post alloc] init];

/*

_idArr = [[NSMutableArray alloc] init];


_postDict = [[NSMutableDictionary alloc] init];
_idDict = [[NSMutableDictionary alloc] init];
_postID = [[NSMutableArray alloc] init];

_userName = [[NSMutableArray alloc] init];
_placeName = [[NSMutableArray alloc] init];
_addressLine1 = [[NSMutableArray alloc] init];
_addressLine2 = [[NSMutableArray alloc] init];
_ratings = [[NSMutableArray alloc] init];
_desc = [[NSMutableArray alloc] init];
_userEmail = [[NSMutableArray alloc] init];
_userIDArray = [[NSMutableArray alloc] init];
 */
[self fetchData];

 NSLog(@"Emails: %@", _post.userID);




-(void) viewWillAppear:(BOOL)animated 

[super viewWillAppear:animated];

CAGradientLayer *bgLayer = [BackgroundLayer blueGradient];
bgLayer.frame = self.view.bounds;
[self.view.layer insertSublayer:bgLayer atIndex:0];

FIRUser *user = [FIRAuth auth].currentUser;

if (user != nil)

    //fbFirstName.text = user.displayName;
    //fbEmail.text = user.email;
    NSURL *photoUrl = user.photoURL;
    NSString *userID = user.uid;
    //NSString *uploadPath = [userID stringByAppendingString:@"/profile_pic.jpg"];
    //NSData *data = [NSData dataWithContentsOfURL:photoUrl];
    //ProfilePic.image = [UIImage imageWithData:data];

    FIRStorage *storage = [FIRStorage storage];
    FIRStorageReference *storageRef = [storage referenceForURL:@"gs://foodsteps-cee33.appspot.com"];

    NSString *access_token = [[NSUserDefaults standardUserDefaults] objectForKey:@"fb_token"];

    FBSDKGraphRequest *friendList = [[FBSDKGraphRequest alloc]
                                  initWithGraphPath:@"me?fields=friends"
                                parameters:nil
                                  tokenString: access_token
                                  version:nil
                                  HTTPMethod:@"GET"];

    [friendList startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection,
                                          id result,
                                          NSError *error) 

        if(error == nil)
        
            //NSLog(@"%@", result);
            NSDictionary *dictionary = (NSDictionary *)result;
            NSDictionary *dict = [dictionary objectForKey:@"friends"];

            _idArray = [[NSMutableArray alloc] init];

            for(int i = 0; i < [[dict objectForKey:@"data"] count]; i++) 

                [_idArray addObject:[[[dict objectForKey:@"data"] objectAtIndex:i] valueForKey:@"id"]];
            

            //NSLog(@"%@", idArray);
        

        else 
            NSLog(@"%@",error);
        
    ];





-(void) fetchData 

_refHandle = [[_ref child:@"users"]     observeEventType:FIRDataEventTypeValue
                                           withBlock:^(FIRDataSnapshot * _Nonnull snapshot)
              
                  NSDictionary *postDict = snapshot.value;
                  NSLog(@"%@", postDict);

                  for( NSString *aKey in [postDict allKeys] )
                  
                      // do something like a log:
                      _post.userID = aKey;
                  

                  //_post.
                  //[_post setValuesForKeysWithDictionary:postDict];
                  [self.tableView reloadData];

            ];

NSLog(@"Emails: %@", _post.userID);

dispatch_async(dispatch_get_main_queue(), ^

[self.tableView reloadData];

);


-(void) viewWillDisappear:(BOOL)animated

    [super viewWillDisappear:animated];
    [[_ref child:@"users"] removeObserverWithHandle:_refHandle];


@end

Post.m

#import "Post.h"

@implementation Post


- (instancetype)init 

return [self initWithUid:@""
               andPostid:@""
             andUsername:@""
                 andDesc:@""
              andRatings:@""
            andPlacename:@""
         andAddressLine1:@""
         andAddressLine2:@""
                andEmail:@""];


- (instancetype)initWithUid:(NSString *)userID
            andPostid:(NSString *)postID 
andUsername: (NSString *)userName
andDesc:(NSString *)desc
andRatings:(NSString *)ratings
andPlacename: (NSString *)placeName
andAddressLine1: (NSString *)addressLine1
andAddressLine2: (NSString *)addressLine2
andEmail: (NSString *)userEmail 

self = [super init];
if(self) 
    self.userID = userID;
    self.postID = postID;
    self.userName = userName;
    self.desc = desc;
    self.ratings = ratings;
    self.placeName = placeName;
    self.addressLine1 = addressLine1;
    self.addressLine2 = addressLine2;
    self.userEmail = userEmail;


return self;


@end

【问题讨论】:

【参考方案1】:

你的方法是我最初尝试做的。但是我在 cellforrowatindexpath 中访问它时遇到了问题。对我有用的是。

- (void)configureDatabase :(NSUInteger)postsAmount

_ref = [[FIRDatabase database] reference];
// Listen for new messages in the Firebase database
_refHandle = [[[[_ref child:@"posts"]queryOrderedByKey] queryLimitedToLast:postsAmount]observeEventType:FIRDataEventTypeChildAdded withBlock:^(FIRDataSnapshot *snapshot) 

        [_posts insertObject:snapshot atIndex:0];
   ];

然后在viewdid出现

        [self configureDatabase:_numberOfPosts];

最后

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath


FIRDataSnapshot *postsSnapshot = _posts[indexPath.section];

NSDictionary *post = postsSnapshot.value;
//use key values to create your views.

还包括

@property (strong, nonatomic) NSMutableArray<FIRDataSnapshot *> *posts;

它的作用是在 firebase 中查询您的值并接收快照。然后将这些快照放在您的 _posts 数组中,然后您可以通过其他方法访问它们。

【讨论】:

以上是关于excel中,如何实现从一个表中检索数据,并排列到另一个表中。的主要内容,如果未能解决你的问题,请参考以下文章

如何将EXCEL中二个工作表的内容引用并合并到一个工作表中?

如何从另一个表中检索并再次将其输入到 laravel 中的另一个表中?

使用 Excel VBA 从 aspx 页面表中检索数据

从 redshift 表中检索数据并使用 SNS 主题发送

如何从 postgreSQL 表中检索随机数据行?

需要从 CSV 文件中检索数据